gnunet-svn
[Top][All Lists]
Advanced

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

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


From: gnunet
Subject: [GNUnet-SVN] r18474 - gnunet/src/util
Date: Tue, 6 Dec 2011 19:06:13 +0100

Author: grothoff
Date: 2011-12-06 19:06:13 +0100 (Tue, 06 Dec 2011)
New Revision: 18474

Modified:
   gnunet/src/util/common_logging.c
Log:
LRN: Ensure that GTK can then do the internal call write(2, message, strlen
(message)); successfully by default.



Modified: gnunet/src/util/common_logging.c
===================================================================
--- gnunet/src/util/common_logging.c    2011-12-06 17:58:40 UTC (rev 18473)
+++ gnunet/src/util/common_logging.c    2011-12-06 18:06:13 UTC (rev 18474)
@@ -546,6 +546,7 @@
   int dirwarn;
   char *fn;
   const char *env_logfile = NULL;
+  int altlog_fd;
 
   min_level = get_type (loglevel);
 #if !defined(GNUNET_CULL_LOGGING)
@@ -569,9 +570,34 @@
   if (NULL == fn)
     return GNUNET_SYSERR;
   dirwarn = (GNUNET_OK != GNUNET_DISK_directory_create_for_file (fn));
-  altlog = FOPEN (fn, "a");
-  if (altlog == NULL)
+  altlog_fd = OPEN (fn, O_APPEND |
+#if WINDOWS
+                        O_BINARY |
+#endif
+                        O_WRONLY);
+  if (altlog_fd != -1)
   {
+    int dup_return;
+    if (GNUNET_stderr != NULL)
+      fclose (GNUNET_stderr);
+    dup_return = dup2 (altlog_fd, 2);
+    close (altlog_fd);
+    if (dup_return != -1)
+    {
+      altlog = fdopen (2, "ab");
+      if (altlog == NULL)
+      {
+        close (2);
+        altlog_fd = -1;
+      }
+    }
+    else
+    {
+      altlog_fd = -1;
+    }
+  }
+  if (altlog_fd == -1)
+  {
     GNUNET_log_strerror_file (GNUNET_ERROR_TYPE_ERROR, "fopen", fn);
     if (dirwarn)
       GNUNET_log (GNUNET_ERROR_TYPE_WARNING,
@@ -581,8 +607,6 @@
     return GNUNET_SYSERR;
   }
   GNUNET_free (fn);
-  if (GNUNET_stderr != NULL)
-    fclose (GNUNET_stderr);
   GNUNET_stderr = altlog;
   return GNUNET_OK;
 }




reply via email to

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