|
|
| version 1.10, 2004/03/09 16:31:18 | version 1.15, 2005/02/07 14:46:15 |
|---|---|
| Line 7 | Line 7 |
| #ifdef TRACE | #ifdef TRACE |
| #define FILEBUFSIZE (1 << 20) | // #define FILEBUFSIZE (1 << 20) |
| #define FILELASTBUFONLY | // #define FILELASTBUFONLY |
| #ifdef STRICT | #ifdef STRICT |
| #define SUBCLASSPROC WNDPROC | #define SUBCLASSPROC WNDPROC |
| Line 24 | Line 24 |
| #define VIEW_SIZE 12 | #define VIEW_SIZE 12 |
| typedef struct { | typedef struct { |
| BYTE en; | UINT8 en; |
| FILEH fh; | FILEH fh; |
| HWND hwnd; | HWND hwnd; |
| } TRACEWIN; | } TRACEWIN; |
| Line 40 extern HINSTANCE hInst; | Line 40 extern HINSTANCE hInst; |
| extern HINSTANCE hPrev; | extern HINSTANCE hPrev; |
| enum { | enum { |
| IDM_TRACEEN = 3300, | IDM_TRACE1 = 3300, |
| IDM_TRACE2, | |
| IDM_TRACEEN, | |
| IDM_TRACEFH, | IDM_TRACEFH, |
| IDM_TRACECL | IDM_TRACECL |
| }; | }; |
| Line 48 enum { | Line 50 enum { |
| static const char ProgTitle[] = "console"; | static const char ProgTitle[] = "console"; |
| static const char ClassName[] = "TRACE-console"; | static const char ClassName[] = "TRACE-console"; |
| static const char ClassEdit[] = "EDIT"; | static const char ClassEdit[] = "EDIT"; |
| static const char trace1[] = "TRACE"; | |
| static const char trace2[] = "VERBOSE"; | |
| static const char traceen[] = "Enable"; | static const char traceen[] = "Enable"; |
| static const char tracefh[] = "File out"; | static const char tracefh[] = "File out"; |
| static const char tracecl[] = "Clear"; | static const char tracecl[] = "Clear"; |
| Line 112 static void View_AddString(const char *l | Line 116 static void View_AddString(const char *l |
| // ---- | // ---- |
| #if defined(FILEBUFSIZE) | |
| static char filebuf[FILEBUFSIZE]; | static char filebuf[FILEBUFSIZE]; |
| static UINT32 filebufpos; | static UINT32 filebufpos; |
| #endif | |
| static void trfh_close(void) { | static void trfh_close(void) { |
| FILEH fh; | FILEH fh; |
| UINT size; | |
| fh = tracewin.fh; | fh = tracewin.fh; |
| tracewin.fh = FILEH_INVALID; | tracewin.fh = FILEH_INVALID; |
| if (fh != FILEH_INVALID) { | if (fh != FILEH_INVALID) { |
| size = filebufpos & (FILEBUFSIZE - 1); | #if defined(FILEBUFSIZE) |
| UINT size = filebufpos & (FILEBUFSIZE - 1); | |
| #if defined(FILELASTBUFONLY) | #if defined(FILELASTBUFONLY) |
| if (filebufpos >= FILEBUFSIZE) { | if (filebufpos >= FILEBUFSIZE) { |
| file_write(fh, filebuf + size, FILEBUFSIZE - size); | file_write(fh, filebuf + size, FILEBUFSIZE - size); |
| Line 132 static void trfh_close(void) { | Line 138 static void trfh_close(void) { |
| if (size) { | if (size) { |
| file_write(fh, filebuf, size); | file_write(fh, filebuf, size); |
| } | } |
| #endif | |
| file_close(fh); | file_close(fh); |
| } | } |
| } | } |
| Line 140 static void trfh_open(const char *fname) | Line 147 static void trfh_open(const char *fname) |
| trfh_close(); | trfh_close(); |
| tracewin.fh = file_create(fname); | tracewin.fh = file_create(fname); |
| #if defined(FILEBUFSIZE) | |
| filebufpos = 0; | filebufpos = 0; |
| #endif | |
| } | } |
| static void trfh_add(const char *buf) { | static void trfh_add(const char *buf) { |
| UINT size; | UINT size; |
| UINT pos; | |
| UINT rem; | |
| size = strlen(buf); | size = strlen(buf); |
| #if defined(FILEBUFSIZE) | |
| while(size) { | while(size) { |
| pos = filebufpos & (FILEBUFSIZE - 1); | UINT pos = filebufpos & (FILEBUFSIZE - 1); |
| rem = FILEBUFSIZE - pos; | UINT rem = FILEBUFSIZE - pos; |
| if (size >= rem) { | if (size >= rem) { |
| CopyMemory(filebuf + pos, buf, rem); | CopyMemory(filebuf + pos, buf, rem); |
| filebufpos += rem; | filebufpos += rem; |
| buf += rem; | buf += rem; |
| size -= rem; | size -= rem; |
| #if !defined(FILELASTBUFONLY) | #if !defined(FILELASTBUFONLY) |
| file_write(tracewin.fh, buf, strlen(buf)); | file_write(tracewin.fh, filebuf, FILEBUFSIZE); |
| #endif | #endif |
| } | } |
| else { | else { |
| Line 168 static void trfh_add(const char *buf) { | Line 176 static void trfh_add(const char *buf) { |
| break; | break; |
| } | } |
| } | } |
| #else | |
| file_write(tracewin.fh, buf, size); | |
| #endif | |
| } | } |
| Line 182 static LRESULT CALLBACK traceproc(HWND h | Line 193 static LRESULT CALLBACK traceproc(HWND h |
| case WM_CREATE: | case WM_CREATE: |
| hmenu = GetSystemMenu(hWnd, FALSE); | hmenu = GetSystemMenu(hWnd, FALSE); |
| InsertMenu(hmenu, 0, MF_BYPOSITION | MF_STRING, | InsertMenu(hmenu, 0, MF_BYPOSITION | MF_STRING, |
| IDM_TRACEEN, traceen); | IDM_TRACE1, trace1); |
| InsertMenu(hmenu, 1, MF_BYPOSITION | MF_STRING, | InsertMenu(hmenu, 1, MF_BYPOSITION | MF_STRING, |
| IDM_TRACE2, trace2); | |
| InsertMenu(hmenu, 2, MF_BYPOSITION | MF_SEPARATOR, 0, NULL); | |
| InsertMenu(hmenu, 3, MF_BYPOSITION | MF_STRING, | |
| IDM_TRACEEN, traceen); | |
| InsertMenu(hmenu, 4, MF_BYPOSITION | MF_STRING, | |
| IDM_TRACEFH, tracefh); | IDM_TRACEFH, tracefh); |
| InsertMenu(hmenu, 2, MF_BYPOSITION | MF_STRING, | InsertMenu(hmenu, 5, MF_BYPOSITION | MF_STRING, |
| IDM_TRACECL, tracecl); | IDM_TRACECL, tracecl); |
| InsertMenu(hmenu, 3, MF_BYPOSITION | MF_SEPARATOR, 0, NULL); | InsertMenu(hmenu, 6, MF_BYPOSITION | MF_SEPARATOR, 0, NULL); |
| CheckMenuItem(hmenu, IDM_TRACEEN, | CheckMenuItem(hmenu, IDM_TRACE1, |
| (tracewin.en & 1)?MF_CHECKED:MF_UNCHECKED); | (tracewin.en & 1)?MF_CHECKED:MF_UNCHECKED); |
| CheckMenuItem(hmenu, IDM_TRACE2, | |
| (tracewin.en & 2)?MF_CHECKED:MF_UNCHECKED); | |
| CheckMenuItem(hmenu, IDM_TRACEEN, | |
| (tracewin.en & 4)?MF_CHECKED:MF_UNCHECKED); | |
| GetClientRect(hWnd, &rc); | GetClientRect(hWnd, &rc); |
| hView = CreateWindowEx(WS_EX_CLIENTEDGE, | hView = CreateWindowEx(WS_EX_CLIENTEDGE, |
| Line 218 static LRESULT CALLBACK traceproc(HWND h | Line 238 static LRESULT CALLBACK traceproc(HWND h |
| case WM_SYSCOMMAND: | case WM_SYSCOMMAND: |
| switch(wp) { | switch(wp) { |
| case IDM_TRACEEN: | case IDM_TRACE1: |
| tracewin.en ^= 1; | tracewin.en ^= 1; |
| hmenu = GetSystemMenu(hWnd, FALSE); | hmenu = GetSystemMenu(hWnd, FALSE); |
| CheckMenuItem(hmenu, IDM_TRACEEN, | CheckMenuItem(hmenu, IDM_TRACE1, |
| (tracewin.en & 1)?MF_CHECKED:MF_UNCHECKED); | (tracewin.en & 1)?MF_CHECKED:MF_UNCHECKED); |
| break; | break; |
| case IDM_TRACE2: | |
| tracewin.en ^= 2; | |
| hmenu = GetSystemMenu(hWnd, FALSE); | |
| CheckMenuItem(hmenu, IDM_TRACE2, | |
| (tracewin.en & 2)?MF_CHECKED:MF_UNCHECKED); | |
| break; | |
| case IDM_TRACEEN: | |
| tracewin.en ^= 4; | |
| hmenu = GetSystemMenu(hWnd, FALSE); | |
| CheckMenuItem(hmenu, IDM_TRACEEN, | |
| (tracewin.en & 4)?MF_CHECKED:MF_UNCHECKED); | |
| break; | |
| case IDM_TRACEFH: | case IDM_TRACEFH: |
| if (tracewin.fh != FILEH_INVALID) { | if (tracewin.fh != FILEH_INVALID) { |
| trfh_close(); | trfh_close(); |
| Line 335 void trace_init(void) { | Line 369 void trace_init(void) { |
| tracewin.fh = FILEH_INVALID; | tracewin.fh = FILEH_INVALID; |
| #else | #else |
| tracewin.en = 0; | tracewin.en = 0; |
| tracewin.fh = trfh_open("traces.txt"); | tracewin.fh = FILEH_INVALID; |
| trfh_open("traces.txt"); | |
| #endif | #endif |
| tracecfg.posx = CW_USEDEFAULT; | tracecfg.posx = CW_USEDEFAULT; |
| Line 376 void trace_fmt(const char *fmt, ...) { | Line 411 void trace_fmt(const char *fmt, ...) { |
| va_list ap; | va_list ap; |
| char buf[0x1000]; | char buf[0x1000]; |
| va_start(ap, fmt); | en = (tracewin.en & 1) && |
| vsprintf(buf, fmt, ap); | ((tracewin.en & 4) || (tracewin.fh != FILEH_INVALID)); |
| va_end(ap); | if (en) { |
| if (hView) { | va_start(ap, fmt); |
| View_AddString(buf); | vsprintf(buf, fmt, ap); |
| } | va_end(ap); |
| if (tracewin.fh != FILEH_INVALID) { | if ((tracewin.en & 4) && (hView)) { |
| trfh_add(buf); | View_AddString(buf); |
| trfh_add(crlf); | } |
| if (tracewin.fh != FILEH_INVALID) { | |
| trfh_add(buf); | |
| trfh_add(crlf); | |
| } | |
| } | } |
| } | } |
| Line 394 void trace_fmt2(const char *fmt, ...) { | Line 433 void trace_fmt2(const char *fmt, ...) { |
| va_list ap; | va_list ap; |
| char buf[0x1000]; | char buf[0x1000]; |
| en = (tracewin.en & 1) || (tracewin.fh != FILEH_INVALID); | en = (tracewin.en & 2) && |
| ((tracewin.en & 4) || (tracewin.fh != FILEH_INVALID)); | |
| if (en) { | if (en) { |
| va_start(ap, fmt); | va_start(ap, fmt); |
| vsprintf(buf, fmt, ap); | vsprintf(buf, fmt, ap); |
| va_end(ap); | va_end(ap); |
| if ((tracewin.en & 1) && (hView)) { | if ((tracewin.en & 4) && (hView)) { |
| View_AddString(buf); | View_AddString(buf); |
| } | } |
| if (tracewin.fh != FILEH_INVALID) { | if (tracewin.fh != FILEH_INVALID) { |
| Line 409 void trace_fmt2(const char *fmt, ...) { | Line 449 void trace_fmt2(const char *fmt, ...) { |
| } | } |
| } | } |
| #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 |