X-Git-Url: https://git.distorted.org.uk/~mdw/sgt/putty/blobdiff_plain/b191636d334a823f14f2c82a595d8fac784936ca..142329905de1d9ebe4e3dc9409a6131c291c6539:/misc.c diff --git a/misc.c b/misc.c index 3266938a..8968fc22 100644 --- a/misc.c +++ b/misc.c @@ -54,14 +54,12 @@ static void minefield_init(void) { int i; for (size = 0x40000000; size > 0; size = ((size >> 3) * 7) &~ 0xFFF) { - printf("trying size=%d\n", size); minefield_region = VirtualAlloc(NULL, size, MEM_RESERVE, PAGE_NOACCESS); if (minefield_region) break; } minefield_size = size; - printf("got region %p size %d\n", minefield_region, minefield_size); /* * Firstly, allocate a section of that to be the admin block. @@ -72,9 +70,6 @@ static void minefield_init(void) { admin_size = (minefield_npages * 2 + PAGESIZE-1) &~ (PAGESIZE-1); minefield_npages = (minefield_size - admin_size) / PAGESIZE; minefield_pages = (char *)minefield_region + admin_size; - printf("admin at %p, pages at %p, npages %x, admin_size %x\n", - minefield_admin, minefield_pages, minefield_npages, - admin_size); /* * Commit the admin region. @@ -308,10 +303,8 @@ void safefree(void *ptr) { static FILE *debug_fp = NULL; static int debug_got_console = 0; -void dprintf(char *fmt, ...) { - char buf[2048]; +static void dputs (char *buf) { DWORD dw; - va_list ap; if (!debug_got_console) { AllocConsole(); @@ -321,11 +314,50 @@ void dprintf(char *fmt, ...) { debug_fp = fopen("debug.log", "w"); } - va_start(ap, fmt); - vsprintf(buf, fmt, ap); WriteFile(GetStdHandle(STD_OUTPUT_HANDLE), buf, strlen(buf), &dw, NULL); fputs(buf, debug_fp); fflush(debug_fp); +} + + +void dprintf(char *fmt, ...) { + char buf[2048]; + va_list ap; + + va_start(ap, fmt); + vsprintf(buf, fmt, ap); + dputs (buf); va_end(ap); } -#endif + + +void debug_memdump (void *buf, int len, int L) { + int i; + unsigned char *p = buf; + if (L) { + int delta; + dprintf ("\t%d (0x%x) bytes:\n", len, len); + delta = 15 & (int) p; + p -= delta; + len += delta; + } + for (; 0 < len; p += 16, len -= 16) { + dputs ("\t"); + if (L) dprintf ("%p: ", p); + for (i = 0; i < 16 && i < len; ++i) { + if (&p[i] < (unsigned char *) buf) { + dputs (" "); /* 3 spaces */ + } else { + dprintf ( + "%c%02.2x", + &p[i] != (unsigned char *) buf && i % 4 ? '.' : ' ', + p[i] + ); + } + } + dputs ("\n"); + } +} + +#endif /* def DEBUG */ +