Commit db04ac3f34fcd73fd7f68ea6bd11f9ac20a8aabb

Authored by Perry Werneck
1 parent 35db594a

Updating timer calls.

@@ -46,7 +46,6 @@ @@ -46,7 +46,6 @@
46 <Unit filename="src/include/ansic.h" /> 46 <Unit filename="src/include/ansic.h" />
47 <Unit filename="src/include/api.h" /> 47 <Unit filename="src/include/api.h" />
48 <Unit filename="src/include/aplc.h" /> 48 <Unit filename="src/include/aplc.h" />
49 - <Unit filename="src/include/appres.h" />  
50 <Unit filename="src/include/arpa_telnet.h" /> 49 <Unit filename="src/include/arpa_telnet.h" />
51 <Unit filename="src/include/cg.h" /> 50 <Unit filename="src/include/cg.h" />
52 <Unit filename="src/include/childc.h" /> 51 <Unit filename="src/include/childc.h" />
src/include/appres.h
@@ -1,243 +0,0 @@ @@ -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,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,8 +833,8 @@
833 { 833 {
834 unsigned short sz; 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 void * (*add_poll)(H3270 *session, int fd, LIB3270_IO_FLAG flag, void(*proc)(H3270 *, int, LIB3270_IO_FLAG, void *), void *userdata); 839 void * (*add_poll)(H3270 *session, int fd, LIB3270_IO_FLAG flag, void(*proc)(H3270 *, int, LIB3270_IO_FLAG, void *), void *userdata);
840 void (*remove_poll)(H3270 *session, void *id); 840 void (*remove_poll)(H3270 *session, void *id);
@@ -864,7 +864,7 @@ @@ -864,7 +864,7 @@
864 * @param rm Callback for removing a timeout 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 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)); 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,8 +41,8 @@ LIB3270_INTERNAL void * AddOutput(int, H3270 *session, void (*fn)(H3270 *sessio
41 LIB3270_INTERNAL void * AddExcept(int, H3270 *session, void (*fn)(H3270 *session)); 41 LIB3270_INTERNAL void * AddExcept(int, H3270 *session, void (*fn)(H3270 *session));
42 42
43 LIB3270_INTERNAL void RemoveSource(H3270 *session, void *cookie); 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 LIB3270_INTERNAL const char * KeysymToString(KeySym k); 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,7 +2809,7 @@ delta_msec(struct timeval *t1, struct timeval *t0)
2809 (t1->tv_usec - t0->tv_usec + 500) / 1000; 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 struct timeval t1; 2814 struct timeval t1;
2815 long msec; 2815 long msec;
@@ -2821,8 +2821,9 @@ static void keep_ticking(H3270 *hSession) @@ -2821,8 +2821,9 @@ static void keep_ticking(H3270 *hSession)
2821 msec = delta_msec(&hSession->t_want, &t1); 2821 msec = delta_msec(&hSession->t_want, &t1);
2822 } while (msec <= 0); 2822 } while (msec <= 0);
2823 2823
2824 - hSession->tick_id = AddTimeOut(msec, hSession, keep_ticking);  
2825 status_timing(hSession,&hSession->t_start, &t1); 2824 status_timing(hSession,&hSession->t_start, &t1);
  2825 +
  2826 + return 1;
