-LRN: Support [] (formatted to be pid) in logfile names:
authorChristian Grothoff <christian@grothoff.org>
Sat, 23 Jun 2012 22:28:37 +0000 (22:28 +0000)
committerChristian Grothoff <christian@grothoff.org>
Sat, 23 Jun 2012 22:28:37 +0000 (22:28 +0000)
  I needed it for mesh debugging. Wrote this patch before your log
rotation changes, and had to hastily adapt it after them, so i'm not
sure it actually works. Did some quick tests on it, and it appears to
be working, so i'll just send it to you as is, and see how it turns out.

src/util/common_logging.c

index 6c3dda9bc8712b08b5309e367c3d0a7bcbd34fce..8ba955dea727eea0650737160d81fabb895a8342 100644 (file)
@@ -336,11 +336,22 @@ setup_log_file (const struct tm *tm)
   int altlog_fd;
   int dup_return;
   FILE *altlog;
+  char *leftsquare;
   
   if (NULL == log_file_name)
     return GNUNET_SYSERR;
   if (0 == strftime (fn, sizeof (fn), log_file_name, tm))
     return GNUNET_SYSERR;
+  leftsquare = strrchr (fn, '[');
+  if ( (NULL != leftsquare) && (']' == leftsquare[1]) )
+  {
+    char *logfile_copy = GNUNET_strdup (fn);
+    logfile_copy[leftsquare - fn] = '\0';
+    logfile_copy[leftsquare - fn + 1] = '\0';
+    snprintf (fn, PATH_MAX, "%s%d%s",
+         logfile_copy, getpid (), &logfile_copy[leftsquare - fn + 2]);
+    GNUNET_free (logfile_copy);
+  }
   if (0 == strcmp (fn, last_fn))
     return GNUNET_OK; /* no change */
   log_rotate (last_fn);