Move dprintf and the debug system out into misc.c, to centralise it.
authorsimon <simon@cda61777-01e9-0310-a592-d414129be87e>
Wed, 1 Nov 2000 19:54:46 +0000 (19:54 +0000)
committersimon <simon@cda61777-01e9-0310-a592-d414129be87e>
Wed, 1 Nov 2000 19:54:46 +0000 (19:54 +0000)
Saves binary space and also allows redirection of debug statements
to a file `debug.log'.

git-svn-id: svn://svn.tartarus.org/sgt/putty@791 cda61777-01e9-0310-a592-d414129be87e

misc.c
putty.h

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
diff --git a/putty.h b/putty.h
index bd867f3..f25930f 100644 (file)
--- a/putty.h
+++ b/putty.h
@@ -400,28 +400,9 @@ void crypto_wrapup();
 void agent_query(void *in, int inlen, void **out, int *outlen);
 int agent_exists(void);
 
-/*
- * A debug system.
- */
 #ifdef DEBUG
-#include <stdarg.h>
+void dprintf(char *fmt, ...);
 #define debug(x) (dprintf x)
-static void dprintf(char *fmt, ...) {
-    char buf[2048];
-    DWORD dw;
-    va_list ap;
-    static int gotconsole = 0;
-
-    if (!gotconsole) {
-       AllocConsole();
-       gotconsole = 1;
-    }
-
-    va_start(ap, fmt);
-    vsprintf(buf, fmt, ap);
-    WriteFile (GetStdHandle(STD_OUTPUT_HANDLE), buf, strlen(buf), &dw, NULL);
-    va_end(ap);
-}
 #else
 #define debug(x)
 #endif