openlog-consistency-20060607
authorChaskiel M Grundman <cg2v@andrew.cmu.edu>
Wed, 7 Jun 2006 05:25:38 +0000 (05:25 +0000)
committerDerrick Brashear <shadow@dementia.org>
Wed, 7 Jun 2006 05:25:38 +0000 (05:25 +0000)
open logs consistently so assert logging is appended

acinclude.m4
src/util/serverLog.c

index fad4721..f9a7dab 100644 (file)
@@ -1044,7 +1044,8 @@ AC_SUBST(BUILD_LOGIN)
 
 AC_CHECK_FUNCS(utimes random srandom getdtablesize snprintf strlcat strlcpy re_comp re_exec)
 AC_CHECK_FUNCS(setprogname getprogname sigaction mkstemp vsnprintf strerror strcasestr)
-
+AC_CHECK_FUNCS(setvbuf)
+AC_FUNC_SETVBUF_REVERSED
 AC_CHECK_FUNCS(regcomp regexec regerror)
 AC_MSG_CHECKING([for POSIX regex library])
 if test "$ac_cv_header_regex_h" = "yes" && \
index 15b0895..e549517 100644 (file)
@@ -313,20 +313,24 @@ OpenLog(const char *fileName)
        printf("Unable to open log file %s\n", fileName);
        return -1;
     }
-#if defined(AFS_PTHREAD_ENV)
     /* redirect stdout and stderr so random printf's don't write to data */
-    assert(freopen(NULLDEV, "w", stdout) != NULL);
-    assert(freopen(NULLDEV, "w", stderr) != NULL);
+    (void)freopen(fileName, "a", stdout);
+    (void)freopen(fileName, "a", stderr);
+#ifdef HAVE_SETVBUF
+#ifdef SETVBUF_REVERSED
+    setvbuf(stderr, _IONBF, NULL, 0);
+#else
+    setvbuf(stderr, NULL, _IONBF, 0);
+#endif
+#else
+    setbuf(stderr, NULL);
+#endif
 
+#if defined(AFS_PTHREAD_ENV)
     assert(pthread_mutex_init(&serverLogMutex, NULL) == 0);
+#endif /* AFS_PTHREAD_ENV */
 
     serverLogFD = tempfd;
-#else
-    close(tempfd);             /* just checking.... */
-    (void)freopen(fileName, "w", stdout);
-    (void)freopen(fileName, "w", stderr);
-    serverLogFD = fileno(stdout);
-#endif /* AFS_PTHREAD_ENV */
 
     return 0;
 }                              /*OpenLog */
@@ -356,27 +360,24 @@ ReOpenLog(const char *fileName)
     }
 #endif
 
-#if defined(AFS_PTHREAD_ENV)
     LOCK_SERVERLOG();
     if (serverLogFD > 0)
        close(serverLogFD);
     serverLogFD = open(fileName, O_WRONLY | O_APPEND | O_CREAT | (isfifo?O_NONBLOCK:0), 0666);
-    UNLOCK_SERVERLOG();
-    return serverLogFD < 0 ? -1 : 0;
+    if (serverLogFD > 0) {
+       (void)freopen(fileName, "a", stdout);
+       (void)freopen(fileName, "a", stderr);
+#ifdef HAVE_SETVBUF
+#ifdef SETVBUF_REVERSED
+       setvbuf(stderr, _IONBF, NULL, 0);
 #else
+       setvbuf(stderr, NULL, _IONBF, 0);
+#endif
+#else
+       setbuf(stderr, NULL);
+#endif
 
-    tempfd = open(fileName, O_WRONLY | O_APPEND | O_CREAT | (isfifo?O_NONBLOCK:0), 0666);
-    if (tempfd < 0) {
-       printf("Unable to open log file %s\n", fileName);
-       return -1;
     }
-    close(tempfd);
-
-    (void)freopen(fileName, "a", stdout);
-    (void)freopen(fileName, "a", stderr);
-    serverLogFD = fileno(stdout);
-
-
-    return 0;
-#endif /* AFS_PTHREAD_ENV */
+    UNLOCK_SERVERLOG();
+    return serverLogFD < 0 ? -1 : 0;
 }