2826 } 2827 }
2827 2828
2828 void ticking_start(H3270 *hSession, Boolean anyway) 2829 void ticking_start(H3270 *hSession, Boolean anyway)
@@ -2846,10 +2847,10 @@ void ticking_start(H3270 *hSession, Boolean anyway) @@ -2846,10 +2847,10 @@ void ticking_start(H3270 *hSession, Boolean anyway)
2846 status_untiming(hSession); 2847 status_untiming(hSession);
2847 2848
2848 if (hSession->ticking) 2849 if (hSession->ticking)
2849 - RemoveTimeOut(hSession, hSession->tick_id); 2850 + RemoveTimer(hSession, hSession->tick_id);
2850 2851
2851 hSession->ticking = 1; 2852 hSession->ticking = 1;
2852 - hSession->tick_id = AddTimeOut(1000, hSession, keep_ticking); 2853 + hSession->tick_id = AddTimer(1000, hSession, keep_ticking);
2853 hSession->t_want = hSession->t_start; 2854 hSession->t_want = hSession->t_start;
2854 } 2855 }
2855 2856
@@ -2875,7 +2876,7 @@ static void ticking_stop(H3270 *hSession) @@ -2875,7 +2876,7 @@ static void ticking_stop(H3270 *hSession)
2875 2876
2876 if (!hSession->ticking) 2877 if (!hSession->ticking)
2877 return; 2878 return;
2878 - RemoveTimeOut(hSession, hSession->tick_id); 2879 + RemoveTimer(hSession, hSession->tick_id);
2879 hSession->ticking = 0; 2880 hSession->ticking = 0;
2880 status_timing(hSession,&hSession->t_start, &t1); 2881 status_timing(hSession,&hSession->t_start, &t1);
2881 } 2882 }
src/lib3270/host.c
@@ -58,11 +58,12 @@ @@ -58,11 +58,12 @@
58 /** 58 /**
59 * @brief Called from timer to attempt an automatic reconnection. 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 lib3270_write_log(hSession,"3270","Starting auto-reconnect on %s",lib3270_get_url(hSession)); 63 lib3270_write_log(hSession,"3270","Starting auto-reconnect on %s",lib3270_get_url(hSession));
64 hSession->auto_reconnect_inprogress = 0; 64 hSession->auto_reconnect_inprogress = 0;
65 lib3270_connect(hSession,0); 65 lib3270_connect(hSession,0);
  66 + return 0;
66 } 67 }
67 68
68 LIB3270_EXPORT int lib3270_disconnect(H3270 *h) 69 LIB3270_EXPORT int lib3270_disconnect(H3270 *h)
@@ -85,7 +86,7 @@ int host_disconnect(H3270 *hSession, int failed) @@ -85,7 +86,7 @@ int host_disconnect(H3270 *hSession, int failed)
85 { 86 {
86 /* Schedule an automatic reconnection. */ 87 /* Schedule an automatic reconnection. */
87 hSession->auto_reconnect_inprogress = 1; 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,8 +58,8 @@
58 /*---[ Standard calls ]-------------------------------------------------------------------------------------*/ 58 /*---[ Standard calls ]-------------------------------------------------------------------------------------*/
59 59
60 // Timeout calls 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 static void * internal_add_poll(H3270 *session, int fd, LIB3270_IO_FLAG flag, void(*proc)(H3270 *, int, LIB3270_IO_FLAG, void *), void *userdata ); 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 static void internal_remove_poll(H3270 *session, void *id); 65 static void internal_remove_poll(H3270 *session, void *id);
@@ -74,11 +74,11 @@ @@ -74,11 +74,11 @@
74 74
75 /*---[ Active callbacks ]-----------------------------------------------------------------------------------*/ 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 static void * (*add_poll)(H3270 *session, int fd, LIB3270_IO_FLAG flag, void(*proc)(H3270 *, int, LIB3270_IO_FLAG, void *), void *userdata) 83 static void * (*add_poll)(H3270 *session, int fd, LIB3270_IO_FLAG flag, void(*proc)(H3270 *, int, LIB3270_IO_FLAG, void *), void *userdata)
84 = internal_add_poll; 84 = internal_add_poll;
@@ -124,7 +124,7 @@ static void ms_ts(unsigned long long *u) @@ -124,7 +124,7 @@ static void ms_ts(unsigned long long *u)
124 } 124 }
125 #endif 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 timeout_t *t_new; 129 timeout_t *t_new;
130 timeout_t *t; 130 timeout_t *t;
@@ -184,12 +184,12 @@ static void * internal_add_timeout(H3270 *session, unsigned long interval_ms, vo @@ -184,12 +184,12 @@ static void * internal_add_timeout(H3270 *session, unsigned long interval_ms, vo
184 prev->next = t_new; 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 return t_new; 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 timeout_t *st = (timeout_t *)timer; 194 timeout_t *st = (timeout_t *)timer;
195 timeout_t *t; 195 timeout_t *t;
@@ -354,22 +354,21 @@ static void internal_ring_bell(H3270 *session unused) @@ -354,22 +354,21 @@ static void internal_ring_bell(H3270 *session unused)
354 354
355 /* External entry points */ 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 void *timer; 359 void *timer;
360 CHECK_SESSION_HANDLE(session); 360 CHECK_SESSION_HANDLE(session);
361 - timer = add_timeout(session,interval_ms,proc); 361 + timer = add_timer(session,interval_ms,proc);
362 trace("Timeout %p created with %ld ms",timer,interval_ms); 362 trace("Timeout %p created with %ld ms",timer,interval_ms);
363 return timer; 363 return timer;
364 } 364 }
365 365
366 -void RemoveTimeOut(H3270 *session, void * timer) 366 +void RemoveTimer(H3270 *session, void * timer)
367 { 367 {
368 if(!timer) 368 if(!timer)
369 return; 369 return;
370 -  
371 trace("Removing timeout %p",timer); 370 trace("Removing timeout %p",timer);
372 - return remove_timeout(session, timer); 371 + return remove_timer(session, timer);
373 } 372 }
374 373
375 void x_except_on(H3270 *h) 374 void x_except_on(H3270 *h)
@@ -410,13 +409,13 @@ void remove_input_calls(H3270 *session) @@ -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 if(add) 414 if(add)
416 - add_timeout = add; 415 + add_timer = add;
417 416
418 if(rm) 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,7 +432,7 @@ LIB3270_EXPORT int lib3270_register_io_controller(const LIB3270_IO_CONTROLLER *c
433 if(!cbk || cbk->sz != sizeof(LIB3270_IO_CONTROLLER)) 432 if(!cbk || cbk->sz != sizeof(LIB3270_IO_CONTROLLER))
434 return errno = EINVAL; 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 lib3270_register_fd_handlers(cbk->add_poll,cbk->remove_poll); 436 lib3270_register_fd_handlers(cbk->add_poll,cbk->remove_poll);
438 437
439 if(cbk->Wait) 438 if(cbk->Wait)
src/lib3270/kybd.c
@@ -405,7 +405,7 @@ void kybd_inhibit(H3270 *session, Boolean inhibit) @@ -405,7 +405,7 @@ void kybd_inhibit(H3270 *session, Boolean inhibit)
405 void kybd_connect(H3270 *session, int connected, void *dunno unused) 405 void kybd_connect(H3270 *session, int connected, void *dunno unused)
406 { 406 {
407 if (session->kybdlock & KL_DEFERRED_UNLOCK) 407 if (session->kybdlock & KL_DEFERRED_UNLOCK)
408 - RemoveTimeOut(session, session->unlock_id); 408 + RemoveTimer(session, session->unlock_id);
409 409
410 lib3270_kybdlock_clear(session, -1); 410 lib3270_kybdlock_clear(session, -1);
411 411
@@ -427,7 +427,7 @@ void kybd_connect(H3270 *session, int connected, void *dunno unused) @@ -427,7 +427,7 @@ void kybd_connect(H3270 *session, int connected, void *dunno unused)
427 void kybd_in3270(H3270 *hSession, int in3270 unused, void *dunno unused) 427 void kybd_in3270(H3270 *hSession, int in3270 unused, void *dunno unused)
428 { 428 {
429 if (hSession->kybdlock & KL_DEFERRED_UNLOCK) 429 if (hSession->kybdlock & KL_DEFERRED_UNLOCK)
430 - RemoveTimeOut(hSession, hSession->unlock_id); 430 + RemoveTimer(hSession, hSession->unlock_id);
431 431
432 lib3270_kybdlock_clear(hSession,~KL_AWAITING_FIRST); 432 lib3270_kybdlock_clear(hSession,~KL_AWAITING_FIRST);
433 433
@@ -1111,13 +1111,13 @@ LIB3270_EXPORT int lib3270_previousfield(H3270 *hSession) @@ -1111,13 +1111,13 @@ LIB3270_EXPORT int lib3270_previousfield(H3270 *hSession)
1111 * Deferred keyboard unlock. 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 lib3270_kybdlock_clear(hSession,KL_DEFERRED_UNLOCK); 1116 lib3270_kybdlock_clear(hSession,KL_DEFERRED_UNLOCK);
1118 status_reset(hSession); 1117 status_reset(hSession);
1119 if(CONNECTED) 1118 if(CONNECTED)
1120 ps_process(hSession); 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,7 +1152,7 @@ void do_reset(H3270 *hSession, Boolean explicit)
1152 * keyboard now, or want to defer further into the future. 1152 * keyboard now, or want to defer further into the future.
1153 */ 1153 */
1154 if (hSession->kybdlock & KL_DEFERRED_UNLOCK) 1154 if (hSession->kybdlock & KL_DEFERRED_UNLOCK)
1155 - RemoveTimeOut(hSession, hSession->unlock_id); 1155 + RemoveTimer(hSession, hSession->unlock_id);
1156 1156
1157 /* 1157 /*
1158 * If explicit (from the keyboard), unlock the keyboard now. 1158 * If explicit (from the keyboard), unlock the keyboard now.
@@ -1169,7 +1169,7 @@ void do_reset(H3270 *hSession, Boolean explicit) @@ -1169,7 +1169,7 @@ void do_reset(H3270 *hSession, Boolean explicit)
1169 1169
1170 if(hSession->unlock_delay_ms) 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 else 1174 else
1175 { 1175 {
src/lib3270/private.h
@@ -265,7 +265,7 @@ typedef struct timeout @@ -265,7 +265,7 @@ typedef struct timeout
265 struct timeval tv; 265 struct timeval tv;
266 #endif /*]*/ 266 #endif /*]*/
267 267
268 - void (*proc)(H3270 *session); 268 + int (*proc)(H3270 *session);
269 269
270 H3270 *session; 270 H3270 *session;
271 271
@@ -301,8 +301,6 @@ struct _h3270 @@ -301,8 +301,6 @@ struct _h3270
301 { 301 {
302 struct lib3270_session_callbacks cbk; // Callback table - Always the first one. 302 struct lib3270_session_callbacks cbk; // Callback table - Always the first one.
303 303
304 -// unsigned short sz; /**< Struct size */  
305 -  
306 // Session info 304 // Session info
307 char id; ///< @brief Session Identifier. 305 char id; ///< @brief Session Identifier.
308 306
@@ -601,6 +599,8 @@ struct _h3270 @@ -601,6 +599,8 @@ struct _h3270
601 void * except; 599 void * except;
602 } xio; 600 } xio;
603 601
  602 + size_t popups; ///< @brief Count open popups.
  603 +
604 #ifdef HAVE_LIBSSL 604 #ifdef HAVE_LIBSSL
605 /// @brief SSL Data. 605 /// @brief SSL Data.
606 struct 606 struct
@@ -647,7 +647,7 @@ LIB3270_INTERNAL int lib3270_default_event_dispatcher(H3270 *hSession, int block @@ -647,7 +647,7 @@ LIB3270_INTERNAL int lib3270_default_event_dispatcher(H3270 *hSession, int block
647 /** 647 /**
648 * @brief Called from timer to attempt an automatic reconnection. 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 #if defined(DEBUG) 652 #if defined(DEBUG)
653 #define CHECK_SESSION_HANDLE(x) check_session_handle(&x,__FUNCTION__); 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,7 +759,9 @@ void Error(H3270 *session, const char *fmt, ...)
759 759
760 va_start(arg_ptr, fmt); 760 va_start(arg_ptr, fmt);
761 761
  762 + session->popups++;
762 session->cbk.popup(session,LIB3270_NOTIFY_ERROR, _( "3270 Error" ),NULL,fmt,arg_ptr); 763 session->cbk.popup(session,LIB3270_NOTIFY_ERROR, _( "3270 Error" ),NULL,fmt,arg_ptr);
  764 + session->popups--;
763 765
764 va_end(arg_ptr); 766 va_end(arg_ptr);
765 767
@@ -774,7 +776,11 @@ void Warning(H3270 *session, const char *fmt, ...) @@ -774,7 +776,11 @@ void Warning(H3270 *session, const char *fmt, ...)
774 trace("%s: title=%s fmt=%s",__FUNCTION__,"3270 Warning",fmt); 776 trace("%s: title=%s fmt=%s",__FUNCTION__,"3270 Warning",fmt);
775 777
776 va_start(arg_ptr, fmt); 778 va_start(arg_ptr, fmt);
  779 +
  780 + session->popups++;
777 session->cbk.popup(session,LIB3270_NOTIFY_WARNING, _( "3270 Warning" ),NULL,fmt,arg_ptr); 781 session->cbk.popup(session,LIB3270_NOTIFY_WARNING, _( "3270 Warning" ),NULL,fmt,arg_ptr);
  782 + session->popups--;
  783 +
778 va_end(arg_ptr); 784 va_end(arg_ptr);
779 785
780 } 786 }
@@ -789,7 +795,11 @@ void popup_an_error(H3270 *session, const char *fmt, ...) @@ -789,7 +795,11 @@ void popup_an_error(H3270 *session, const char *fmt, ...)
789 trace("%s: title=%s fmt=%s",__FUNCTION__,"3270 Error",fmt); 795 trace("%s: title=%s fmt=%s",__FUNCTION__,"3270 Error",fmt);
790 796
791 va_start(args, fmt); 797 va_start(args, fmt);
  798 +
  799 + session->popups++;
792 session->cbk.popup(session,LIB3270_NOTIFY_ERROR,_( "3270 Error" ),NULL,fmt,args); 800 session->cbk.popup(session,LIB3270_NOTIFY_ERROR,_( "3270 Error" ),NULL,fmt,args);
  801 + session->popups--;
  802 +
793 va_end(args); 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,7 +813,11 @@ void popup_system_error(H3270 *session, const char *title, const char *message,
803 trace("%s: title=%s msg=%s",__FUNCTION__,"3270 Error",message); 813 trace("%s: title=%s msg=%s",__FUNCTION__,"3270 Error",message);
804 814
805 va_start(args, fmt); 815 va_start(args, fmt);
  816 +
  817 + session->popups++;
806 session->cbk.popup(session,LIB3270_NOTIFY_ERROR,title ? title : _( "3270 Error" ), message,fmt,args); 818 session->cbk.popup(session,LIB3270_NOTIFY_ERROR,title ? title : _( "3270 Error" ), message,fmt,args);
  819 + session->popups--;
  820 +
807 va_end(args); 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,7 +938,11 @@ LIB3270_EXPORT void lib3270_popup_dialog(H3270 *session, LIB3270_NOTIFY id , con
924 LIB3270_EXPORT void lib3270_popup_va(H3270 *session, LIB3270_NOTIFY id , const char *title, const char *message, const char *fmt, va_list args) 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 CHECK_SESSION_HANDLE(session); 940 CHECK_SESSION_HANDLE(session);
  941 +
  942 + session->popups++;
927 session->cbk.popup(session,id,title ? title : _( "3270 Error" ), message,fmt,args); 943 session->cbk.popup(session,id,title ? title : _( "3270 Error" ), message,fmt,args);
  944 + session->popups--;
  945 +
928 } 946 }
929 947
930 LIB3270_EXPORT int lib3270_is_protected(H3270 *h, unsigned int baddr) 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,7 +352,7 @@ static void toggle_reconnect(H3270 *hSession, struct lib3270_toggle *t unused, L
352 /* Schedule an automatic reconnection. */ 352 /* Schedule an automatic reconnection. */
353 lib3270_write_log(hSession,"toggle","Auto-reconnect toggle was activated when offline, reconnecting"); 353 lib3270_write_log(hSession,"toggle","Auto-reconnect toggle was activated when offline, reconnecting");
354 hSession->auto_reconnect_inprogress = 1; 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 }