Commit 81a7bb675827ceec48b61c9cca141ea89a1e62d4
1 parent
3cac70b4
Exists in
master
and in
3 other branches
Adding "reset callbacks" method for file transfer (usefull for widget
cleanup).
Showing
2 changed files
with
32 additions
and
10 deletions
Show diff stats
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 | { | ... | ... |