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,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 | { |