Commit 7c9366e02cde91e44863bfb0f5c6894a13464012

Authored by perry.werneck@gmail.com
1 parent 68350b48
Exists in master

Mais chamadas de toggle receberam a estrutura de sessão como argumento

latest/src/gtk2/screen.c
... ... @@ -78,7 +78,7 @@
78 78 static void warning(const char *fmt, va_list arg);
79 79 static void syserror(const char *title, const char *message, const char *system);
80 80 static int init(void);
81   - static void update_toggle(int ix, int value, int reason, const char *name);
  81 + static void update_toggle(H3270 *session, LIB3270_TOGGLE ix, unsigned char value, LIB3270_TOGGLE_TYPE reason, const char *name);
82 82 static void redraw(void);
83 83 static gchar * convert_monocase(int c, gsize *sz);
84 84 static gchar * convert_regular(int c, gsize *sz);
... ... @@ -126,7 +126,7 @@
126 126 NULL, // void (*set_viewsize)(unsigned short rows, unsigned short cols);
127 127 #endif
128 128  
129   - update_toggle, // void (*toggle_changed)(int ix, int value, int reason, const char *name);
  129 + update_toggle, // void (*toggle_changed)(H3270 *session, LIB3270_TOGGLE ix, unsigned char value, LIB3270_TOGGLE_TYPE reason, const char *name);
130 130 oia_set_timer, // void (*show_timer)(long seconds);
131 131  
132 132 gui_console_window_new, // HCONSOLE (*console_new)(const char *title, const char *label);
... ... @@ -734,7 +734,7 @@
734 734 return 0;
735 735 }
736 736  
737   - void update_toggle(int ix, int value, int reason, const char *name)
  737 + void update_toggle(H3270 *session, LIB3270_TOGGLE ix, unsigned char value, LIB3270_TOGGLE_TYPE reason, const char *name)
738 738 {
739 739 update_3270_toggle_action(ix, value);
740 740 }
... ...
latest/src/include/lib3270.h
... ... @@ -148,7 +148,7 @@
148 148 LIB3270_MESSAGE_DISCONNECTED, /**< Disconnected from host */
149 149 LIB3270_MESSAGE_AWAITING_FIRST,
150 150 LIB3270_MESSAGE_MINUS,
151   - LIB3270_MESSAGE_PROTECTED c
  151 + LIB3270_MESSAGE_PROTECTED,
