Commit db04ac3f34fcd73fd7f68ea6bd11f9ac20a8aabb
1 parent
35db594a
Exists in
master
and in
3 other branches
Updating timer calls.
Showing
12 changed files
with
60 additions
and
318 deletions
Show diff stats
lib3270.cbp
| ... | ... | @@ -46,7 +46,6 @@ |
| 46 | 46 | <Unit filename="src/include/ansic.h" /> |
| 47 | 47 | <Unit filename="src/include/api.h" /> |
| 48 | 48 | <Unit filename="src/include/aplc.h" /> |
| 49 | - <Unit filename="src/include/appres.h" /> | |
| 50 | 49 | <Unit filename="src/include/arpa_telnet.h" /> |
| 51 | 50 | <Unit filename="src/include/cg.h" /> |
| 52 | 51 | <Unit filename="src/include/childc.h" /> | ... | ... |
src/include/appres.h
| ... | ... | @@ -1,243 +0,0 @@ |
| 1 | -/* | |
| 2 | - * Modifications Copyright 1993, 1994, 1995, 1996, 1999, 2000, 2001, 2002, | |
| 3 | - * 2003, 2004, 2005, 2007 by Paul Mattes. | |
| 4 | - * Copyright 1990 by Jeff Sparkes. | |
| 5 | - * Permission to use, copy, modify, and distribute this software and its | |
| 6 | - * documentation for any purpose and without fee is hereby granted, | |
| 7 | - * provided that the above copyright notice appear in all copies and that | |
| 8 | - * both that copyright notice and this permission notice appear in | |
| 9 | - * supporting documentation. | |
| 10 | - * | |
| 11 | - * x3270, c3270, s3270 and tcl3270 are distributed in the hope that they will | |
| 12 | - * be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of | |
| 13 | - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the file LICENSE | |
| 14 | - * for more details. | |
| 15 | - */ | |
| 16 | - | |
| 17 | -/* | |
| 18 | - * appres.h | |
| 19 | - * Application resource definitions for x3270, c3270, s3270 and | |
| 20 | - * tcl3270. | |
| 21 | - */ | |
| 22 | - | |
| 23 | -#include "toggle.h" | |
| 24 | - | |
| 25 | -/* Toggles */ | |
| 26 | - | |
| 27 | -/* | |
| 28 | -struct toggle { | |
| 29 | - char value; // toggle value | |
| 30 | -// char changed; // has the value changed since init | |
| 31 | -// Widget w[2]; // the menu item widgets | |
| 32 | -// const char *label[2]; // labels | |
| 33 | - void (*upcall)(H3270 *, struct toggle *, LIB3270_TOGGLE_TYPE); // change value | |
| 34 | -// void (*callback)(H3270 *, int, LIB3270_TOGGLE_TYPE); | |
| 35 | - | |
| 36 | -}; | |
| 37 | - | |
| 38 | -// #define toggle_toggle(t) { (t)->value = !(t)->value; } | |
| 39 | -*/ | |
| 40 | - | |
| 41 | -#error Deprecated | |
| 42 | - | |
| 43 | -#define toggled(ix) lib3270_get_toggle(NULL,ix) | |
| 44 | - | |
| 45 | -/* Application resources */ | |
| 46 | - | |
| 47 | -typedef struct { | |
| 48 | - /* Basic colors */ | |
| 49 | -// #if defined(X3270_DISPLAY) /*[*/ | |
| 50 | -// Pixel foreground; | |
| 51 | -// Pixel background; | |
| 52 | -// #endif /*]*/ | |
| 53 | - | |
| 54 | - /* Options (not toggles) */ | |
| 55 | -// char mono; | |
| 56 | -// char extended; | |
| 57 | -// char m3279; | |
| 58 | -// char modified_sel; | |
| 59 | -// char once; | |
| 60 | -//#if defined(X3270_DISPLAY) /*[*/ | |
| 61 | -// char visual_bell; | |
| 62 | -// char menubar; | |
| 63 | -// char active_icon; | |
| 64 | -// char label_icon; | |
| 65 | -// char invert_kpshift; | |
| 66 | -// char use_cursor_color; | |
| 67 | -// char allow_resize; | |
| 68 | -// char no_other; | |
| 69 | -// char do_confirms; | |
| 70 | -// #if !defined(G3270) | |
| 71 | -// char reconnect; | |
| 72 | -// #endif | |
| 73 | -// char visual_select; | |
| 74 | -// char suppress_host; | |
| 75 | -// char suppress_font_menu; | |
| 76 | -//# if defined(X3270_KEYPAD) /*[*/ | |
| 77 | -// char keypad_on; | |
| 78 | -//# endif /*]*/ | |
| 79 | -//#endif /*]*/ | |
| 80 | -//#if defined(C3270) /*[*/ | |
| 81 | -// char all_bold_on; | |
| 82 | -// char curses_keypad; | |
| 83 | -// char cbreak_mode; | |
| 84 | -//#endif /*]*/ | |
| 85 | -// char apl_mode; | |
| 86 | -// char scripted; | |
| 87 | -// char numeric_lock; | |
| 88 | -// char secure; | |
| 89 | -// char oerr_lock; | |
| 90 | -// char typeahead; | |
| 91 | -// char debug_tracing; | |
| 92 | -// char disconnect_clear; | |
| 93 | -// char highlight_bold; | |
| 94 | -// char color8; | |
| 95 | -// char bsd_tm; | |
| 96 | -// char unlock_delay; | |
| 97 | -// #if defined(X3270_SCRIPT) /*[*/ | |
| 98 | -// char socket; | |
| 99 | -// #endif /*]*/ | |
| 100 | -// #if defined(C3270) && defined(_WIN32) /*[*/ | |
| 101 | -// char highlight_underline; | |
| 102 | -//#endif /*]*/ | |
| 103 | - | |
| 104 | - /* Named resources */ | |
| 105 | -/* | |
| 106 | -#if defined(X3270_KEYPAD) | |
| 107 | - char *keypad; | |
| 108 | -#endif | |
| 109 | -*/ | |
| 110 | -#if defined(X3270_DISPLAY) || defined(C3270) | |
| 111 | -// char *key_map; | |
| 112 | -// char *compose_map; | |
| 113 | -// char *printer_lu; | |
| 114 | -#endif | |
| 115 | -/* | |
| 116 | -#if defined(X3270_DISPLAY) | |
| 117 | - char *efontname; | |
| 118 | - char *fixed_size; | |
| 119 | - char *debug_font; | |
| 120 | - char *icon_font; | |
| 121 | - char *icon_label_font; | |
| 122 | - int save_lines; | |
| 123 | - char *normal_name; | |
| 124 | - char *select_name; | |
| 125 | - char *bold_name; | |
| 126 | - char *colorbg_name; | |
| 127 | - char *keypadbg_name; | |
| 128 | - char *selbg_name; | |
| 129 | - char *cursor_color_name; | |
| 130 | - char *color_scheme; | |
| 131 | - int bell_volume; | |
| 132 | - char *char_class; | |
| 133 | - int modified_sel_color; | |
| 134 | - int visual_select_color; | |
| 135 | -#if defined(X3270_DBCS) | |
| 136 | - char *input_method; | |
| 137 | - char *preedit_type; | |
| 138 | -#endif | |
| 139 | -#endif | |
| 140 | -*/ | |
| 141 | -//#if defined(X3270_DBCS) | |
| 142 | -// char *local_encoding; | |
| 143 | -//#endif | |
| 144 | - | |
| 145 | -#if defined(C3270) /*[*/ | |
| 146 | -// char *meta_escape; | |
| 147 | -// char *all_bold; | |
| 148 | -// char *altscreen; | |
| 149 | -// char *defscreen; | |
| 150 | -#endif /*]*/ | |
| 151 | -// char *conf_dir; | |
| 152 | - char *model; | |
| 153 | -// char *hostsfile; | |
| 154 | -// char *port; | |
| 155 | -// char *charset; | |
| 156 | -// char *termname; | |
| 157 | -// char *login_macro; | |
| 158 | -// char *macros; | |
| 159 | -#if defined(X3270_TRACE) /*[*/ | |
| 160 | -//#if !defined(_WIN32) | |
| 161 | -// char *trace_dir; | |
| 162 | -//#endif | |
| 163 | -// char *trace_file; | |
| 164 | -// char *screentrace_file; | |
| 165 | -// char *trace_file_size; | |
| 166 | -/* | |
| 167 | -#if defined(X3270_DISPLAY) || defined(WC3270) | |
| 168 | - char trace_monitor; | |
| 169 | -#endif | |
| 170 | -*/ | |
| 171 | - | |
| 172 | -#endif /*]*/ | |
| 173 | -// char *oversize; | |
| 174 | -#if defined(X3270_FT) /*[*/ | |
| 175 | -// char *ft_command; | |
| 176 | -// int dft_buffer_size; | |
| 177 | -#endif /*]*/ | |
| 178 | -// char *connectfile_name; | |
| 179 | -// char *idle_command; | |
| 180 | -// char idle_command_enabled; | |
| 181 | -// char *idle_timeout; | |
| 182 | - | |
| 183 | -/* | |
| 184 | -#if defined(X3270_SCRIPT) | |
| 185 | - char *plugin_command; | |
| 186 | -#endif | |
| 187 | -*/ | |
| 188 | - | |
| 189 | -//#if defined(HAVE_LIBSSL) | |
| 190 | -// char *cert_file; | |
| 191 | -//#endif | |
| 192 | -// char *proxy; | |
| 193 | - | |
| 194 | - /* Toggles */ | |
| 195 | -// struct toggle toggle[N_TOGGLES]; | |
| 196 | -/* | |
| 197 | -#if defined(X3270_DISPLAY) | |
| 198 | - // Simple widget resources | |
| 199 | - Cursor normal_mcursor; | |
| 200 | - Cursor wait_mcursor; | |
| 201 | - Cursor locked_mcursor; | |
| 202 | -#endif | |
| 203 | -*/ | |
| 204 | - | |
| 205 | -/* | |
| 206 | -#if defined(X3270_ANSI) | |
| 207 | - // Line-mode TTY parameters | |
| 208 | - char icrnl; | |
| 209 | - char inlcr; | |
| 210 | - char onlcr; | |
| 211 | - char *erase; | |
| 212 | - char *kill; | |
| 213 | - char *werase; | |
| 214 | - char *rprnt; | |
| 215 | - char *lnext; | |
| 216 | - char *intr; | |
| 217 | - char *quit; | |
| 218 | - char *eof; | |
| 219 | -#endif | |
| 220 | -*/ | |
| 221 | - | |
| 222 | -// #if defined(WC3270) /*[*/ | |
| 223 | -// char *hostname; | |
| 224 | -// #endif | |
| 225 | - | |
| 226 | -/* | |
| 227 | -#if defined(WC3270) | |
| 228 | - char *title; | |
| 229 | -#endif | |
| 230 | -*/ | |
| 231 | - | |
| 232 | -/* | |
| 233 | -#if defined(USE_APP_DEFAULTS) | |
| 234 | - // App-defaults version | |
| 235 | - char *ad_version; | |
| 236 | -#endif | |
| 237 | -*/ | |
| 238 | - | |
| 239 | -} AppRes, *AppResptr; | |
| 240 | - | |
| 241 | -extern AppRes appres; | |
| 242 | - | |
| 243 | -void toggle_rectselect(H3270 *session, struct lib3270_toggle *t, LIB3270_TOGGLE_TYPE tt); |
src/include/gluec.h
| ... | ... | @@ -1,33 +0,0 @@ |
| 1 | -/* | |
| 2 | - * Copyright 2000 by Paul Mattes. | |
| 3 | - * Permission to use, copy, modify, and distribute this software and its | |
| 4 | - * documentation for any purpose and without fee is hereby granted, | |
| 5 | - * provided that the above copyright notice appear in all copies and that | |
| 6 | - * both that copyright notice and this permission notice appear in | |
| 7 | - * supporting documentation. | |
| 8 | - * | |
| 9 | - * c3270, s3270 and tcl3270 are distributed in the hope that they will | |
| 10 | - * be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of | |
| 11 | - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the file LICENSE | |
| 12 | - * for more details. | |
| 13 | - */ | |
| 14 | - | |
| 15 | -/* | |
| 16 | - * gluec.h | |
| 17 | - * Declarations for glue.c and XtGlue.c | |
| 18 | - */ | |
| 19 | - | |
| 20 | -/* glue.c */ | |
| 21 | -// extern int parse_command_line(int argc, const char **argv, const char **cl_hostname); | |
| 22 | -// extern int parse_program_parameters(int argc, const char **argv); | |
| 23 | -// LIB3270_INTERNAL void parse_xrm(const char *arg, const char *where); | |
| 24 | -// LIB3270_INTERNAL void notify_ssl_error(H3270 *session, const char *title, const char *msg, const char *state, const char *alert); | |
| 25 | - | |
| 26 | -/* XtGlue.c */ | |
| 27 | -// LIB3270_INTERNAL void (*Warning_redirect)(const char *); | |
| 28 | - | |
| 29 | -// #if !defined(_WIN32) | |
| 30 | -// LIB3270_INTERNAL int select_setup(int *nfds, fd_set *readfds, fd_set *writefds,fd_set *exceptfds, struct timeval **timeout, struct timeval *timebuf); | |
| 31 | -// #endif | |
| 32 | - | |
| 33 | -#error Deprecated |
src/include/lib3270.h
| ... | ... | @@ -833,8 +833,8 @@ |
| 833 | 833 | { |
| 834 | 834 | unsigned short sz; |
| 835 | 835 | |
| 836 | - void * (*AddTimeOut)(H3270 *session, unsigned long interval_ms, void (*proc)(H3270 *session)); | |
| 837 | - void (*RemoveTimeOut)(H3270 *session, void *timer); | |
| 836 | + void * (*AddTimer)(H3270 *session, unsigned long interval_ms, int (*proc)(H3270 *session)); | |
| 837 | + void (*RemoveTimer)(H3270 *session, void *timer); | |
| 838 | 838 | |
| 839 | 839 | void * (*add_poll)(H3270 *session, int fd, LIB3270_IO_FLAG flag, void(*proc)(H3270 *, int, LIB3270_IO_FLAG, void *), void *userdata); |
| 840 | 840 | void (*remove_poll)(H3270 *session, void *id); |
| ... | ... | @@ -864,7 +864,7 @@ |
| 864 | 864 | * @param rm Callback for removing a timeout |
| 865 | 865 | * |
| 866 | 866 | */ |
| 867 | - LIB3270_EXPORT void lib3270_register_time_handlers(void * (*add)(H3270 *session, unsigned long interval_ms, void (*proc)(H3270 *session)), void (*rm)(H3270 *session, void *timer)); | |
| 867 | + LIB3270_EXPORT void lib3270_register_timer_handlers(void * (*add)(H3270 *session, unsigned long interval_ms, int (*proc)(H3270 *session)), void (*rm)(H3270 *session, void *timer)); | |
| 868 | 868 | |
| 869 | 869 | LIB3270_EXPORT void lib3270_register_fd_handlers(void * (*add)(H3270 *session, int fd, LIB3270_IO_FLAG flag, void(*proc)(H3270 *, int, LIB3270_IO_FLAG, void *), void *userdata), void (*rm)(H3270 *, void *id)); |
| 870 | 870 | ... | ... |
src/include/utilc.h
| ... | ... | @@ -41,8 +41,8 @@ LIB3270_INTERNAL void * AddOutput(int, H3270 *session, void (*fn)(H3270 *sessio |
| 41 | 41 | LIB3270_INTERNAL void * AddExcept(int, H3270 *session, void (*fn)(H3270 *session)); |
| 42 | 42 | |
| 43 | 43 | LIB3270_INTERNAL void RemoveSource(H3270 *session, void *cookie); |
| 44 | -LIB3270_INTERNAL void * AddTimeOut(unsigned long msec, H3270 *session, void (*fn)(H3270 *session)); | |
| 45 | -LIB3270_INTERNAL void RemoveTimeOut(H3270 *session, void *cookie); | |
| 44 | +LIB3270_INTERNAL void * AddTimer(unsigned long msec, H3270 *session, int (*fn)(H3270 *session)); | |
| 45 | +LIB3270_INTERNAL void RemoveTimer(H3270 *session, void *cookie); | |
| 46 | 46 | |
| 47 | 47 | LIB3270_INTERNAL const char * KeysymToString(KeySym k); |
| 48 | 48 | ... | ... |
src/lib3270/ctlr.c
| ... | ... | @@ -2809,7 +2809,7 @@ delta_msec(struct timeval *t1, struct timeval *t0) |
| 2809 | 2809 | (t1->tv_usec - t0->tv_usec + 500) / 1000; |
| 2810 | 2810 | } |
| 2811 | 2811 | |
| 2812 | -static void keep_ticking(H3270 *hSession) | |
| 2812 | +static int keep_ticking(H3270 *hSession) | |
| 2813 | 2813 | { |
| 2814 | 2814 | struct timeval t1; |
| 2815 | 2815 | long msec; |
| ... | ... | @@ -2821,8 +2821,9 @@ static void keep_ticking(H3270 *hSession) |
| 2821 | 2821 | msec = delta_msec(&hSession->t_want, &t1); |
| 2822 | 2822 | } while (msec <= 0); |
| 2823 | 2823 | |
| 2824 | - hSession->tick_id = AddTimeOut(msec, hSession, keep_ticking); | |
| 2825 | 2824 | status_timing(hSession,&hSession->t_start, &t1); |
| 2825 | + | |
| 2826 | + return 1; | |
| 2826 | 2827 | } |
| 2827 | 2828 | |
| 2828 | 2829 | void ticking_start(H3270 *hSession, Boolean anyway) |
| ... | ... | @@ -2846,10 +2847,10 @@ void ticking_start(H3270 *hSession, Boolean anyway) |
| 2846 | 2847 | status_untiming(hSession); |
| 2847 | 2848 | |
| 2848 | 2849 | if (hSession->ticking) |
| 2849 | - RemoveTimeOut(hSession, hSession->tick_id); | |
| 2850 | + RemoveTimer(hSession, hSession->tick_id); | |
| 2850 | 2851 | |
| 2851 | 2852 | hSession->ticking = 1; |
| 2852 | - hSession->tick_id = AddTimeOut(1000, hSession, keep_ticking); | |
| 2853 | + hSession->tick_id = AddTimer(1000, hSession, keep_ticking); | |
| 2853 | 2854 | hSession->t_want = hSession->t_start; |
| 2854 | 2855 | } |
| 2855 | 2856 | |
| ... | ... | @@ -2875,7 +2876,7 @@ static void ticking_stop(H3270 *hSession) |
| 2875 | 2876 | |
| 2876 | 2877 | if (!hSession->ticking) |
| 2877 | 2878 | return; |
| 2878 | - RemoveTimeOut(hSession, hSession->tick_id); | |
| 2879 | + RemoveTimer(hSession, hSession->tick_id); | |
| 2879 | 2880 | hSession->ticking = 0; |
| 2880 | 2881 | status_timing(hSession,&hSession->t_start, &t1); |
| 2881 | 2882 | } | ... | ... |
src/lib3270/host.c
| ... | ... | @@ -58,11 +58,12 @@ |
| 58 | 58 | /** |
| 59 | 59 | * @brief Called from timer to attempt an automatic reconnection. |
| 60 | 60 | */ |
| 61 | -void lib3270_reconnect(H3270 *hSession) | |
| 61 | +int lib3270_reconnect(H3270 *hSession) | |
| 62 | 62 | { |
| 63 | 63 | lib3270_write_log(hSession,"3270","Starting auto-reconnect on %s",lib3270_get_url(hSession)); |
| 64 | 64 | hSession->auto_reconnect_inprogress = 0; |
| 65 | 65 | lib3270_connect(hSession,0); |
| 66 | + return 0; | |
| 66 | 67 | } |
| 67 | 68 | |
| 68 | 69 | LIB3270_EXPORT int lib3270_disconnect(H3270 *h) |
| ... | ... | @@ -85,7 +86,7 @@ int host_disconnect(H3270 *hSession, int failed) |
| 85 | 86 | { |
| 86 | 87 | /* Schedule an automatic reconnection. */ |
| 87 | 88 | hSession->auto_reconnect_inprogress = 1; |
| 88 | - (void) AddTimeOut(failed ? RECONNECT_ERR_MS : RECONNECT_MS, hSession, lib3270_reconnect); | |
| 89 | + (void) AddTimer(failed ? RECONNECT_ERR_MS : RECONNECT_MS, hSession, lib3270_reconnect); | |
| 89 | 90 | } |
| 90 | 91 | |
| 91 | 92 | /* | ... | ... |
src/lib3270/iocalls.c
| ... | ... | @@ -58,8 +58,8 @@ |
| 58 | 58 | /*---[ Standard calls ]-------------------------------------------------------------------------------------*/ |
| 59 | 59 | |
| 60 | 60 | // Timeout calls |
| 61 | - static void internal_remove_timeout(H3270 *session, void *timer); | |
| 62 | - static void * internal_add_timeout(H3270 *session, unsigned long interval_ms, void (*proc)(H3270 *session)); | |
| 61 | + static void internal_remove_timer(H3270 *session, void *timer); | |
| 62 | + static void * internal_add_timer(H3270 *session, unsigned long interval_ms, int (*proc)(H3270 *session)); | |
| 63 | 63 | |
| 64 | 64 | static void * internal_add_poll(H3270 *session, int fd, LIB3270_IO_FLAG flag, void(*proc)(H3270 *, int, LIB3270_IO_FLAG, void *), void *userdata ); |
| 65 | 65 | static void internal_remove_poll(H3270 *session, void *id); |
| ... | ... | @@ -74,11 +74,11 @@ |
| 74 | 74 | |
| 75 | 75 | /*---[ Active callbacks ]-----------------------------------------------------------------------------------*/ |
| 76 | 76 | |
| 77 | - static void * (*add_timeout)(H3270 *session, unsigned long interval_ms, void (*proc)(H3270 *session)) | |
| 78 | - = internal_add_timeout; | |
| 77 | + static void * (*add_timer)(H3270 *session, unsigned long interval_ms, int (*proc)(H3270 *session)) | |
| 78 | + = internal_add_timer; | |
| 79 | 79 | |
| 80 | - static void (*remove_timeout)(H3270 *session, void *timer) | |
| 81 | - = internal_remove_timeout; | |
| 80 | + static void (*remove_timer)(H3270 *session, void *timer) | |
| 81 | + = internal_remove_timer; | |
| 82 | 82 | |
| 83 | 83 | static void * (*add_poll)(H3270 *session, int fd, LIB3270_IO_FLAG flag, void(*proc)(H3270 *, int, LIB3270_IO_FLAG, void *), void *userdata) |
| 84 | 84 | = internal_add_poll; |
| ... | ... | @@ -124,7 +124,7 @@ static void ms_ts(unsigned long long *u) |
| 124 | 124 | } |
| 125 | 125 | #endif |
| 126 | 126 | |
| 127 | -static void * internal_add_timeout(H3270 *session, unsigned long interval_ms, void (*proc)(H3270 *session)) | |
| 127 | +static void * internal_add_timer(H3270 *session, unsigned long interval_ms, int (*proc)(H3270 *session)) | |
| 128 | 128 | { |
| 129 | 129 | timeout_t *t_new; |
| 130 | 130 | timeout_t *t; |
| ... | ... | @@ -184,12 +184,12 @@ static void * internal_add_timeout(H3270 *session, unsigned long interval_ms, vo |
| 184 | 184 | prev->next = t_new; |
| 185 | 185 | } |
| 186 | 186 | |
| 187 | - trace("Timeout %p added with value %ld",t_new,interval_ms); | |
| 187 | + trace("Timer %p added with value %ld",t_new,interval_ms); | |
| 188 | 188 | |
| 189 | 189 | return t_new; |
| 190 | 190 | } |
| 191 | 191 | |
| 192 | -static void internal_remove_timeout(H3270 *session, void * timer) | |
| 192 | +static void internal_remove_timer(H3270 *session, void * timer) | |
| 193 | 193 | { |
| 194 | 194 | timeout_t *st = (timeout_t *)timer; |
| 195 | 195 | timeout_t *t; |
| ... | ... | @@ -354,22 +354,21 @@ static void internal_ring_bell(H3270 *session unused) |
| 354 | 354 | |
| 355 | 355 | /* External entry points */ |
| 356 | 356 | |
| 357 | -void * AddTimeOut(unsigned long interval_ms, H3270 *session, void (*proc)(H3270 *session)) | |
| 357 | +void * AddTimer(unsigned long interval_ms, H3270 *session, int (*proc)(H3270 *session)) | |
| 358 | 358 | { |
| 359 | 359 | void *timer; |
| 360 | 360 | CHECK_SESSION_HANDLE(session); |
| 361 | - timer = add_timeout(session,interval_ms,proc); | |
| 361 | + timer = add_timer(session,interval_ms,proc); | |
| 362 | 362 | trace("Timeout %p created with %ld ms",timer,interval_ms); |
| 363 | 363 | return timer; |
| 364 | 364 | } |
| 365 | 365 | |
| 366 | -void RemoveTimeOut(H3270 *session, void * timer) | |
| 366 | +void RemoveTimer(H3270 *session, void * timer) | |
| 367 | 367 | { |
| 368 | 368 | if(!timer) |
| 369 | 369 | return; |
| 370 | - | |
| 371 | 370 | trace("Removing timeout %p",timer); |
| 372 | - return remove_timeout(session, timer); | |
| 371 | + return remove_timer(session, timer); | |
| 373 | 372 | } |
| 374 | 373 | |
| 375 | 374 | void x_except_on(H3270 *h) |
| ... | ... | @@ -410,13 +409,13 @@ void remove_input_calls(H3270 *session) |
| 410 | 409 | } |
| 411 | 410 | } |
| 412 | 411 | |
| 413 | -LIB3270_EXPORT void lib3270_register_time_handlers(void * (*add)(H3270 *session, unsigned long interval_ms, void (*proc)(H3270 *session)), void (*rm)(H3270 *session, void *timer)) | |
| 412 | +LIB3270_EXPORT void lib3270_register_timer_handlers(void * (*add)(H3270 *session, unsigned long interval_ms, int (*proc)(H3270 *session)), void (*rm)(H3270 *session, void *timer)) | |
| 414 | 413 | { |
| 415 | 414 | if(add) |
| 416 | - add_timeout = add; | |
| 415 | + add_timer = add; | |
| 417 | 416 | |
| 418 | 417 | if(rm) |
| 419 | - remove_timeout = rm; | |
| 418 | + remove_timer = rm; | |
| 420 | 419 | |
| 421 | 420 | } |
| 422 | 421 | |
| ... | ... | @@ -433,7 +432,7 @@ LIB3270_EXPORT int lib3270_register_io_controller(const LIB3270_IO_CONTROLLER *c |
| 433 | 432 | if(!cbk || cbk->sz != sizeof(LIB3270_IO_CONTROLLER)) |
| 434 | 433 | return errno = EINVAL; |
| 435 | 434 | |
| 436 | - lib3270_register_time_handlers(cbk->AddTimeOut,cbk->RemoveTimeOut); | |
| 435 | + lib3270_register_timer_handlers(cbk->AddTimer,cbk->RemoveTimer); | |
| 437 | 436 | lib3270_register_fd_handlers(cbk->add_poll,cbk->remove_poll); |
| 438 | 437 | |
| 439 | 438 | if(cbk->Wait) | ... | ... |
src/lib3270/kybd.c
| ... | ... | @@ -405,7 +405,7 @@ void kybd_inhibit(H3270 *session, Boolean inhibit) |
| 405 | 405 | void kybd_connect(H3270 *session, int connected, void *dunno unused) |
| 406 | 406 | { |
| 407 | 407 | if (session->kybdlock & KL_DEFERRED_UNLOCK) |
| 408 | - RemoveTimeOut(session, session->unlock_id); | |
| 408 | + RemoveTimer(session, session->unlock_id); | |
| 409 | 409 | |
| 410 | 410 | lib3270_kybdlock_clear(session, -1); |
| 411 | 411 | |
| ... | ... | @@ -427,7 +427,7 @@ void kybd_connect(H3270 *session, int connected, void *dunno unused) |
| 427 | 427 | void kybd_in3270(H3270 *hSession, int in3270 unused, void *dunno unused) |
| 428 | 428 | { |
| 429 | 429 | if (hSession->kybdlock & KL_DEFERRED_UNLOCK) |
| 430 | - RemoveTimeOut(hSession, hSession->unlock_id); | |
| 430 | + RemoveTimer(hSession, hSession->unlock_id); | |
| 431 | 431 | |
| 432 | 432 | lib3270_kybdlock_clear(hSession,~KL_AWAITING_FIRST); |
| 433 | 433 | |
| ... | ... | @@ -1111,13 +1111,13 @@ LIB3270_EXPORT int lib3270_previousfield(H3270 *hSession) |
| 1111 | 1111 | * Deferred keyboard unlock. |
| 1112 | 1112 | */ |
| 1113 | 1113 | |
| 1114 | -static void defer_unlock(H3270 *hSession) | |
| 1114 | +static int defer_unlock(H3270 *hSession) | |
| 1115 | 1115 | { |
| 1116 | -// trace("%s",__FUNCTION__); | |
| 1117 | 1116 | lib3270_kybdlock_clear(hSession,KL_DEFERRED_UNLOCK); |
| 1118 | 1117 | status_reset(hSession); |
| 1119 | 1118 | if(CONNECTED) |
| 1120 | 1119 | ps_process(hSession); |
| 1120 | + return 0; | |
| 1121 | 1121 | } |
| 1122 | 1122 | |
| 1123 | 1123 | /** |
| ... | ... | @@ -1152,7 +1152,7 @@ void do_reset(H3270 *hSession, Boolean explicit) |
| 1152 | 1152 | * keyboard now, or want to defer further into the future. |
| 1153 | 1153 | */ |
| 1154 | 1154 | if (hSession->kybdlock & KL_DEFERRED_UNLOCK) |
| 1155 | - RemoveTimeOut(hSession, hSession->unlock_id); | |
| 1155 | + RemoveTimer(hSession, hSession->unlock_id); | |
| 1156 | 1156 | |
| 1157 | 1157 | /* |
| 1158 | 1158 | * If explicit (from the keyboard), unlock the keyboard now. |
| ... | ... | @@ -1169,7 +1169,7 @@ void do_reset(H3270 *hSession, Boolean explicit) |
| 1169 | 1169 | |
| 1170 | 1170 | if(hSession->unlock_delay_ms) |
| 1171 | 1171 | { |
| 1172 | - hSession->unlock_id = AddTimeOut(hSession->unlock_delay_ms, hSession, defer_unlock); | |
| 1172 | + hSession->unlock_id = AddTimer(hSession->unlock_delay_ms, hSession, defer_unlock); | |
| 1173 | 1173 | } |
| 1174 | 1174 | else |
| 1175 | 1175 | { | ... | ... |
src/lib3270/private.h
| ... | ... | @@ -265,7 +265,7 @@ typedef struct timeout |
| 265 | 265 | struct timeval tv; |
| 266 | 266 | #endif /*]*/ |
| 267 | 267 | |
| 268 | - void (*proc)(H3270 *session); | |
| 268 | + int (*proc)(H3270 *session); | |
| 269 | 269 | |
| 270 | 270 | H3270 *session; |
| 271 | 271 | |
| ... | ... | @@ -301,8 +301,6 @@ struct _h3270 |
| 301 | 301 | { |
| 302 | 302 | struct lib3270_session_callbacks cbk; // Callback table - Always the first one. |
| 303 | 303 | |
| 304 | -// unsigned short sz; /**< Struct size */ | |
| 305 | - | |
| 306 | 304 | // Session info |
| 307 | 305 | char id; ///< @brief Session Identifier. |
| 308 | 306 | |
| ... | ... | @@ -601,6 +599,8 @@ struct _h3270 |
| 601 | 599 | void * except; |
| 602 | 600 | } xio; |
| 603 | 601 | |
| 602 | + size_t popups; ///< @brief Count open popups. | |
| 603 | + | |
| 604 | 604 | #ifdef HAVE_LIBSSL |
| 605 | 605 | /// @brief SSL Data. |
| 606 | 606 | struct |
| ... | ... | @@ -647,7 +647,7 @@ LIB3270_INTERNAL int lib3270_default_event_dispatcher(H3270 *hSession, int block |
| 647 | 647 | /** |
| 648 | 648 | * @brief Called from timer to attempt an automatic reconnection. |
| 649 | 649 | */ |
| 650 | -LIB3270_INTERNAL void lib3270_reconnect(H3270 *hSession); | |
| 650 | +LIB3270_INTERNAL int lib3270_reconnect(H3270 *hSession); | |
| 651 | 651 | |
| 652 | 652 | #if defined(DEBUG) |
| 653 | 653 | #define CHECK_SESSION_HANDLE(x) check_session_handle(&x,__FUNCTION__); | ... | ... |
src/lib3270/screen.c
| ... | ... | @@ -759,7 +759,9 @@ void Error(H3270 *session, const char *fmt, ...) |
| 759 | 759 | |
| 760 | 760 | va_start(arg_ptr, fmt); |
| 761 | 761 | |
| 762 | + session->popups++; | |
| 762 | 763 | session->cbk.popup(session,LIB3270_NOTIFY_ERROR, _( "3270 Error" ),NULL,fmt,arg_ptr); |
| 764 | + session->popups--; | |
| 763 | 765 | |
| 764 | 766 | va_end(arg_ptr); |
| 765 | 767 | |
| ... | ... | @@ -774,7 +776,11 @@ void Warning(H3270 *session, const char *fmt, ...) |
| 774 | 776 | trace("%s: title=%s fmt=%s",__FUNCTION__,"3270 Warning",fmt); |
| 775 | 777 | |
| 776 | 778 | va_start(arg_ptr, fmt); |
| 779 | + | |
| 780 | + session->popups++; | |
| 777 | 781 | session->cbk.popup(session,LIB3270_NOTIFY_WARNING, _( "3270 Warning" ),NULL,fmt,arg_ptr); |
| 782 | + session->popups--; | |
| 783 | + | |
| 778 | 784 | va_end(arg_ptr); |
| 779 | 785 | |
| 780 | 786 | } |
| ... | ... | @@ -789,7 +795,11 @@ void popup_an_error(H3270 *session, const char *fmt, ...) |
| 789 | 795 | trace("%s: title=%s fmt=%s",__FUNCTION__,"3270 Error",fmt); |
| 790 | 796 | |
| 791 | 797 | va_start(args, fmt); |
| 798 | + | |
| 799 | + session->popups++; | |
| 792 | 800 | session->cbk.popup(session,LIB3270_NOTIFY_ERROR,_( "3270 Error" ),NULL,fmt,args); |
| 801 | + session->popups--; | |
| 802 | + | |
| 793 | 803 | va_end(args); |
| 794 | 804 | |
| 795 | 805 | } |
| ... | ... | @@ -803,7 +813,11 @@ void popup_system_error(H3270 *session, const char *title, const char *message, |
| 803 | 813 | trace("%s: title=%s msg=%s",__FUNCTION__,"3270 Error",message); |
| 804 | 814 | |
| 805 | 815 | va_start(args, fmt); |
| 816 | + | |
| 817 | + session->popups++; | |
| 806 | 818 | session->cbk.popup(session,LIB3270_NOTIFY_ERROR,title ? title : _( "3270 Error" ), message,fmt,args); |
| 819 | + session->popups--; | |
| 820 | + | |
| 807 | 821 | va_end(args); |
| 808 | 822 | } |
| 809 | 823 | |
| ... | ... | @@ -924,7 +938,11 @@ LIB3270_EXPORT void lib3270_popup_dialog(H3270 *session, LIB3270_NOTIFY id , con |
| 924 | 938 | LIB3270_EXPORT void lib3270_popup_va(H3270 *session, LIB3270_NOTIFY id , const char *title, const char *message, const char *fmt, va_list args) |
| 925 | 939 | { |
| 926 | 940 | CHECK_SESSION_HANDLE(session); |
| 941 | + | |
| 942 | + session->popups++; | |
| 927 | 943 | session->cbk.popup(session,id,title ? title : _( "3270 Error" ), message,fmt,args); |
| 944 | + session->popups--; | |
| 945 | + | |
| 928 | 946 | } |
| 929 | 947 | |
| 930 | 948 | LIB3270_EXPORT int lib3270_is_protected(H3270 *h, unsigned int baddr) | ... | ... |
src/lib3270/toggles.c
| ... | ... | @@ -352,7 +352,7 @@ static void toggle_reconnect(H3270 *hSession, struct lib3270_toggle *t unused, L |
| 352 | 352 | /* Schedule an automatic reconnection. */ |
| 353 | 353 | lib3270_write_log(hSession,"toggle","Auto-reconnect toggle was activated when offline, reconnecting"); |
| 354 | 354 | hSession->auto_reconnect_inprogress = 1; |
| 355 | - (void) AddTimeOut(RECONNECT_MS, hSession, lib3270_reconnect); | |
| 355 | + (void) AddTimer(RECONNECT_MS, hSession, lib3270_reconnect); | |
| 356 | 356 | } |
| 357 | 357 | |
| 358 | 358 | } | ... | ... |