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,14 +74,14 @@ | ||
74 | #define MAX_HEADER_SIZE (10*1024) | 74 | #define MAX_HEADER_SIZE (10*1024) |
75 | 75 | ||
76 | /* Minimum size of a trace file. */ | 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 | /* System calls which may not be there. */ | 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 | // #include <lib3270/api.h> | 86 | // #include <lib3270/api.h> |
87 | 87 | ||
@@ -106,16 +106,22 @@ static int dscnt = 0; | @@ -106,16 +106,22 @@ static int dscnt = 0; | ||
106 | // static char *tracef_midpoint_header = CN; | 106 | // static char *tracef_midpoint_header = CN; |
107 | // static off_t tracef_midpoint = 0; | 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 | static void wtrace(const char *fmt, ...); | 110 | static void wtrace(const char *fmt, ...); |
111 | // static char *create_tracefile_header(const char *mode); | 111 | // static char *create_tracefile_header(const char *mode); |
112 | static void stop_tracing(void); | 112 | static void stop_tracing(void); |
113 | 113 | ||
114 | /* Globals */ | 114 | /* Globals */ |
115 | struct timeval ds_ts; | 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 | Boolean trace_skipping = False; | 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 | /* display a (row,col) */ | 125 | /* display a (row,col) */ |
120 | const char * | 126 | const char * |
121 | rcba(int baddr) | 127 | rcba(int baddr) |
@@ -217,7 +223,7 @@ trace_event(const char *fmt, ...) | @@ -217,7 +223,7 @@ trace_event(const char *fmt, ...) | ||
217 | 223 | ||
218 | /* print out message */ | 224 | /* print out message */ |
219 | va_start(args, fmt); | 225 | va_start(args, fmt); |
220 | - vwtrace(fmt, args); | 226 | + vwtrace(&h3270,fmt, args); |
221 | va_end(args); | 227 | va_end(args); |
222 | } | 228 | } |
223 | 229 | ||
@@ -232,7 +238,7 @@ trace_dsn(const char *fmt, ...) | @@ -232,7 +238,7 @@ trace_dsn(const char *fmt, ...) | ||
232 | 238 | ||
233 | /* print out message */ | 239 | /* print out message */ |
234 | va_start(args, fmt); | 240 | va_start(args, fmt); |
235 | - vwtrace(fmt, args); | 241 | + vwtrace(&h3270,fmt, args); |
236 | va_end(args); | 242 | va_end(args); |
237 | } | 243 | } |
238 | 244 | ||
@@ -241,9 +247,10 @@ trace_dsn(const char *fmt, ...) | @@ -241,9 +247,10 @@ trace_dsn(const char *fmt, ...) | ||
241 | * This is the only function that actually does output to the trace file -- | 247 | * This is the only function that actually does output to the trace file -- |
242 | * all others are wrappers around this function. | 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 | vfprintf(stdout,fmt,args); | 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,10 +279,36 @@ static void wtrace(const char *fmt, ...) | ||
272 | { | 279 | { |
273 | va_list args; | 280 | va_list args; |
274 | va_start(args, fmt); | 281 | va_start(args, fmt); |
275 | - vwtrace(fmt, args); | 282 | + vwtrace(&h3270,fmt, args); |
276 | va_end(args); | 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 | static void stop_tracing(void) | 313 | static void stop_tracing(void) |
281 | { | 314 | { |