Show milliseconds in SILC_LOG_DEBUG and family outputs
[runtime.git] / lib / silcutil / silclog.c
index 824efb701389912d11b260450b86ea63e6ac12fe..e857bac29789cf85c96cd5fe7e794b18c5913faa 100644 (file)
@@ -4,7 +4,7 @@
 
   Author: Pekka Riikonen <priikone@silcnet.org>
 
-  Copyright (C) 1997 - 2007 Pekka Riikonen
+  Copyright (C) 1997 - 2008 Pekka Riikonen
 
   This program is free software; you can redistribute it and/or modify
   it under the terms of the GNU General Public License as published by
@@ -16,9 +16,8 @@
   GNU General Public License for more details.
 
 */
-/* $Id$ */
 
-#include "silc.h"
+#include "silcruntime.h"
 
 /* SilcLogSettings context */
 typedef struct {
@@ -183,7 +182,7 @@ void silc_log_output(SilcLogType type, char *string)
   if (!silclog.scheduled) {
     if (silclog.no_init == FALSE) {
       fprintf(stderr,
-             "Warning, trying to output without log files initialization, "
+             "Warning, log files not initialized, "
              "log output is going to stderr\n");
       silclog.no_init = TRUE;
     }
@@ -243,6 +242,9 @@ SilcBool silc_log_set_file(SilcLogType type, char *filename,
   FILE *fp = NULL;
   SilcLog log;
 
+  if (!scheduler)
+    scheduler = silc_schedule_get_global();
+
   log = silc_log_get_context(type);
   if (!log)
     return FALSE;
@@ -424,7 +426,7 @@ void silc_log_set_debug_string(const char *debug_string)
   int len;
   if ((strchr(debug_string, '(') && strchr(debug_string, ')')) ||
       strchr(debug_string, '$'))
-    string = strdup(debug_string);
+    string = silc_strdup(debug_string);
   else
     string = silc_string_regexify(debug_string);
   len = strlen(string);
@@ -513,8 +515,8 @@ void silc_log_output_debug(char *file, const char *function,
 #ifdef SILC_SYMBIAN
   silc_symbian_debug(function, line, string);
 #else
-  fprintf(stderr, "%02d:%02d:%02d %s:%d: %s\n", curtime.hour,
-         curtime.minute, curtime.second, function, line,
+  fprintf(stderr, "%02d:%02d:%02d.%03d %s:%d: %s\n", curtime.hour,
+         curtime.minute, curtime.second, curtime.msecond, function, line,
          string);
   fflush(stderr);
 #endif /* SILC_SYMBIAN */
@@ -529,10 +531,6 @@ void silc_log_output_hexdump(char *file, const char *function,
                             int line, void *data_in,
                             SilcUInt32 len, char *string)
 {
-  int i, k;
-  int off, pos, count;
-  unsigned char *data = (unsigned char *)data_in;
-
 #ifndef SILC_SYMBIAN
   if (!silclog.debug_hexdump)
     goto end;
@@ -550,60 +548,7 @@ void silc_log_output_hexdump(char *file, const char *function,
 
   fprintf(stderr, "%s:%d: %s\n", function, line, string);
 
-  k = 0;
-  pos = 0;
-  count = 16;
-  off = len % 16;
-  while (1) {
-    if (off) {
-      if ((len - pos) < 16 && (len - pos <= len - off))
-       count = off;
-    } else {
-      if (pos == len)
-       count = 0;
-    }
-    if (off == len)
-      count = len;
-
-    if (count)
-      fprintf(stderr, "%08X  ", k++ * 16);
-
-    for (i = 0; i < count; i++) {
-      fprintf(stderr, "%02X ", data[pos + i]);
-
-      if ((i + 1) % 4 == 0)
-       fprintf(stderr, " ");
-    }
-
-    if (count && count < 16) {
-      int j;
-
-      for (j = 0; j < 16 - count; j++) {
-       fprintf(stderr, "   ");
-
-       if ((j + count + 1) % 4 == 0)
-         fprintf(stderr, " ");
-      }
-    }
-
-    for (i = 0; i < count; i++) {
-      char ch;
-
-      if (data[pos] < 32 || data[pos] >= 127)
-       ch = '.';
-      else
-       ch = data[pos];
-
-      fprintf(stderr, "%c", ch);
-      pos++;
-    }
-
-    if (count)
-      fprintf(stderr, "\n");
-
-    if (count < 16)
-      break;
-  }
+  silc_hexdump(data_in, len, stderr);
 
  end:
   silc_free(string);