]> arthur.barton.de Git - netatalk.git/blobdiff - libatalk/util/logger.c
Fix stupid free. Still banging my head against the table! Praise valgrind.
[netatalk.git] / libatalk / util / logger.c
index 5499656779c5d79796b23010301b17bb1f9a94df..dbeede2f4113dc6141ae38de432d1bd744074ef9 100644 (file)
@@ -30,6 +30,7 @@
 #include <fcntl.h>
 #include <sys/uio.h>
 #include <unistd.h>
+#include <sys/time.h>
 #include <time.h>
 #include <ctype.h>
 
@@ -107,7 +108,7 @@ static const int num_loglevel_strings = COUNT_ARRAY(arr_loglevel_strings);
  */
 
   /* -[un]setuplog <logtype> <loglevel> [<filename>]*/
-static void setuplog_internal(char *logtype, char *loglevel, char *filename)
+static void setuplog_internal(const char *logtype, const char *loglevel, const char *filename)
 {
   int typenum, levelnum;
 
@@ -155,18 +156,21 @@ static void generate_message_details(char *message_details_buffer,
     char   *ptr = message_details_buffer;
     int    templen;
     int    len = message_details_buffer_length;
+    struct timeval tv;
 
     *ptr = 0;
 
-    /* Print date */
-    time_t thetime;
-    time(&thetime);
-
-    strftime(ptr, len, "%b %d %H:%M:%S ", localtime(&thetime));
+    /* Print time */
+    gettimeofday(&tv, NULL);
+    strftime(ptr, len, "%b %d %H:%M:%S.", localtime(&tv.tv_sec));
     templen = strlen(ptr);
     len -= templen;
     ptr += templen;
 
+    templen = snprintf(ptr, len, "%06u ", (int)tv.tv_usec);
+    len -= templen;
+    ptr += templen;
+
     /* Process name */
     strncpy(ptr, log_config.processname, len);
     templen = strlen(ptr);
@@ -246,7 +250,7 @@ void log_init(void)
 #endif
 }
 
-void log_setup(char *filename, enum loglevels loglevel, enum logtypes logtype)
+void log_setup(const char *filename, enum loglevels loglevel, enum logtypes logtype)
 {
     uid_t process_uid;
 
@@ -334,7 +338,7 @@ void log_setup(char *filename, enum loglevels loglevel, enum logtypes logtype)
        logtype = logtype_default;
     }
 
-    LOG(log_note, logtype_logger, "Setup file logging: type: %s, level: %s, file: %s",
+    LOG(log_debug, logtype_logger, "Setup file logging: type: %s, level: %s, file: %s",
        arr_logtype_strings[logtype], arr_loglevel_strings[loglevel], file_configs[logtype].filename);
 }
 
@@ -458,9 +462,10 @@ void make_syslog_entry(enum loglevels loglevel, enum logtypes logtype, char *mes
 
 void setuplog(const char *logstr)
 {
-    char *ptr, *logtype, *loglevel, *filename;
+    char *ptr, *ptrbak, *logtype, *loglevel, *filename;
     ptr = strdup(logstr);
-    
+    ptrbak = ptr;
+
     /* logtype */
     logtype = ptr; 
 
@@ -485,7 +490,7 @@ void setuplog(const char *logstr)
     /* finally call setuplog, filename can be NULL */
     setuplog_internal(logtype, loglevel, filename);
 
-    free(ptr);
+    free(ptrbak);
 }
 
 void unsetuplog(const char *logstr)