152 152 LIB3270_MESSAGE_NUMERIC,
153 153 LIB3270_MESSAGE_OVERFLOW,
154 154 LIB3270_MESSAGE_INHIBIT,
... ... @@ -381,6 +381,18 @@
381 381 LIB3270_EXPORT unsigned char lib3270_get_toggle(H3270 *h, LIB3270_TOGGLE ix);
382 382  
383 383 /**
  384 + * Set toggle state.
  385 + *
  386 + * @param h Session handle.
  387 + * @param ix Toggle id.
  388 + * @param value New toggle state (non zero for true).
  389 + *
  390 + * @return 0 if the toggle wasn't changed, non zero if it was changed.
  391 + *
  392 + */
  393 + LIB3270_EXPORT int lib3270_set_toggle(H3270 *h, LIB3270_TOGGLE ix, int value);
  394 +
  395 + /**
384 396 * Check if the active connection is secure.
385 397 *
386 398 * @param h Session handle.
... ...
latest/src/include/lib3270/api.h
... ... @@ -269,6 +269,7 @@
269 269 void (*changed)(H3270 *session, int bstart, int bend);
270 270 void (*update_cursor)(H3270 *session, unsigned short row, unsigned short col);
271 271 void (*update_oia)(H3270 *session, OIA_FLAG id, unsigned char on);
  272 +
272 273 void (*set_timer)(H3270 *session, unsigned char on);
273 274 void (*update_luname)(H3270 *session, const char *name);
274 275 void (*update_status)(H3270 *session, LIB3270_STATUS id);
... ... @@ -511,7 +512,7 @@
511 512 void (*set_viewsize)(H3270 *session, unsigned short rows, unsigned short cols);
512 513  
513 514  
514   - void (*toggle_changed)(int ix, int value, int reason, const char *name);
  515 + void (*toggle_changed)(H3270 *session, LIB3270_TOGGLE ix, unsigned char value, LIB3270_TOGGLE_TYPE reason, const char *name);
515 516 void (*show_timer)(long seconds);
516 517  
517 518 // Console/Trace window
... ...
latest/src/include/lib3270/toggle.h
... ... @@ -69,9 +69,9 @@
69 69  
70 70  
71 71 #define register_3270_toggle_monitor(ix,callback) lib3270_register_tchange(NULL,ix,callback)
72   - // LIB3270_EXPORT void register_3270_toggle_monitor(LIB3270_TOGGLE_ID ix, void (*callback)(int value, LIB3270_TOGGLE_TYPE reason));
73 72  
74   - LIB3270_EXPORT int lib3270_toggle(H3270 *session, LIB3270_TOGGLE_ID ix);
  73 + // LIB3270_EXPORT void register_3270_toggle_monitor(LIB3270_TOGGLE_ID ix, void (*callback)(int value, LIB3270_TOGGLE_TYPE reason));
  74 +// LIB3270_EXPORT int lib3270_toggle(H3270 *session, LIB3270_TOGGLE_ID ix);
75 75  
76 76 LIB3270_EXPORT int set_3270_toggle(LIB3270_TOGGLE_ID ix, int value);
77 77  
... ... @@ -85,7 +85,7 @@
85 85 #define do_toggle(ix) lib3270_toggle(NULL,ix)
86 86  
87 87 #define get_toggle_name(ix) get_3270_toggle_name(ix)
88   - #define set_toggle(ix,value) set_3270_toggle(ix,value)
  88 + #define set_toggle(ix,value) lib3270_set_toggle(NULL,ix,value)
89 89 #define get_toggle_by_name(name) get_3270_toggle_by_name(name)
90 90  
91 91 #endif /* TOGGLE3270_H_INCLUDED */
... ...
latest/src/lib/appres.h
... ... @@ -26,20 +26,17 @@
26 26  
27 27 struct toggle {
28 28 char value; /* toggle value */
29   - char changed; /* has the value changed since init */
  29 +// char changed; /* has the value changed since init */
30 30 // Widget w[2]; /* the menu item widgets */
31 31 // const char *label[2]; /* labels */
32   - void (*upcall)(struct toggle *, LIB3270_TOGGLE_TYPE); /* change value */
33   -
34   -#if defined(LIB3270)
  32 + void (*upcall)(H3270 *, struct toggle *, LIB3270_TOGGLE_TYPE); /* change value */
35 33 void (*callback)(H3270 *, int, LIB3270_TOGGLE_TYPE);
36   -#endif
37 34  
38 35 };
39 36  
40 37 #define toggled(ix) (appres.toggle[ix].value)
41 38 #define toggle_toggle(t) \
42   - { (t)->value = !(t)->value; (t)->changed = True; }
  39 + { (t)->value = !(t)->value; }
43 40  
44 41 /* Application resources */
45 42  
... ...
latest/src/lib/ctlr.c
... ... @@ -2820,19 +2820,20 @@ static void ticking_stop(H3270 *session)
2820 2820 }
2821 2821 }
2822 2822  
2823   -void
2824   -toggle_showTiming(struct toggle *t unused, LIB3270_TOGGLE_TYPE tt unused)
  2823 +/*
  2824 +void toggle_showTiming(H3270 *session, struct toggle *t unused, LIB3270_TOGGLE_TYPE tt unused)
2825 2825 {
2826 2826 if (!toggled(SHOW_TIMING))
2827 2827 status_untiming(&h3270);
2828 2828 }
  2829 +*/
2829 2830  
2830 2831  
2831 2832 /*
2832 2833 * No-op toggle.
2833 2834 */
2834 2835 void
2835   -toggle_nop(struct toggle *t unused, LIB3270_TOGGLE_TYPE tt unused)
  2836 +toggle_nop(H3270 *session, struct toggle *t unused, LIB3270_TOGGLE_TYPE tt unused)
