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