diff mcabber/src/screen.c @ 374:bd5638c21834

Improve logging system (traces) There are now two trace logging levels: * tracelog_level = 1: Most messages from the log window are written to disk (LPRINT_LOG) * tracelog_level =2: LPRINT_LOG & LPRINT_DEBUG messages are written to disk The trace file name is set with the "tracelog_file" option.
author Mikael Berthe <mikael@lilotux.net>
date Mon, 25 Jul 2005 21:46:35 +0100
parents af2f8ddf6a1b
children 4c6e8392e465 d59e9b8c91d3
line wrap: on
line diff
--- a/mcabber/src/screen.c	Mon Jul 25 19:40:17 2005 +0100
+++ b/mcabber/src/screen.c	Mon Jul 25 21:46:35 2005 +0100
@@ -233,33 +233,38 @@
 
 //  scr_LogPrint(...)
 // Display a message in the log window.
-void scr_LogPrint(const char *fmt, ...)
+void scr_LogPrint(unsigned int flag, const char *fmt, ...)
 {
   time_t timestamp;
-  char *buffer;
+  char *buffer, *b2;
   va_list ap;
 
+  if (!flag) return;
+
   do {
-    buffer = (char *) calloc(1, 1024);
+    buffer = (char *) calloc(1, 1088);
   } while (!buffer);
 
   timestamp = time(NULL);
   strftime(buffer, 64, "[%H:%M:%S] ", localtime(&timestamp));
-  if (Curses)
-    wprintw(logWnd, "\n%s", buffer);
-  else
-    printf("%s", buffer);
-
+  for (b2 = buffer ; *b2 ; b2++)
+    ;
   va_start(ap, fmt);
-  vsnprintf(buffer, 1024, fmt, ap);
+  vsnprintf(b2, 1024, fmt, ap);
   va_end(ap);
 
-  if (Curses) {
-    wprintw(logWnd, "%s", buffer);
-    update_panels();
-    doupdate();
-  } else {
-    printf("%s\n", buffer);
+  if (flag & LPRINT_NORMAL) {
+    if (Curses) {
+      wprintw(logWnd, "\n%s", buffer);
+      update_panels();
+      doupdate();
+    } else {
+      printf("%s\n", buffer);
+    }
+  }
+  if (flag & (LPRINT_LOG|LPRINT_DEBUG)) {
+    strcat(buffer, "\n");
+    ut_WriteLog(flag, buffer);
   }
   free(buffer);
 }
@@ -579,7 +584,7 @@
     inputPanel  = new_panel(inputWnd);
 
     if (utf8_mode)
-      scr_LogPrint("WARNING: UTF-8 not yet supported!");
+      scr_LogPrint(LPRINT_NORMAL, "WARNING: UTF-8 not yet supported!");
   } else {
     // Update panels
     replace_panel(rosterPanel, rosterWnd);
@@ -682,7 +687,7 @@
   // Update offset if necessary
   i = g_list_position(buddylist, current_buddy);
   if (i == -1) { // This is bad
-    scr_LogPrint("Doh! Can't find current selected buddy!!");
+    scr_LogPrint(LPRINT_NORMAL, "Doh! Can't find current selected buddy!!");
     return;
   } else if (i < offset) {
     offset = i;
@@ -920,7 +925,8 @@
   if (nbuddy) {
     set_current_buddy(nbuddy);
     if (chatmode) scr_ShowBuddyWindow();
-  } else scr_LogPrint("Error: nbuddy == NULL");
+  } else
+    scr_LogPrint(LPRINT_LOGNORM, "Error: nbuddy == NULL"); // should not happen
 }
 
 //  scr_RosterJumpAlternate()
@@ -1061,7 +1067,7 @@
     update_panels();
     doupdate();
   } else
-    scr_LogPrint("Search string not found");
+    scr_LogPrint(LPRINT_NORMAL, "Search string not found");
 }
 
 //  scr_set_chatmode()
@@ -1109,7 +1115,7 @@
   static int num;
 
   if (!multimode) {
-    scr_LogPrint("Error: Not in multi-line message mode!");
+    scr_LogPrint(LPRINT_NORMAL, "Error: Not in multi-line message mode!");
     return;
   }
   if (multiline) {
@@ -1117,17 +1123,17 @@
     if (len >= HBB_BLOCKSIZE - 1) {
       // We don't handle single messages with size > HBB_BLOCKSIZE
       // (see hbuf)
-      scr_LogPrint("Your multi-line message is too big, this line has "
-                   "not been added.");
-      scr_LogPrint("Please send this part now...");
+      scr_LogPrint(LPRINT_NORMAL, "Your multi-line message is too big, "
+                   "this line has not been added.");
+      scr_LogPrint(LPRINT_NORMAL, "Please send this part now...");
       return;
     }
     if (num >= MULTILINE_MAX_LINE_NUMBER) {
       // We don't allow too many lines; however the maximum is arbitrary
       // (It should be < 1000 yet)
-      scr_LogPrint("Your message has too many lines, this one has "
-                   "not been added.");
-      scr_LogPrint("Please send this part now...");
+      scr_LogPrint(LPRINT_NORMAL, "Your message has too many lines, "
+                   "this one has not been added.");
+      scr_LogPrint(LPRINT_NORMAL, "Please send this part now...");
       return;
     }
     multiline = g_renew(char, multiline, len);
@@ -1144,7 +1150,8 @@
     } else
       return;
   }
-  scr_LogPrint("Multi-line mode: line #%d added  [%.25s...", num, line);
+  scr_LogPrint(LPRINT_NORMAL, "Multi-line mode: line #%d added  [%.25s...",
+               num, line);
 }
 
 //  scr_cmdhisto_addline()
@@ -1300,7 +1307,7 @@
   int len = strlen(text);
   // Check the line isn't too long
   if (strlen(inputLine) + len >= INPUTLINE_LENGTH) {
-    scr_LogPrint("Cannot insert text, line too long.");
+    scr_LogPrint(LPRINT_LOGNORM, "Cannot insert text, line too long.");
     return;
   }
 
@@ -1339,7 +1346,7 @@
       g_free(xpline);
     }
     if ((!com && (!alias || !completion_started)) || !row) {
-      scr_LogPrint("I cannot complete that...");
+      scr_LogPrint(LPRINT_NORMAL, "I cannot complete that...");
       return;
     }
     if (!alias)
@@ -1605,9 +1612,10 @@
                 return 255;
               g_free(cmd);
             } else {
-              scr_LogPrint("Unknown key=%d", key);
+              scr_LogPrint(LPRINT_NORMAL, "Unknown key=%d", key);
               if (utf8_mode)
-                scr_LogPrint("WARNING: UTF-8 not yet supported!");
+                scr_LogPrint(LPRINT_NORMAL,
+                             "WARNING: UTF-8 not yet supported!");
             }
           }
     }