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