Fix -logtimestamps to only print time prefix once per output line
authorJeff Garzik <jeff@garzik.org>
Wed, 16 Mar 2011 19:42:04 +0000 (15:42 -0400)
committerJeff Garzik <jgarzik@pobox.com>
Wed, 16 Mar 2011 19:42:04 +0000 (15:42 -0400)
Incorporate BlueMatt's fix to only timestamp upon new line, and
move -logtimestamp checking outside OutputDebugPrintF() to better
future-proof it.

init.cpp
util.cpp
util.h

index 3afc8ee..8e58126 100644 (file)
--- a/init.cpp
+++ b/init.cpp
@@ -211,8 +211,8 @@ bool AppInit2(int argc, char* argv[])
     fPrintToDebugger = GetBoolArg("-printtodebugger");
 
     fTestNet = GetBoolArg("-testnet");
-    
     fNoListen = GetBoolArg("-nolisten");
+    fLogTimestamps = GetBoolArg("-logtimestamps");
 
     for (int i = 1; i < argc; i++)
         if (!IsSwitchChar(argv[i][0]))
index 26f8e0a..655626d 100644 (file)
--- a/util.cpp
+++ b/util.cpp
@@ -19,6 +19,7 @@ bool fCommandLine = false;
 string strMiscWarning;
 bool fTestNet = false;
 bool fNoListen = false;
+bool fLogTimestamps = false;
 
 
 
@@ -170,9 +171,16 @@ inline int OutputDebugStringF(const char* pszFormat, ...)
         }
         if (fileout)
         {
+            static bool fStartedNewLine = true;
+
             // Debug print useful for profiling
-            if (GetBoolArg("-logtimestamps"))
+            if (fLogTimestamps && fStartedNewLine)
                 fprintf(fileout, "%s ", DateTimeStrFormat("%x %H:%M:%S", GetTime()).c_str());
+            if (pszFormat[strlen(pszFormat) - 1] == '\n')
+                fStartedNewLine = true;
+            else
+                fStartedNewLine = false;
+
             va_list arg_ptr;
             va_start(arg_ptr, pszFormat);
             ret = vfprintf(fileout, pszFormat, arg_ptr);
diff --git a/util.h b/util.h
index 1b780d5..2a7dbb5 100644 (file)
--- a/util.h
+++ b/util.h
@@ -148,6 +148,7 @@ extern bool fCommandLine;
 extern string strMiscWarning;
 extern bool fTestNet;
 extern bool fNoListen;
+extern bool fLogTimestamps;
 
 void RandAddSeed();
 void RandAddSeedPerfmon();