Commit 81a7bb675827ceec48b61c9cca141ea89a1e62d4

Authored by Perry Werneck
1 parent 3cac70b4

Adding "reset callbacks" method for file transfer (usefull for widget

cleanup).
src/include/lib3270/filetransfer.h
@@ -197,6 +197,16 @@ @@ -197,6 +197,16 @@
197 LIB3270_EXPORT struct lib3270_ft_callbacks * lib3270_get_ft_callbacks(H3270 *session, unsigned short sz); 197 LIB3270_EXPORT struct lib3270_ft_callbacks * lib3270_get_ft_callbacks(H3270 *session, unsigned short sz);
198 198
199 /** 199 /**
  200 + * @brief Set all FT callbacks to default valides.
  201 + *
  202 + * @param hSession TN3270 session to reset.
  203 + *
  204 + * @return 0 if hSession has a valid FT session, non zero if not (sets errno).
  205 + *
  206 + */
  207 + LIB3270_EXPORT int lib3270_reset_ft_callbacks(H3270 *hSession);
  208 +
  209 + /**
200 * @brief Translate IND$FILE response. 210 * @brief Translate IND$FILE response.
201 * 211 *
202 * @param msg Message received. 212 * @param msg Message received.
src/lib3270/ft.c
@@ -315,15 +315,6 @@ static void set_ft_state(H3270FT *session, LIB3270_FT_STATE state); @@ -315,15 +315,6 @@ static void set_ft_state(H3270FT *session, LIB3270_FT_STATE state);
315 ftHandle->dft = dft; 315 ftHandle->dft = dft;
316 ftHandle->quadrant = -1; 316 ftHandle->quadrant = -1;
317 317
318 - ftHandle->cbk.complete = def_complete;  
319 - ftHandle->cbk.failed = def_failed;  
320 - ftHandle->cbk.message = def_message;  
321 - ftHandle->cbk.update = def_update;  
322 - ftHandle->cbk.running = def_running;  
323 - ftHandle->cbk.aborting = def_aborting;  
324 - ftHandle->cbk.state_changed = def_state_changed;  
325 -  
326 -  
327 // Setup file transfer charset. 318 // Setup file transfer charset.
328 memcpy(&ftHandle->charset,&session->charset,sizeof(struct lib3270_charset)); 319 memcpy(&ftHandle->charset,&session->charset,sizeof(struct lib3270_charset));
329 320
@@ -343,9 +334,31 @@ static void set_ft_state(H3270FT *session, LIB3270_FT_STATE state); @@ -343,9 +334,31 @@ static void set_ft_state(H3270FT *session, LIB3270_FT_STATE state);
343 334
344 session->ft = ftHandle; 335 session->ft = ftHandle;
345 336
  337 + lib3270_reset_ft_callbacks(session);
  338 +
346 return ftHandle; 339 return ftHandle;
347 } 340 }
348 341
  342 + LIB3270_EXPORT int lib3270_reset_ft_callbacks(H3270 *hSession)
  343 + {
  344 + CHECK_SESSION_HANDLE(hSession);
  345 +
  346 + if(!hSession->ft)
  347 + {
  348 + return errno = EINVAL;
  349 + }
  350 +
  351 + hSession->ft->cbk.complete = def_complete;
  352 + hSession->ft->cbk.failed = def_failed;
  353 + hSession->ft->cbk.message = def_message;
  354 + hSession->ft->cbk.update = def_update;
  355 + hSession->ft->cbk.running = def_running;
  356 + hSession->ft->cbk.aborting = def_aborting;
  357 + hSession->ft->cbk.state_changed = def_state_changed;
  358 +
  359 + return 0;
  360 + }
  361 +
349 LIB3270_EXPORT void lib3270_ft_set_user_data(H3270 *hSession, void *ptr) 362 LIB3270_EXPORT void lib3270_ft_set_user_data(H3270 *hSession, void *ptr)
350 { 363 {
351 H3270FT * ft; 364 H3270FT * ft;
@@ -654,7 +667,6 @@ LIB3270_EXPORT struct lib3270_ft_callbacks * lib3270_get_ft_callbacks(H3270 *ses @@ -654,7 +667,6 @@ LIB3270_EXPORT struct lib3270_ft_callbacks * lib3270_get_ft_callbacks(H3270 *ses
654 667
655 } 668 }
656 669
657 -  
658 // Process a protocol-generated abort. 670 // Process a protocol-generated abort.
659 void ft_aborting(H3270FT *h, const char *reason) 671 void ft_aborting(H3270FT *h, const char *reason)
660 { 672 {