|
|
| version 1.6, 2004/01/31 20:05:24 | version 1.10, 2004/03/09 16:31:18 |
|---|---|
| Line 7 | Line 7 |
| #ifdef TRACE | #ifdef TRACE |
| #define FILEBUFSIZE (1 << 20) | |
| #define FILELASTBUFONLY | |
| #ifdef STRICT | #ifdef STRICT |
| #define SUBCLASSPROC WNDPROC | #define SUBCLASSPROC WNDPROC |
| #else | #else |
| Line 106 static void View_AddString(const char *l | Line 109 static void View_AddString(const char *l |
| View_ScrollToBottom(hView); | View_ScrollToBottom(hView); |
| } | } |
| // ---- | |
| static char filebuf[FILEBUFSIZE]; | |
| static UINT32 filebufpos; | |
| static void trfh_close(void) { | |
| FILEH fh; | |
| UINT size; | |
| fh = tracewin.fh; | |
| tracewin.fh = FILEH_INVALID; | |
| if (fh != FILEH_INVALID) { | |
| size = filebufpos & (FILEBUFSIZE - 1); | |
| #if defined(FILELASTBUFONLY) | |
| if (filebufpos >= FILEBUFSIZE) { | |
| file_write(fh, filebuf + size, FILEBUFSIZE - size); | |
| } | |
| #endif | |
| if (size) { | |
| file_write(fh, filebuf, size); | |
| } | |
| file_close(fh); | |
| } | |
| } | |
| static void trfh_open(const char *fname) { | |
| trfh_close(); | |
| tracewin.fh = file_create(fname); | |
| filebufpos = 0; | |
| } | |
| static void trfh_add(const char *buf) { | |
| UINT size; | |
| UINT pos; | |
| UINT rem; | |
| size = strlen(buf); | |
| while(size) { | |
| pos = filebufpos & (FILEBUFSIZE - 1); | |
| rem = FILEBUFSIZE - pos; | |
| if (size >= rem) { | |
| CopyMemory(filebuf + pos, buf, rem); | |
| filebufpos += rem; | |
| buf += rem; | |
| size -= rem; | |
| #if !defined(FILELASTBUFONLY) | |
| file_write(tracewin.fh, buf, strlen(buf)); | |
| #endif | |
| } | |
| else { | |
| CopyMemory(filebuf + pos, buf, size); | |
| filebufpos += size; | |
| break; | |
| } | |
| } | |
| } | |
| // ---- | |
| static LRESULT CALLBACK traceproc(HWND hWnd, UINT msg, WPARAM wp, LPARAM lp) { | static LRESULT CALLBACK traceproc(HWND hWnd, UINT msg, WPARAM wp, LPARAM lp) { |
| RECT rc; | RECT rc; |
| Line 160 static LRESULT CALLBACK traceproc(HWND h | Line 227 static LRESULT CALLBACK traceproc(HWND h |
| case IDM_TRACEFH: | case IDM_TRACEFH: |
| if (tracewin.fh != FILEH_INVALID) { | if (tracewin.fh != FILEH_INVALID) { |
| file_close(tracewin.fh); | trfh_close(); |
| tracewin.fh = FILEH_INVALID; | |
| } | } |
| else { | else { |
| tracewin.fh = file_create("traceout.txt"); | trfh_open("traceout.txt"); |
| } | } |
| hmenu = GetSystemMenu(hWnd, FALSE); | hmenu = GetSystemMenu(hWnd, FALSE); |
| CheckMenuItem(hmenu, IDM_TRACEFH, | CheckMenuItem(hmenu, IDM_TRACEFH, |
| Line 265 void trace_init(void) { | Line 331 void trace_init(void) { |
| } | } |
| #if 1 | #if 1 |
| tracewin.en = 1; | tracewin.en = 0; |
| tracewin.fh = FILEH_INVALID; | tracewin.fh = FILEH_INVALID; |
| #else | #else |
| tracewin.en = 0; | tracewin.en = 0; |
| tracewin.fh = file_create_c("out.txt"); | tracewin.fh = trfh_open("traces.txt"); |
| #endif | #endif |
| tracecfg.posx = CW_USEDEFAULT; | tracecfg.posx = CW_USEDEFAULT; |
| Line 295 void trace_init(void) { | Line 361 void trace_init(void) { |
| void trace_term(void) { | void trace_term(void) { |
| if (tracewin.fh != FILEH_INVALID) { | if (tracewin.fh != FILEH_INVALID) { |
| file_close(tracewin.fh); | trfh_close(); |
| tracewin.fh = FILEH_INVALID; | |
| } | } |
| if (tracewin.hwnd) { | if (tracewin.hwnd) { |
| DestroyWindow(tracewin.hwnd); | DestroyWindow(tracewin.hwnd); |
| Line 311 void trace_fmt(const char *fmt, ...) { | Line 376 void trace_fmt(const char *fmt, ...) { |
| va_list ap; | va_list ap; |
| char buf[0x1000]; | char buf[0x1000]; |
| va_start(ap, fmt); | |
| vsprintf(buf, fmt, ap); | |
| va_end(ap); | |
| if (hView) { | |
| View_AddString(buf); | |
| } | |
| if (tracewin.fh != FILEH_INVALID) { | |
| trfh_add(buf); | |
| trfh_add(crlf); | |
| } | |
| } | |
| void trace_fmt2(const char *fmt, ...) { | |
| BOOL en; | |
| va_list ap; | |
| char buf[0x1000]; | |
| en = (tracewin.en & 1) || (tracewin.fh != FILEH_INVALID); | en = (tracewin.en & 1) || (tracewin.fh != FILEH_INVALID); |
| if (en) { | if (en) { |
| va_start(ap, fmt); | va_start(ap, fmt); |
| Line 320 void trace_fmt(const char *fmt, ...) { | Line 403 void trace_fmt(const char *fmt, ...) { |
| View_AddString(buf); | View_AddString(buf); |
| } | } |
| if (tracewin.fh != FILEH_INVALID) { | if (tracewin.fh != FILEH_INVALID) { |
| file_write(tracewin.fh, buf, strlen(buf)); | trfh_add(buf); |
| file_write(tracewin.fh, crlf, strlen(crlf)); | trfh_add(crlf); |
| } | } |
| } | } |
| } | } |
| #if 0 | |
| void trace_fileout(const char *fname) { | |
| if (tracewin.fh != FILEH_INVALID) { | |
| file_close(tracewin.fh); | |
| tracewin.fh = FILEH_INVALID; | |
| } | |
| if (fname) { | |
| tracewin.fh = file_create_c(fname); | |
| } | |
| } | |
| #endif | |
| #endif | #endif |