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 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 210 * @brief Translate IND$FILE response.
201 211 *
202 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 315 ftHandle->dft = dft;
316 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 318 // Setup file transfer charset.
328 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 334  
344 335 session->ft = ftHandle;
345 336  
  337 + lib3270_reset_ft_callbacks(session);
  338 +
346 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 362 LIB3270_EXPORT void lib3270_ft_set_user_data(H3270 *hSession, void *ptr)
350 363 {
351 364 H3270FT * ft;
... ... @@ -654,7 +667,6 @@ LIB3270_EXPORT struct lib3270_ft_callbacks * lib3270_get_ft_callbacks(H3270 *ses
654 667  
655 668 }
656 669  
657   -
658 670 // Process a protocol-generated abort.
659 671 void ft_aborting(H3270FT *h, const char *reason)
660 672 {
... ...