gnunet-svn
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[GNUnet-SVN] r37223 - gnunet/src/util


From: gnunet
Subject: [GNUnet-SVN] r37223 - gnunet/src/util
Date: Wed, 1 Jun 2016 19:08:49 +0200

Author: grothoff
Date: 2016-06-01 19:08:49 +0200 (Wed, 01 Jun 2016)
New Revision: 37223

Modified:
   gnunet/src/util/common_logging.c
   gnunet/src/util/disk.c
Log:
fix #4545: create directory for log file if it does not exist

Modified: gnunet/src/util/common_logging.c
===================================================================
--- gnunet/src/util/common_logging.c    2016-06-01 17:02:18 UTC (rev 37222)
+++ gnunet/src/util/common_logging.c    2016-06-01 17:08:49 UTC (rev 37223)
@@ -25,6 +25,7 @@
  */
 #include "platform.h"
 #include "gnunet_crypto_lib.h"
+#include "gnunet_disk_lib.h"
 #include "gnunet_strings_lib.h"
 #include <regex.h>
 
@@ -357,6 +358,15 @@
     return GNUNET_OK; /* no change */
   log_rotate (last_fn);
   strcpy (last_fn, fn);
+  if (GNUNET_SYSERR ==
+      GNUNET_DISK_directory_create_for_file (fn))
+  {
+    fprintf (stderr,
+             "Failed to create directory for `%s': %s\n",
+             fn,
+             STRERROR (errno));
+    return GNUNET_SYSERR;
+  }
 #if WINDOWS
   altlog_fd = OPEN (fn, O_APPEND |
                         O_BINARY |

Modified: gnunet/src/util/disk.c
===================================================================
--- gnunet/src/util/disk.c      2016-06-01 17:02:18 UTC (rev 37222)
+++ gnunet/src/util/disk.c      2016-06-01 17:08:49 UTC (rev 37223)
@@ -814,23 +814,30 @@
   char *rdir;
   size_t len;
   int ret;
+  int eno;
 
   rdir = GNUNET_STRINGS_filename_expand (filename);
-  if (rdir == NULL)
+  if (NULL == rdir)
+  {
+    errno = EINVAL;
     return GNUNET_SYSERR;
+  }
   len = strlen (rdir);
   while ((len > 0) && (rdir[len] != DIR_SEPARATOR))
     len--;
   rdir[len] = '\0';
   /* The empty path is invalid and in this case refers to / */
-  if (0 == len) {
+  if (0 == len)
+  {
     GNUNET_free (rdir);
     rdir = GNUNET_strdup ("/");
   }
   ret = GNUNET_DISK_directory_create (rdir);
-  if ((ret == GNUNET_OK) && (0 != ACCESS (rdir, W_OK)))
+  if ((GNUNET_OK == ret) && (0 != ACCESS (rdir, W_OK)))
     ret = GNUNET_NO;
+  eno = errno;
   GNUNET_free (rdir);
+  errno = eno;
   return ret;
 }
 




reply via email to

[Prev in Thread] Current Thread [Next in Thread]