changeset 857:ef35a2bb40d7

scr_LogPrint(): do not use static buffer size
author Mikael Berthe <mikael@lilotux.net>
date Mon, 15 May 2006 23:06:13 +0200
parents 722f186f51c3
children 2683ad5d1003
files mcabber/src/screen.c
diffstat 1 files changed, 13 insertions(+), 16 deletions(-) [+]
line wrap: on
line diff
--- a/mcabber/src/screen.c	Sun May 14 10:44:52 2006 +0200
+++ b/mcabber/src/screen.c	Mon May 15 23:06:13 2006 +0200
@@ -339,20 +339,19 @@
 void scr_LogPrint(unsigned int flag, const char *fmt, ...)
 {
   time_t timestamp;
+  char strtimestamp[64];
   char *buffer, *b2;
   va_list ap;
 
   if (!(flag & ~LPRINT_NOTUTF8)) return; // Shouldn't happen
 
-  buffer = g_new(char, 5184);
+  timestamp = time(NULL);
+  strftime(strtimestamp, 48, "[%H:%M:%S]", localtime(&timestamp));
+  va_start(ap, fmt);
+  b2 = g_strdup_vprintf(fmt, ap);
+  va_end(ap);
 
-  timestamp = time(NULL);
-  strftime(buffer, 48, "[%H:%M:%S] ", localtime(&timestamp));
-  for (b2 = buffer ; *b2 ; b2++)
-    ;
-  va_start(ap, fmt);
-  vsnprintf(b2, 5120, fmt, ap);
-  va_end(ap);
+  buffer = g_strdup_printf("%s %s", strtimestamp, b2);
 
   if (flag & LPRINT_NORMAL) {
     char *buffer_locale;
@@ -388,16 +387,14 @@
     if (!(flag & LPRINT_NOTUTF8))
       g_free(buffer_locale);
   }
-  if (flag & (LPRINT_LOG|LPRINT_DEBUG)) {
-    char *buffer2 = g_new(char, 5184);
+  g_free(buffer);
 
-    strftime(buffer2, 23, "[%Y-%m-%d %H:%M:%S] ", localtime(&timestamp));
-    strcat(buffer2, b2);
-    strcat(buffer2, "\n");
-    ut_WriteLog(flag, buffer2);
-    g_free(buffer2);
+  if (flag & (LPRINT_LOG|LPRINT_DEBUG)) {
+    strftime(strtimestamp, 23, "[%Y-%m-%d %H:%M:%S]", localtime(&timestamp));
+    buffer = g_strdup_printf("%s %s\n", strtimestamp, b2);
+    ut_WriteLog(flag, buffer);
+    g_free(buffer);
   }
-  g_free(buffer);
 }
 
 //  scr_CreateBuddyPanel(title, dontshow)