Commit 351a0d1482c53fbc84d96b20b898d9ffb092cfff
1 parent
83e47afa
Exists in
master
and in
3 other branches
Adding background tasks support.
Showing
9 changed files
with
98 additions
and
40 deletions
Show diff stats
src/include/lib3270.h
| @@ -809,12 +809,12 @@ | @@ -809,12 +809,12 @@ | ||
| 809 | LIB3270_EXPORT void lib3270_update_poll_fd(H3270 *session, int fd, LIB3270_IO_FLAG flag); | 809 | LIB3270_EXPORT void lib3270_update_poll_fd(H3270 *session, int fd, LIB3270_IO_FLAG flag); |
| 810 | 810 | ||
| 811 | /** | 811 | /** |
| 812 | - * @brief Callback table | 812 | + * @brief I/O Controller. |
| 813 | * | 813 | * |
| 814 | - * Structure with GUI unblocking I/O calls, used to replace the lib3270´s internal ones. | 814 | + * GUI unblocking I/O calls, used to replace the lib3270´s internal ones. |
| 815 | * | 815 | * |
| 816 | */ | 816 | */ |
| 817 | - struct lib3270_callbacks | 817 | + typedef struct lib3270_io_controller |
| 818 | { | 818 | { |
| 819 | unsigned short sz; | 819 | unsigned short sz; |
| 820 | 820 | ||
| @@ -827,8 +827,9 @@ | @@ -827,8 +827,9 @@ | ||
| 827 | int (*Wait)(H3270 *hSession, int seconds); | 827 | int (*Wait)(H3270 *hSession, int seconds); |
| 828 | int (*event_dispatcher)(H3270 *session, int wait); | 828 | int (*event_dispatcher)(H3270 *session, int wait); |
| 829 | void (*ring_bell)(H3270 *session); | 829 | void (*ring_bell)(H3270 *session); |
| 830 | + int (*run_task)(int(*callback)(H3270 *, void *), H3270 *session, void *parm); | ||
| 830 | 831 | ||
| 831 | - }; | 832 | + } LIB3270_IO_CONTROLLER; |
| 832 | 833 | ||
| 833 | /** | 834 | /** |
| 834 | * Register application Handlers. | 835 | * Register application Handlers. |
| @@ -838,7 +839,7 @@ | @@ -838,7 +839,7 @@ | ||
| 838 | * @return 0 if ok, error code if not. | 839 | * @return 0 if ok, error code if not. |
| 839 | * | 840 | * |
| 840 | */ | 841 | */ |
| 841 | - LIB3270_EXPORT int lib3270_register_handlers(const struct lib3270_callbacks *cbk); | 842 | + LIB3270_EXPORT int lib3270_register_io_controller(const LIB3270_IO_CONTROLLER *cbk); |
| 842 | 843 | ||
| 843 | /** | 844 | /** |
| 844 | * Register time handlers. | 845 | * Register time handlers. |
| @@ -1151,8 +1152,7 @@ | @@ -1151,8 +1152,7 @@ | ||
| 1151 | * @param Delay in milliseconds. | 1152 | * @param Delay in milliseconds. |
| 1152 | * | 1153 | * |
| 1153 | */ | 1154 | */ |
| 1154 | - LIB3270_EXPORT void lib3270_set_unlock_delay(H3270 *session, int delay); | ||
| 1155 | - | 1155 | + LIB3270_EXPORT int lib3270_set_unlock_delay(H3270 *session, int delay); |
| 1156 | LIB3270_EXPORT int lib3270_get_unlock_delay(H3270 *session); | 1156 | LIB3270_EXPORT int lib3270_get_unlock_delay(H3270 *session); |
| 1157 | 1157 | ||
| 1158 | /** | 1158 | /** |
| @@ -1239,6 +1239,19 @@ | @@ -1239,6 +1239,19 @@ | ||
| 1239 | LIB3270_EXPORT LIB3270_POINTER lib3270_get_pointer(H3270 *hSession, int baddr); | 1239 | LIB3270_EXPORT LIB3270_POINTER lib3270_get_pointer(H3270 *hSession, int baddr); |
| 1240 | 1240 | ||
| 1241 | /** | 1241 | /** |
| 1242 | + * @brief Run background task. | ||
| 1243 | + * | ||
| 1244 | + * Call task in a separate thread, keep gui main loop running until | ||
| 1245 | + * the function returns. | ||
| 1246 | + * | ||
| 1247 | + * @param hSession TN3270 session. | ||
| 1248 | + * @param callback Function to call. | ||
| 1249 | + * @param parm Parameter to callback function. | ||
| 1250 | + * | ||
| 1251 | + */ | ||
| 1252 | + LIB3270_EXPORT int lib3270_run_task(H3270 *hSession, int(*callback)(H3270 *h, void *), void *parm); | ||
| 1253 | + | ||
| 1254 | + /** | ||
| 1242 | * The host is TSO? | 1255 | * The host is TSO? |
| 1243 | * | 1256 | * |
| 1244 | * @param hSession Session Handle | 1257 | * @param hSession Session Handle |
src/include/lib3270/session.h
| @@ -97,7 +97,7 @@ | @@ -97,7 +97,7 @@ | ||
| 97 | * @return 0 if ok, error code if not. | 97 | * @return 0 if ok, error code if not. |
| 98 | * | 98 | * |
| 99 | */ | 99 | */ |
| 100 | - LIB3270_EXPORT int lib3270_set_session_callbacks(const struct lib3270_callbacks *cbk); | 100 | + LIB3270_EXPORT int lib3270_set_session_io_handler(const LIB3270_IO_CONTROLLER *cbk); |
| 101 | 101 | ||
| 102 | LIB3270_EXPORT int lib3270_getpeername(H3270 *hSession, struct sockaddr *addr, socklen_t *addrlen); | 102 | LIB3270_EXPORT int lib3270_getpeername(H3270 *hSession, struct sockaddr *addr, socklen_t *addrlen); |
| 103 | LIB3270_EXPORT int lib3270_getsockname(H3270 *hSession, struct sockaddr *addr, socklen_t *addrlen); | 103 | LIB3270_EXPORT int lib3270_getsockname(H3270 *hSession, struct sockaddr *addr, socklen_t *addrlen); |
src/lib3270/connect.c
| @@ -79,7 +79,7 @@ | @@ -79,7 +79,7 @@ | ||
| 79 | 79 | ||
| 80 | 80 | ||
| 81 | //static void net_connected(H3270 *hSession) | 81 | //static void net_connected(H3270 *hSession) |
| 82 | -static void net_connected(H3270 *hSession, int fd, LIB3270_IO_FLAG flag, void *dunno) | 82 | +static void net_connected(H3270 *hSession, int fd unused, LIB3270_IO_FLAG flag unused, void *dunno unused) |
| 83 | { | 83 | { |
| 84 | int err; | 84 | int err; |
| 85 | socklen_t len = sizeof(err); | 85 | socklen_t len = sizeof(err); |
| @@ -550,7 +550,7 @@ static void net_connected(H3270 *hSession, int fd, LIB3270_IO_FLAG flag, void *d | @@ -550,7 +550,7 @@ static void net_connected(H3270 *hSession, int fd, LIB3270_IO_FLAG flag, void *d | ||
| 550 | } | 550 | } |
| 551 | 551 | ||
| 552 | lib3270_disconnect(hSession); | 552 | lib3270_disconnect(hSession); |
| 553 | - lib3270_write_log(hSession,"connect", "%s",__FUNCTION__,strerror(ETIMEDOUT)); | 553 | + lib3270_write_log(hSession,"connect", "%s: %s",__FUNCTION__,strerror(ETIMEDOUT)); |
| 554 | return errno = ETIMEDOUT; | 554 | return errno = ETIMEDOUT; |
| 555 | } | 555 | } |
| 556 | 556 |
src/lib3270/ft.c
| @@ -159,7 +159,7 @@ static void set_ft_state(H3270FT *session, LIB3270_FT_STATE state); | @@ -159,7 +159,7 @@ static void set_ft_state(H3270FT *session, LIB3270_FT_STATE state); | ||
| 159 | return 0; | 159 | return 0; |
| 160 | } | 160 | } |
| 161 | 161 | ||
| 162 | - static void def_complete(H3270 *hSession, unsigned long length,double kbytes_sec,const char *msg, void *userdata) | 162 | + static void def_complete(H3270 *hSession, unsigned long length unused, double kbytes_sec unused, const char *msg, void *userdata unused) |
| 163 | { | 163 | { |
| 164 | hSession->ft->cbk.message(hSession,msg,hSession->ft->user_data); | 164 | hSession->ft->cbk.message(hSession,msg,hSession->ft->user_data); |
| 165 | } | 165 | } |
| @@ -169,27 +169,27 @@ static void set_ft_state(H3270FT *session, LIB3270_FT_STATE state); | @@ -169,27 +169,27 @@ static void set_ft_state(H3270FT *session, LIB3270_FT_STATE state); | ||
| 169 | hSession->ft->cbk.complete(hSession,length,kbytes_sec,msg,userdata); | 169 | hSession->ft->cbk.complete(hSession,length,kbytes_sec,msg,userdata); |
| 170 | } | 170 | } |
| 171 | 171 | ||
| 172 | - static void def_message(H3270 *hSession, const char *msg, void *userdata) | 172 | + static void def_message(H3270 *hSession, const char *msg, void *userdata unused) |
| 173 | { | 173 | { |
| 174 | lib3270_write_log(hSession,"ft","%s",msg); | 174 | lib3270_write_log(hSession,"ft","%s",msg); |
| 175 | } | 175 | } |
| 176 | 176 | ||
| 177 | - static void def_update(H3270 *hSession, unsigned long current, unsigned long length, double kbytes_sec, void *userdata) | 177 | + static void def_update(H3270 *hSession unused, unsigned long current unused, unsigned long length unused, double kbytes_sec unused, void *userdata unused) |
| 178 | { | 178 | { |
| 179 | 179 | ||
| 180 | } | 180 | } |
| 181 | 181 | ||
| 182 | - static void def_running(H3270 *hSession, int is_cut, void *userdata) | 182 | + static void def_running(H3270 *hSession unused, int is_cut unused, void *userdata unused) |
| 183 | { | 183 | { |
| 184 | 184 | ||
| 185 | } | 185 | } |
| 186 | 186 | ||
| 187 | - static void def_aborting(H3270 *hSession, void *userdata) | 187 | + static void def_aborting(H3270 *hSession unused, void *userdata unused) |
| 188 | { | 188 | { |
| 189 | 189 | ||
| 190 | } | 190 | } |
| 191 | 191 | ||
| 192 | - static void def_state_changed(H3270 *hSession, LIB3270_FT_STATE state, const char *text, void *userdata) | 192 | + static void def_state_changed(H3270 *hSession unused, LIB3270_FT_STATE state unused, const char *text unused, void *userdata unused) |
| 193 | { | 193 | { |
| 194 | 194 | ||
| 195 | } | 195 | } |
| @@ -662,14 +662,14 @@ void ft_aborting(H3270FT *h) | @@ -662,14 +662,14 @@ void ft_aborting(H3270FT *h) | ||
| 662 | } | 662 | } |
| 663 | 663 | ||
| 664 | /* Process a disconnect abort. */ | 664 | /* Process a disconnect abort. */ |
| 665 | -static void ft_connected(H3270 *hSession, int ignored, void *dunno) | 665 | +static void ft_connected(H3270 *hSession, int ignored unused, void *dunno unused) |
| 666 | { | 666 | { |
| 667 | if (!CONNECTED && lib3270_get_ft_state(hSession) != LIB3270_FT_STATE_NONE) | 667 | if (!CONNECTED && lib3270_get_ft_state(hSession) != LIB3270_FT_STATE_NONE) |
| 668 | ft_failed(get_ft_handle(hSession),_("Host disconnected, transfer cancelled")); | 668 | ft_failed(get_ft_handle(hSession),_("Host disconnected, transfer cancelled")); |
| 669 | } | 669 | } |
| 670 | 670 | ||
| 671 | /* Process an abort from no longer being in 3270 mode. */ | 671 | /* Process an abort from no longer being in 3270 mode. */ |
| 672 | -static void ft_in3270(H3270 *hSession, int ignored, void *dunno) | 672 | +static void ft_in3270(H3270 *hSession, int ignored unused, void *dunno unused) |
| 673 | { | 673 | { |
| 674 | if (!IN_3270 && lib3270_get_ft_state(hSession) != LIB3270_FT_STATE_NONE) | 674 | if (!IN_3270 && lib3270_get_ft_state(hSession) != LIB3270_FT_STATE_NONE) |
| 675 | ft_failed(get_ft_handle(hSession),_("Not in 3270 mode, transfer cancelled")); | 675 | ft_failed(get_ft_handle(hSession),_("Not in 3270 mode, transfer cancelled")); |
src/lib3270/iocalls.c
| @@ -45,15 +45,17 @@ | @@ -45,15 +45,17 @@ | ||
| 45 | /*---[ Standard calls ]-------------------------------------------------------------------------------------*/ | 45 | /*---[ Standard calls ]-------------------------------------------------------------------------------------*/ |
| 46 | 46 | ||
| 47 | // Timeout calls | 47 | // Timeout calls |
| 48 | -static void internal_remove_timeout(H3270 *session, void *timer); | ||
| 49 | -static void * internal_add_timeout(H3270 *session, unsigned long interval_ms, void (*proc)(H3270 *session)); | 48 | + static void internal_remove_timeout(H3270 *session, void *timer); |
| 49 | + static void * internal_add_timeout(H3270 *session, unsigned long interval_ms, void (*proc)(H3270 *session)); | ||
| 50 | 50 | ||
| 51 | -static void * internal_add_poll(H3270 *session, int fd, LIB3270_IO_FLAG flag, void(*proc)(H3270 *, int, LIB3270_IO_FLAG, void *), void *userdata ); | ||
| 52 | -static void internal_remove_poll(H3270 *session, void *id); | 51 | + static void * internal_add_poll(H3270 *session, int fd, LIB3270_IO_FLAG flag, void(*proc)(H3270 *, int, LIB3270_IO_FLAG, void *), void *userdata ); |
| 52 | + static void internal_remove_poll(H3270 *session, void *id); | ||
| 53 | 53 | ||
| 54 | -static int internal_wait(H3270 *session, int seconds); | 54 | + static int internal_wait(H3270 *session, int seconds); |
| 55 | 55 | ||
| 56 | -static void internal_ring_bell(H3270 *session); | 56 | + static void internal_ring_bell(H3270 *session); |
| 57 | + | ||
| 58 | + static int internal_run_task(int(*callback)(H3270 *, void *), H3270 *session, void *parm); | ||
| 57 | 59 | ||
| 58 | /*---[ Active callbacks ]-----------------------------------------------------------------------------------*/ | 60 | /*---[ Active callbacks ]-----------------------------------------------------------------------------------*/ |
| 59 | 61 | ||
| @@ -78,6 +80,9 @@ static void internal_ring_bell(H3270 *session); | @@ -78,6 +80,9 @@ static void internal_ring_bell(H3270 *session); | ||
| 78 | static void (*ring_bell)(H3270 *) | 80 | static void (*ring_bell)(H3270 *) |
| 79 | = internal_ring_bell; | 81 | = internal_ring_bell; |
| 80 | 82 | ||
| 83 | + static int (*run_task)(H3270 *hSession, int(*callback)(H3270 *h, void *), void *parm) | ||
| 84 | + = internal_run_task; | ||
| 85 | + | ||
| 81 | /*---[ Typedefs ]-------------------------------------------------------------------------------------------*/ | 86 | /*---[ Typedefs ]-------------------------------------------------------------------------------------------*/ |
| 82 | 87 | ||
| 83 | #define TN (timeout_t *)NULL | 88 | #define TN (timeout_t *)NULL |
| @@ -205,7 +210,7 @@ static void * internal_add_poll(H3270 *session, int fd, LIB3270_IO_FLAG flag, vo | @@ -205,7 +210,7 @@ static void * internal_add_poll(H3270 *session, int fd, LIB3270_IO_FLAG flag, vo | ||
| 205 | ip->userdata = userdata; | 210 | ip->userdata = userdata; |
| 206 | ip->call = call; | 211 | ip->call = call; |
| 207 | 212 | ||
| 208 | - ip->next = session->inputs; | 213 | + ip->next = (input_t *) session->inputs; |
| 209 | 214 | ||
| 210 | session->inputs = ip; | 215 | session->inputs = ip; |
| 211 | session->inputs_changed = 1; | 216 | session->inputs_changed = 1; |
| @@ -218,7 +223,7 @@ static void internal_remove_poll(H3270 *session, void *id) | @@ -218,7 +223,7 @@ static void internal_remove_poll(H3270 *session, void *id) | ||
| 218 | input_t *ip; | 223 | input_t *ip; |
| 219 | input_t *prev = (input_t *)NULL; | 224 | input_t *prev = (input_t *)NULL; |
| 220 | 225 | ||
| 221 | - for (ip = session->inputs; ip != (input_t *)NULL; ip = ip->next) | 226 | + for (ip = session->inputs; ip != (input_t *) NULL; ip = (input_t *) ip->next) |
| 222 | { | 227 | { |
| 223 | if (ip == (input_t *)id) | 228 | if (ip == (input_t *)id) |
| 224 | break; | 229 | break; |
| @@ -235,7 +240,7 @@ static void internal_remove_poll(H3270 *session, void *id) | @@ -235,7 +240,7 @@ static void internal_remove_poll(H3270 *session, void *id) | ||
| 235 | if (prev != (input_t *)NULL) | 240 | if (prev != (input_t *)NULL) |
| 236 | prev->next = ip->next; | 241 | prev->next = ip->next; |
| 237 | else | 242 | else |
| 238 | - session->inputs = ip->next; | 243 | + session->inputs = (input_t *) ip->next; |
| 239 | 244 | ||
| 240 | lib3270_free(ip); | 245 | lib3270_free(ip); |
| 241 | session->inputs_changed = 1; | 246 | session->inputs_changed = 1; |
| @@ -379,13 +384,10 @@ LIB3270_EXPORT void lib3270_register_fd_handlers(void * (*add)(H3270 *session, i | @@ -379,13 +384,10 @@ LIB3270_EXPORT void lib3270_register_fd_handlers(void * (*add)(H3270 *session, i | ||
| 379 | remove_poll = rm; | 384 | remove_poll = rm; |
| 380 | } | 385 | } |
| 381 | 386 | ||
| 382 | -LIB3270_EXPORT int lib3270_register_handlers(const struct lib3270_callbacks *cbk) | 387 | +LIB3270_EXPORT int lib3270_register_io_controller(const LIB3270_IO_CONTROLLER *cbk) |
| 383 | { | 388 | { |
| 384 | - if(!cbk) | ||
| 385 | - return EINVAL; | ||
| 386 | - | ||
| 387 | - if(cbk->sz != sizeof(struct lib3270_callbacks)) | ||
| 388 | - return EINVAL; | 389 | + if(!cbk || cbk->sz != sizeof(LIB3270_IO_CONTROLLER)) |
| 390 | + return errno = EINVAL; | ||
| 389 | 391 | ||
| 390 | lib3270_register_time_handlers(cbk->AddTimeOut,cbk->RemoveTimeOut); | 392 | lib3270_register_time_handlers(cbk->AddTimeOut,cbk->RemoveTimeOut); |
| 391 | lib3270_register_fd_handlers(cbk->add_poll,cbk->remove_poll); | 393 | lib3270_register_fd_handlers(cbk->add_poll,cbk->remove_poll); |
| @@ -447,5 +449,35 @@ LIB3270_EXPORT void lib3270_ring_bell(H3270 *session) | @@ -447,5 +449,35 @@ LIB3270_EXPORT void lib3270_ring_bell(H3270 *session) | ||
| 447 | ring_bell(session); | 449 | ring_bell(session); |
| 448 | } | 450 | } |
| 449 | 451 | ||
| 452 | +int internal_run_task(int(*callback)(H3270 *, void *), H3270 *session, void *parm) { | ||
| 453 | + return callback(session,parm); | ||
| 454 | +} | ||
| 455 | + | ||
| 456 | +/** | ||
| 457 | + * @brief Run background task. | ||
| 458 | + * | ||
| 459 | + * Call task in a separate thread, keep gui main loop running until | ||
| 460 | + * the function returns. | ||
| 461 | + * | ||
| 462 | + * @param hSession TN3270 session. | ||
| 463 | + * @param callback Function to call. | ||
| 464 | + * @param parm Parameter to callback function. | ||
| 465 | + * | ||
| 466 | + */ | ||
| 467 | +LIB3270_EXPORT int lib3270_run_task(H3270 *hSession, int(*callback)(H3270 *h, void *), void *parm) | ||
| 468 | +{ | ||
| 469 | + int rc; | ||
| 470 | + | ||
| 471 | + CHECK_SESSION_HANDLE(hSession); | ||
| 472 | + | ||
| 473 | + hSession->cbk.set_timer(hSession,1); | ||
| 474 | + rc = run_task(callback,hSession,parm); | ||
| 475 | + hSession->cbk.set_timer(hSession,0); | ||
| 476 | + | ||
| 477 | + return rc; | ||
| 478 | + | ||
| 479 | +} | ||
| 480 | + | ||
| 481 | + | ||
| 450 | 482 | ||
| 451 | 483 |
src/lib3270/kybd.c
| @@ -2922,13 +2922,15 @@ int kybd_prime(H3270 *hSession) | @@ -2922,13 +2922,15 @@ int kybd_prime(H3270 *hSession) | ||
| 2922 | } | 2922 | } |
| 2923 | #endif /*]*/ | 2923 | #endif /*]*/ |
| 2924 | 2924 | ||
| 2925 | -LIB3270_EXPORT void lib3270_set_unlock_delay(H3270 *session, int delay) | 2925 | +LIB3270_EXPORT int lib3270_set_unlock_delay(H3270 *session, int delay) |
| 2926 | { | 2926 | { |
| 2927 | CHECK_SESSION_HANDLE(session); | 2927 | CHECK_SESSION_HANDLE(session); |
| 2928 | 2928 | ||
| 2929 | trace("%s(%d)",__FUNCTION__,(int) delay); | 2929 | trace("%s(%d)",__FUNCTION__,(int) delay); |
| 2930 | 2930 | ||
| 2931 | session->unlock_delay_ms = (unsigned short) delay; | 2931 | session->unlock_delay_ms = (unsigned short) delay; |
| 2932 | + | ||
| 2933 | + return 0; | ||
| 2932 | } | 2934 | } |
| 2933 | 2935 | ||
| 2934 | LIB3270_EXPORT int lib3270_get_unlock_delay(H3270 *session) | 2936 | LIB3270_EXPORT int lib3270_get_unlock_delay(H3270 *session) |
src/lib3270/log.c
| @@ -35,6 +35,7 @@ | @@ -35,6 +35,7 @@ | ||
| 35 | #include <windows.h> | 35 | #include <windows.h> |
| 36 | #endif // WIN32 | 36 | #endif // WIN32 |
| 37 | 37 | ||
| 38 | +#include "private.h" | ||
| 38 | #include <stdio.h> | 39 | #include <stdio.h> |
| 39 | #include <stdarg.h> | 40 | #include <stdarg.h> |
| 40 | #include <config.h> | 41 | #include <config.h> |
| @@ -80,7 +81,7 @@ | @@ -80,7 +81,7 @@ | ||
| 80 | loghandler(session,module,0,fmt,arg); | 81 | loghandler(session,module,0,fmt,arg); |
| 81 | } | 82 | } |
| 82 | 83 | ||
| 83 | - static void defaultlog(H3270 *session, const char *module, int rc, const char *fmt, va_list arg_ptr) | 84 | + static void defaultlog(H3270 *session unused, const char *module, int rc unused, const char *fmt, va_list arg_ptr) |
| 84 | { | 85 | { |
| 85 | fprintf(stderr,"%s:\t",module); | 86 | fprintf(stderr,"%s:\t",module); |
| 86 | vfprintf(stderr,fmt,arg_ptr); | 87 | vfprintf(stderr,fmt,arg_ptr); |
src/lib3270/properties.c
| @@ -251,6 +251,16 @@ | @@ -251,6 +251,16 @@ | ||
| 251 | return properties; | 251 | return properties; |
| 252 | } | 252 | } |
| 253 | 253 | ||
| 254 | + static const char * get_version(H3270 *hSession unused) | ||
| 255 | + { | ||
| 256 | + return lib3270_get_version(); | ||
| 257 | + } | ||
| 258 | + | ||
| 259 | + static const char * get_revision(H3270 *hSession unused) | ||
| 260 | + { | ||
| 261 | + return lib3270_get_revision(); | ||
| 262 | + } | ||
| 263 | + | ||
| 254 | LIB3270_EXPORT const LIB3270_STRING_PROPERTY * lib3270_get_string_properties_list(void) | 264 | LIB3270_EXPORT const LIB3270_STRING_PROPERTY * lib3270_get_string_properties_list(void) |
| 255 | { | 265 | { |
| 256 | static const LIB3270_STRING_PROPERTY properties[] = { | 266 | static const LIB3270_STRING_PROPERTY properties[] = { |
| @@ -300,14 +310,14 @@ | @@ -300,14 +310,14 @@ | ||
| 300 | { | 310 | { |
| 301 | "version", // Property name. | 311 | "version", // Property name. |
| 302 | N_( "lib3270 version" ), // Property description. | 312 | N_( "lib3270 version" ), // Property description. |
| 303 | - lib3270_get_version, // Get value. | 313 | + get_version, // Get value. |
| 304 | NULL // Set value. | 314 | NULL // Set value. |
| 305 | }, | 315 | }, |
| 306 | 316 | ||
| 307 | { | 317 | { |
| 308 | "revision", // Property name. | 318 | "revision", // Property name. |
| 309 | N_( "lib3270 revision" ), // Property description. | 319 | N_( "lib3270 revision" ), // Property description. |
| 310 | - lib3270_get_revision, // Get value. | 320 | + get_revision, // Get value. |
| 311 | NULL // Set value. | 321 | NULL // Set value. |
| 312 | }, | 322 | }, |
| 313 | 323 | ||
| @@ -360,7 +370,7 @@ int lib3270_get_int_property(H3270 *hSession, const char *name, int seconds) | @@ -360,7 +370,7 @@ int lib3270_get_int_property(H3270 *hSession, const char *name, int seconds) | ||
| 360 | 370 | ||
| 361 | // Check for boolean properties | 371 | // Check for boolean properties |
| 362 | properties = lib3270_get_boolean_properties_list(); | 372 | properties = lib3270_get_boolean_properties_list(); |
| 363 | - for(ix = 0; ix < (sizeof(properties)/sizeof(properties[0])); ix++) | 373 | + for(ix = 0; properties[ix].name; ix++) |
| 364 | { | 374 | { |
| 365 | if(!strcasecmp(name,properties[ix].name)) | 375 | if(!strcasecmp(name,properties[ix].name)) |
| 366 | { | 376 | { |
| @@ -380,7 +390,7 @@ int lib3270_get_int_property(H3270 *hSession, const char *name, int seconds) | @@ -380,7 +390,7 @@ int lib3270_get_int_property(H3270 *hSession, const char *name, int seconds) | ||
| 380 | 390 | ||
| 381 | // Check for int properties | 391 | // Check for int properties |
| 382 | properties = lib3270_get_int_properties_list(); | 392 | properties = lib3270_get_int_properties_list(); |
| 383 | - for(ix = 0; ix < (sizeof(properties)/sizeof(properties[0])); ix++) | 393 | + for(ix = 0; properties[ix].name; ix++) |
| 384 | { | 394 | { |
| 385 | if(!strcasecmp(name,properties[ix].name)) | 395 | if(!strcasecmp(name,properties[ix].name)) |
| 386 | { | 396 | { |
src/lib3270/session.c
| @@ -132,7 +132,7 @@ void lib3270_session_free(H3270 *h) | @@ -132,7 +132,7 @@ void lib3270_session_free(H3270 *h) | ||
| 132 | while(h->inputs) | 132 | while(h->inputs) |
| 133 | { | 133 | { |
| 134 | input_t *ip = h->inputs; | 134 | input_t *ip = h->inputs; |
| 135 | - h->inputs = ip->next; | 135 | + h->inputs = (input_t *) ip->next; |
| 136 | lib3270_free(ip); | 136 | lib3270_free(ip); |
| 137 | } | 137 | } |
| 138 | 138 |