From: Chaskiel M Grundman Date: Wed, 7 Jun 2006 05:27:17 +0000 (+0000) Subject: STABLE14-openlog-consistency-20060607 X-Git-Tag: openafs-stable-1_4_2-beta1~6 X-Git-Url: https://git.michaelhowe.org/gitweb/?a=commitdiff_plain;h=c9b812ccb3aa91180aee689b17b7d7bd5f3bcef8;p=packages%2Fo%2Fopenafs.git STABLE14-openlog-consistency-20060607 open logs consistently so assert logging is appended (cherry picked from commit ed9a2181217f19b7ddbfe28118f6fb2f700b08ad) --- diff --git a/acinclude.m4 b/acinclude.m4 index fc30438f0..088bccdf2 100644 --- a/acinclude.m4 +++ b/acinclude.m4 @@ -1008,7 +1008,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" && \ diff --git a/src/util/serverLog.c b/src/util/serverLog.c index b6b488987..9b47aada4 100644 --- a/src/util/serverLog.c +++ b/src/util/serverLog.c @@ -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; }