2836 2837 {
2837 2838 }
2838 2839  
... ...
latest/src/lib/ctlrc.h
... ... @@ -62,7 +62,7 @@ LIB3270_INTERNAL void ctlr_set_rows_cols(H3270 *session, int mn, int ovc, int ov
62 62 LIB3270_INTERNAL void ctlr_erase(H3270 *session, int alt);
63 63  
64 64 LIB3270_INTERNAL void ticking_start(H3270 *session, Boolean anyway);
65   -LIB3270_INTERNAL void toggle_nop(struct toggle *t, LIB3270_TOGGLE_TYPE tt);
  65 +LIB3270_INTERNAL void toggle_nop(H3270 *session, struct toggle *t, LIB3270_TOGGLE_TYPE tt);
66 66 LIB3270_INTERNAL void toggle_showTiming(struct toggle *t, LIB3270_TOGGLE_TYPE tt);
67 67  
68 68 enum dbcs_state {
... ...
latest/src/lib/glue.c
... ... @@ -145,7 +145,25 @@ const char *toggle_names[N_TOGGLES] =
145 145  
146 146 void lib3270_session_free(H3270 *h)
147 147 {
  148 + int f;
  149 +
  150 + // Terminate session
  151 + if(lib3270_connected(h))
  152 + lib3270_disconnect(h);
  153 +
148 154 shutdown_toggles(h,appres.toggle);
  155 +
  156 + // Release state change callbacks
  157 + for(f=0;f<N_ST;f++)
  158 + {
  159 + while(h->st_callbacks[f])
  160 + {
  161 + struct lib3270_state_callback *next = h->st_callbacks[f]->next;
  162 + Free(h->st_callbacks[f]);
  163 + h->st_callbacks[f] = next;
  164 + }
  165 + }
  166 +
149 167 }
150 168  
151 169 void lib3270_session_init(H3270 *hSession, const char *model)
... ...
latest/src/lib/screen.c
... ... @@ -793,11 +793,10 @@ void Error(const char *fmt, ...)
793 793  
794 794 }
795 795  
796   -#if defined(LIB3270)
797   -void notify_toggle_changed(int ix, int value, int reason)
  796 +void notify_toggle_changed(H3270 *session, LIB3270_TOGGLE ix, unsigned char value, LIB3270_TOGGLE_TYPE reason)
798 797 {
799 798 if(callbacks && callbacks->toggle_changed)
800   - callbacks->toggle_changed(ix,value,reason,toggle_names[ix]);
  799 + callbacks->toggle_changed(session,ix,value,reason,toggle_names[ix]);
801 800 }
802 801  
803 802 LIB3270_EXPORT void update_toggle_actions(void)
... ... @@ -807,10 +806,9 @@ LIB3270_EXPORT void update_toggle_actions(void)
807 806 if(callbacks && callbacks->toggle_changed)
808 807 {
809 808 for(f=0;f< N_TOGGLES;f++)
810   - callbacks->toggle_changed(f,appres.toggle[f].value,TT_UPDATE,toggle_names[f]);
  809 + callbacks->toggle_changed(&h3270,f,appres.toggle[f].value,TT_UPDATE,toggle_names[f]);
811 810 }
812 811 }
813   -#endif
814 812  
815 813 void Warning(const char *fmt, ...)
816 814 {
... ...
latest/src/lib/screenc.h
... ... @@ -43,7 +43,7 @@ LIB3270_INTERNAL void mcursor_set(H3270 *session,LIB3270_CURSOR m);
43 43 //LIB3270_INTERNAL void mcursor_normal(H3270 *session);
44 44 //LIB3270_INTERNAL void mcursor_waiting(H3270 *session);
45 45  
46   -LIB3270_INTERNAL void notify_toggle_changed(int ix, int value, int reason);
  46 +LIB3270_INTERNAL void notify_toggle_changed(H3270 *session, LIB3270_TOGGLE ix, unsigned char value, LIB3270_TOGGLE_TYPE reason);
47 47 LIB3270_INTERNAL void set_viewsize(H3270 *session, int rows, int cols);
48 48  
49 49 LIB3270_INTERNAL Boolean escaped;
... ...
latest/src/lib/toggles.c
... ... @@ -96,7 +96,7 @@ LIB3270_EXPORT unsigned char lib3270_get_toggle(H3270 *session, LIB3270_TOGGLE i
96 96 /*
97 97 * Generic toggle stuff
98 98 */
99   -static void do_toggle_reason(H3270 *session, LIB3270_TOGGLE_ID ix, LIB3270_TOGGLE_TYPE reason)
  99 +static void do_toggle_reason(H3270 *session, LIB3270_TOGGLE ix, LIB3270_TOGGLE_TYPE reason)
100 100 {
101 101 struct toggle *t = &appres.toggle[ix];
102 102  
... ... @@ -105,32 +105,22 @@ static void do_toggle_reason(H3270 *session, LIB3270_TOGGLE_ID ix, LIB3270_TOGGL
105 105 * menu label(s).
106 106 */
107 107 toggle_toggle(t);
108   - t->upcall(t, reason);
109   -
110   -//#if defined(X3270_MENUS) /*[*/
111   -// menubar_retoggle(t);
112   -//#endif /*]*/
  108 + t->upcall(session, t, reason);
113 109  
114 110 t->callback(session,t->value, (int) reason);
115   - notify_toggle_changed(ix, t->value, reason);
  111 +
  112 + notify_toggle_changed(session, ix, t->value, reason);
116 113  
117 114 }
118 115  
119   -/**
120   - * Set 3270 toggle state.
121   - *
122   - * @param ix Toggle to set.
123   - * @param value New toggle state (non zero for true).
124   - *
125   - * @return 0 if the toggle wasn't changed, non zero if it was changed.
126   - *
127   - */
128   -LIB3270_EXPORT int set_toggle(LIB3270_TOGGLE_ID ix, int value)
  116 +LIB3270_EXPORT int lib3270_set_toggle(H3270 *session, LIB3270_TOGGLE ix, int value)
129 117 {
130 118 Boolean v = ((Boolean) (value != 0)); // Convert int in Boolean
131 119  
132 120 struct toggle *t;
133 121  
  122 + CHECK_SESSION_HANDLE(session);
  123 +
134 124 if(ix < 0 || ix >= LIB3270_TOGGLE_COUNT)
135 125 return 0;
136 126  
... ... @@ -139,7 +129,7 @@ LIB3270_EXPORT int set_toggle(LIB3270_TOGGLE_ID ix, int value)
139 129 if(t->value == v)
140 130 return 0;
141 131  
142   - do_toggle_reason(&h3270, ix, TT_INTERACTIVE);
  132 + do_toggle_reason(session, ix, TT_INTERACTIVE);
143 133  
144 134 return -1;
145 135 }
... ... @@ -181,13 +171,13 @@ void initialize_toggles(H3270 *session, struct toggle *toggle)
181 171  
182 172 #if defined(X3270_TRACE)
183 173 if(toggle[DS_TRACE].value)
184   - toggle[DS_TRACE].upcall(&toggle[DS_TRACE],TT_INITIAL);
  174 + toggle[DS_TRACE].upcall(session, &toggle[DS_TRACE],TT_INITIAL);
185 175  
186 176 if(toggle[EVENT_TRACE].value)
187   - toggle[EVENT_TRACE].upcall(&toggle[EVENT_TRACE],TT_INITIAL);
  177 + toggle[EVENT_TRACE].upcall(session, &toggle[EVENT_TRACE],TT_INITIAL);
188 178  
189 179 if(toggle[SCREEN_TRACE].value)
190   - toggle[SCREEN_TRACE].upcall(&toggle[SCREEN_TRACE],TT_INITIAL);
  180 + toggle[SCREEN_TRACE].upcall(session, &toggle[SCREEN_TRACE],TT_INITIAL);
191 181 #endif
192 182  
193 183 #if defined(DEFAULT_TOGGLE_CURSOR_POS)
... ... @@ -210,20 +200,20 @@ void shutdown_toggles(H3270 *session, struct toggle *toggle)
210 200 if(toggle[DS_TRACE].value)
211 201 {
212 202 toggle[DS_TRACE].value = False;
213   - toggle_dsTrace(&toggle[DS_TRACE], TT_FINAL);
  203 + toggle_dsTrace(session, &toggle[DS_TRACE], TT_FINAL);
214 204 }
215 205  
216 206 if(toggle[EVENT_TRACE].value)
217 207 {
218 208 toggle[EVENT_TRACE].value = False;
219   - toggle_dsTrace(&toggle[EVENT_TRACE], TT_FINAL);
  209 + toggle_dsTrace(session, &toggle[EVENT_TRACE], TT_FINAL);
220 210 }
221 211  
222 212 // Clean up the screen trace file.
223 213 if (toggle[SCREEN_TRACE].value)
224 214 {
225 215 toggle[SCREEN_TRACE].value = False;
226   - toggle_screenTrace(&toggle[SCREEN_TRACE], TT_FINAL);
  216 + toggle_screenTrace(session, &toggle[SCREEN_TRACE], TT_FINAL);
227 217 }
228 218 #endif
229 219 }
... ...
latest/src/lib/trace_ds.c
... ... @@ -622,7 +622,7 @@ static void tracefile_callback(Widget w, XtPointer client_data, XtPointer call_d
622 622  
623 623 /* We're really tracing, turn the flag on. */
624 624 appres.toggle[trace_reason].value = True;
625   - appres.toggle[trace_reason].changed = True;
  625 +// appres.toggle[trace_reason].changed = True;
626 626 menubar_retoggle(&appres.toggle[trace_reason]);
627 627  
628 628 /* Display current status. */
... ... @@ -745,7 +745,7 @@ static void tracefile_off(void)
745 745 stop_tracing();
746 746 }
747 747  
748   -void toggle_dsTrace(struct toggle *t unused, LIB3270_TOGGLE_TYPE tt)
  748 +void toggle_dsTrace(H3270 *session, struct toggle *t unused, LIB3270_TOGGLE_TYPE tt)
749 749 {
750 750 /* If turning on trace and no trace file, open one. */
751 751  
... ... @@ -761,8 +761,7 @@ void toggle_dsTrace(struct toggle *t unused, LIB3270_TOGGLE_TYPE tt)
761 761 (void) gettimeofday(&ds_ts, (struct timezone *)NULL);
762 762 }
763 763  
764   -void
765   -toggle_eventTrace(struct toggle *t unused, LIB3270_TOGGLE_TYPE tt)
  764 +void toggle_eventTrace(H3270 *session, struct toggle *t unused, LIB3270_TOGGLE_TYPE tt)
766 765 {
767 766 /* If turning on event debug, and no trace file, open one. */
768 767  
... ... @@ -857,13 +856,14 @@ screentrace_cb(char *tfn)
857 856  
858 857 /* We're really tracing, turn the flag on. */
859 858 appres.toggle[SCREEN_TRACE].value = True;
860   - appres.toggle[SCREEN_TRACE].changed = True;
  859 +// appres.toggle[SCREEN_TRACE].changed = True;
861 860 menubar_retoggle(&appres.toggle[SCREEN_TRACE]);
862 861 return True;
863 862 }
864 863  
865   -#if defined(X3270_DISPLAY) /*[*/
866   -/* Callback for "OK" button on screentrace popup */
  864 +/*
  865 +#if defined(X3270_DISPLAY)
  866 +// Callback for "OK" button on screentrace popup
867 867 static void
868 868 screentrace_callback(Widget w unused, XtPointer client_data,
869 869 XtPointer call_data unused)
... ... @@ -872,7 +872,7 @@ screentrace_callback(Widget w unused, XtPointer client_data,
872 872 XtPopdown(screentrace_shell);
873 873 }
874 874  
875   -/* Callback for second "OK" button on screentrace popup */
  875 +// Callback for second "OK" button on screentrace popup
876 876 static void
877 877 onescreen_callback(Widget w, XtPointer client_data, XtPointer call_data unused)
878 878 {
... ... @@ -892,20 +892,19 @@ onescreen_callback(Widget w, XtPointer client_data, XtPointer call_data unused)
892 892 (void) fcntl(fileno(screentracef), F_SETFD, 1);
893 893 XtFree(tfn);
894 894  
895   - /* Save the current image, once. */
  895 + // Save the current image, once.
896 896 do_screentrace();
897 897  
898   - /* Close the file, we're done. */
  898 + // Close the file, we're done.
899 899 (void) fclose(screentracef);
900 900 screentracef = (FILE *)NULL;
901 901  
902 902 if (w)
903 903 XtPopdown(screentrace_shell);
904 904 }
905   -#endif /*]*/
  905 +#endif */
906 906  
907   -void
908   -toggle_screenTrace(struct toggle *t unused, LIB3270_TOGGLE_TYPE tt)
  907 +void toggle_screenTrace(H3270 *session, struct toggle *t unused, LIB3270_TOGGLE_TYPE tt)
909 908 {
910 909 char *tracefile_buf = NULL;
911 910 char *tracefile;
... ...
latest/src/lib/trace_dsc.h
... ... @@ -22,9 +22,9 @@
22 22 LIB3270_INTERNAL Boolean trace_skipping;
23 23  
24 24 const char *rcba(int baddr);
25   -void toggle_dsTrace(struct toggle *t, LIB3270_TOGGLE_TYPE tt);
26   -void toggle_eventTrace(struct toggle *t, LIB3270_TOGGLE_TYPE tt);
27   -void toggle_screenTrace(struct toggle *t, LIB3270_TOGGLE_TYPE tt);
  25 +void toggle_dsTrace(H3270 *h, struct toggle *t, LIB3270_TOGGLE_TYPE tt);
  26 +void toggle_eventTrace(H3270 *h, struct toggle *t, LIB3270_TOGGLE_TYPE tt);
  27 +void toggle_screenTrace(H3270 *h, struct toggle *t, LIB3270_TOGGLE_TYPE tt);
28 28 void trace_ansi_disc(void);
29 29 void trace_char(char c);
30 30 void trace_ds(const char *fmt, ...) printflike(1, 2);
... ...