Commit dd5922c82396098f937a8b8e88bf7e772d460bb2
1 parent
9a120c29
Exists in
master
and in
3 other branches
Trabalhando no novo mecanismo de trace
Showing
1 changed file
with
45 additions
and
12 deletions
Show diff stats
trace_ds.c
... | ... | @@ -74,14 +74,14 @@ |
74 | 74 | #define MAX_HEADER_SIZE (10*1024) |
75 | 75 | |
76 | 76 | /* Minimum size of a trace file. */ |
77 | -#define MIN_TRACEFILE_SIZE (64*1024) | |
78 | -#define MIN_TRACEFILE_SIZE_NAME "64K" | |
77 | +// #define MIN_TRACEFILE_SIZE (64*1024) | |
78 | +// #define MIN_TRACEFILE_SIZE_NAME "64K" | |
79 | 79 | |
80 | 80 | /* System calls which may not be there. */ |
81 | -#if !defined(HAVE_FSEEKO) /*[*/ | |
82 | -#define fseeko(s, o, w) fseek(s, (long)o, w) | |
83 | -#define ftello(s) (off_t)ftell(s) | |
84 | -#endif /*]*/ | |
81 | +// #if !defined(HAVE_FSEEKO) | |
82 | +// #define fseeko(s, o, w) fseek(s, (long)o, w) | |
83 | +// #define ftello(s) (off_t)ftell(s) | |
84 | +// #endif | |
85 | 85 | |
86 | 86 | // #include <lib3270/api.h> |
87 | 87 | |
... | ... | @@ -106,16 +106,22 @@ static int dscnt = 0; |
106 | 106 | // static char *tracef_midpoint_header = CN; |
107 | 107 | // static off_t tracef_midpoint = 0; |
108 | 108 | |
109 | -static void __vwtrace(const char *fmt, va_list args); | |
109 | +static void __vwtrace(H3270 *session, const char *fmt, va_list args); | |
110 | 110 | static void wtrace(const char *fmt, ...); |
111 | 111 | // static char *create_tracefile_header(const char *mode); |
112 | 112 | static void stop_tracing(void); |
113 | 113 | |
114 | 114 | /* Globals */ |
115 | 115 | struct timeval ds_ts; |
116 | -static void (*vwtrace)(const char *fmt, va_list args) = __vwtrace; | |
116 | +static void (*vwtrace)(H3270 *session, const char *fmt, va_list args) = __vwtrace; | |
117 | 117 | Boolean trace_skipping = False; |
118 | 118 | |
119 | + | |
120 | +LIB3270_EXPORT void lib3270_set_trace_handler( void (*handler)(H3270 *session, const char *fmt, va_list args) ) | |
121 | +{ | |
122 | + vwtrace = handler ? handler : __vwtrace; | |
123 | +} | |
124 | + | |
119 | 125 | /* display a (row,col) */ |
120 | 126 | const char * |
121 | 127 | rcba(int baddr) |
... | ... | @@ -217,7 +223,7 @@ trace_event(const char *fmt, ...) |
217 | 223 | |
218 | 224 | /* print out message */ |
219 | 225 | va_start(args, fmt); |
220 | - vwtrace(fmt, args); | |
226 | + vwtrace(&h3270,fmt, args); | |
221 | 227 | va_end(args); |
222 | 228 | } |
223 | 229 | |
... | ... | @@ -232,7 +238,7 @@ trace_dsn(const char *fmt, ...) |
232 | 238 | |
233 | 239 | /* print out message */ |
234 | 240 | va_start(args, fmt); |
235 | - vwtrace(fmt, args); | |
241 | + vwtrace(&h3270,fmt, args); | |
236 | 242 | va_end(args); |
237 | 243 | } |
238 | 244 | |
... | ... | @@ -241,9 +247,10 @@ trace_dsn(const char *fmt, ...) |
241 | 247 | * This is the only function that actually does output to the trace file -- |
242 | 248 | * all others are wrappers around this function. |
243 | 249 | */ |
244 | -static void __vwtrace(const char *fmt, va_list args) | |
250 | +static void __vwtrace(H3270 *session, const char *fmt, va_list args) | |
245 | 251 | { |
246 | 252 | vfprintf(stdout,fmt,args); |
253 | + fflush(stdout); | |
247 | 254 | } |
248 | 255 | |
249 | 256 | /* |
... | ... | @@ -272,10 +279,36 @@ static void wtrace(const char *fmt, ...) |
272 | 279 | { |
273 | 280 | va_list args; |
274 | 281 | va_start(args, fmt); |
275 | - vwtrace(fmt, args); | |
282 | + vwtrace(&h3270,fmt, args); | |
276 | 283 | va_end(args); |
277 | 284 | } |
278 | 285 | |
286 | +LIB3270_EXPORT void lib3270_write_dstrace(H3270 *session, const char *fmt, ...) | |
287 | +{ | |
288 | + va_list args; | |
289 | + | |
290 | + if(!lib3270_get_toggle(session,LIB3270_TOGGLE_DS_TRACE)) | |
291 | + return; | |
292 | + | |
293 | + va_start(args, fmt); | |
294 | + vwtrace(session,fmt, args); | |
295 | + va_end(args); | |
296 | +} | |
297 | + | |
298 | +LIB3270_EXPORT void lib3270_trace_event(H3270 *session, const char *fmt, ...) | |
299 | +{ | |
300 | + va_list args; | |
301 | + | |
302 | + if(!lib3270_get_toggle(session,LIB3270_TOGGLE_EVENT_TRACE)) | |
303 | + return; | |
304 | + | |
305 | + va_start(args, fmt); | |
306 | + vwtrace(session,fmt, args); | |
307 | + va_end(args); | |
308 | +} | |
309 | + | |
310 | + | |
311 | + | |
279 | 312 | /* |
280 | 313 | static void stop_tracing(void) |
281 | 314 | { | ... | ... |