added multi-part line debug logging functions
authorHolger Schemel <info@artsoft.org>
Fri, 18 Sep 2020 23:58:47 +0000 (01:58 +0200)
committerHolger Schemel <info@artsoft.org>
Fri, 18 Sep 2020 23:58:47 +0000 (01:58 +0200)
src/game.c
src/libgame/misc.c
src/libgame/misc.h
src/libgame/setup.c
src/netserv.c
src/tape.c

index 859cf24e4cfb6812f03c2017c17872fa7a82cf0c..0d28b40b2961e8774cd2cdea2d4f47feb68aa263 100644 (file)
@@ -11661,9 +11661,8 @@ static void GameActionsExt(void)
     byte mapped_action[MAX_PLAYERS];
 
 #if DEBUG_PLAYER_ACTIONS
-    Print(":::");
     for (i = 0; i < MAX_PLAYERS; i++)
-      Print(" %d, ", stored_player[i].effective_action);
+      DebugContinued("", "%d, ", stored_player[i].effective_action);
 #endif
 
     for (i = 0; i < MAX_PLAYERS; i++)
@@ -11673,19 +11672,18 @@ static void GameActionsExt(void)
       stored_player[i].effective_action = mapped_action[i];
 
 #if DEBUG_PLAYER_ACTIONS
-    Print(" =>");
+    DebugContinued("", "=> ");
     for (i = 0; i < MAX_PLAYERS; i++)
-      Print(" %d, ", stored_player[i].effective_action);
-    Print("\n");
+      DebugContinued("", "%d, ", stored_player[i].effective_action);
+    DebugContinued("game:playing:player", "\n");
 #endif
   }
 #if DEBUG_PLAYER_ACTIONS
   else
   {
-    Print(":::");
     for (i = 0; i < MAX_PLAYERS; i++)
-      Print(" %d, ", stored_player[i].effective_action);
-    Print("\n");
+      DebugContinued("", "%d, ", stored_player[i].effective_action);
+    DebugContinued("game:playing:player", "\n");
   }
 #endif
 #endif
index a09bc20e53f8ea90e4116013054e8005fd106521..e499e77a98e5105159412b67e20ca165c03ae8e5 100644 (file)
@@ -363,6 +363,38 @@ static void Log(int log_level, char *mode, char *format, ...)
   va_end(ap);
 }
 
+void DebugContinued(char *mode, char *format, ...)
+{
+  static char message[MAX_LINE_LEN] = { 0 };
+
+  // initialize message (optional)
+  if (strEqual(format, ""))
+  {
+    message[0] = '\0';
+
+    return;
+  }
+
+  char *message_ptr = message + strlen(message);
+  int size_left = MAX_LINE_LEN - strlen(message);
+  va_list ap;
+
+  // append message
+  va_start(ap, format);
+  vsnprintf(message_ptr, size_left, format, ap);
+  va_end(ap);
+
+  // finalize message
+  if (strSuffix(format, "\n"))
+  {
+    message[strlen(message) - 1] = '\0';
+
+    Debug(mode, message);
+
+    message[0] = '\0';
+  }
+}
+
 void Debug(char *mode, char *format, ...)
 {
   va_list ap;
index 1c51888f9350bb6aab4adfba2b0ec98fbef9b7dd..d9cc4e7b279e5d70c9c6d1015d6fc1e23940e661 100644 (file)
@@ -106,6 +106,7 @@ void PrintNoLog(char *, ...);
 void PrintLine(char *, int);
 void PrintLineWithPrefix(char *, char *, int);
 
+void DebugContinued(char *, char *, ...);
 void Debug(char *, char *, ...);
 void Info(char *, ...);
 void Warn(char *, ...);
index 4b28476a40c18f86ef91754944d85ef13226b39a..9f82d3a061bb17b4c6e71bc44033627176a89b3b 100644 (file)
@@ -1361,18 +1361,18 @@ void dumpTreeInfo(TreeInfo *node, int depth)
 {
   int i;
 
-  Print("Dumping TreeInfo:\n");
+  Debug("tree", "Dumping TreeInfo:");
 
   while (node)
   {
     for (i = 0; i < (depth + 1) * 3; i++)
-      Print(" ");
+      DebugContinued("", " ");
 
-    Print("'%s' / '%s'\n", node->identifier, node->name);
+    DebugContinued("tree", "'%s' / '%s'\n", node->identifier, node->name);
 
     /*
     // use for dumping artwork info tree
-    Print("subdir == '%s' ['%s', '%s'] [%d])\n",
+    Debug("tree", "subdir == '%s' ['%s', '%s'] [%d])",
          node->subdir, node->fullpath, node->basepath, node->in_user_dir);
     */
 
index 1f0663fdd71fbaa292118c7d6a18ab8fb1f99ce6..636fbf236c484edfee5c5a86f8eb83216d7e4679 100644 (file)
@@ -385,19 +385,19 @@ void dumpNetworkBuffer(struct NetworkBuffer *nb)
 {
   int i;
 
-  Print("::: network buffer maximum size: %d\n", nb->max_size);
-  Print("::: network buffer size:         %d\n", nb->size);
-  Print("::: network buffer position    : %d\n", nb->pos);
+  Debug("network:buffer", "network buffer maximum size: %d\n", nb->max_size);
+  Debug("network:buffer", "network buffer size:         %d\n", nb->size);
+  Debug("network:buffer", "network buffer position    : %d\n", nb->pos);
 
   for (i = 0; i < nb->size; i++)
   {
     if ((i % 16) == 0)
-      Print("\n::: ");
+      DebugContinued("network:buffer", "\n");
 
-    Print("%02x ", nb->buffer[i]);
+    DebugContinued("", "%02x ", nb->buffer[i]);
   }
 
-  Print("\n");
+  DebugContinued("network:buffer", "\n");
 }
 
 static void SendNetworkBufferToAllButOne(struct NetworkBuffer *nb,
index ac96ef96aa09e4721dc7c6f3e181b2356bdb951f..9f815143eddb3c67a6430f6f603d6db9a35e0ad6 100644 (file)
@@ -894,10 +894,10 @@ byte *TapePlayAction(void)
     action[i] = tape.pos[tape.counter].action[i];
 
 #if DEBUG_TAPE_WHEN_PLAYING
-  Print("%05d", FrameCounter);
+  DebugContinued("", "%05d", FrameCounter);
   for (i = 0; i < MAX_TAPE_ACTIONS; i++)
-    Print("   %08x", action[i]);
-  Print("\n");
+    DebugContinued("", "   %08x", action[i]);
+  DebugContinued("tape:play", "\n");
 #endif
 
   tape.set_centered_player = FALSE;