Move dprintf and the debug system out into misc.c, to centralise it.
[u/mdw/putty] / misc.c
diff --git a/misc.c b/misc.c
index 6bb09c5..eb52225 100644 (file)
--- a/misc.c
+++ b/misc.c
@@ -67,3 +67,29 @@ void safefree(void *ptr) {
        fprintf(fp, "freeing null pointer - no action taken\n");
 #endif
 }
+
+#ifdef DEBUG
+static FILE *debug_fp = NULL;
+static int debug_got_console = 0;
+
+void dprintf(char *fmt, ...) {
+    char buf[2048];
+    DWORD dw;
+    va_list ap;
+
+    if (!debug_got_console) {
+       AllocConsole();
+       debug_got_console = 1;
+    }
+    if (!debug_fp) {
+       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);
+    va_end(ap);
+}
+#endif