diff options
author | Corinna Vinschen <corinna@vinschen.de> | 2017-03-24 16:12:00 +0100 |
---|---|---|
committer | Corinna Vinschen <corinna@vinschen.de> | 2017-03-24 16:12:00 +0100 |
commit | 8d6a52287735c9f6d18f26569e5d04070162d83f (patch) | |
tree | 5e3a3db78bd1ec4bcd39d1ce9f0f9dc29eced019 | |
parent | 8259db586ae57134039f6a01344d4169021709ae (diff) | |
download | cygnal-8d6a52287735c9f6d18f26569e5d04070162d83f.tar.gz cygnal-8d6a52287735c9f6d18f26569e5d04070162d83f.tar.bz2 cygnal-8d6a52287735c9f6d18f26569e5d04070162d83f.zip |
cygserver: Seralize debug output to stdout to raise readability
Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
-rw-r--r-- | winsup/cygserver/bsd_log.cc | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/winsup/cygserver/bsd_log.cc b/winsup/cygserver/bsd_log.cc index f08415432..2ab352665 100644 --- a/winsup/cygserver/bsd_log.cc +++ b/winsup/cygserver/bsd_log.cc @@ -11,12 +11,16 @@ details. */ #define __BSD_VISIBLE 1 #include <stdio.h> #include <stdlib.h> +#include <libgen.h> int32_t log_level = 8; /* Illegal value. Don't change! */ tun_bool_t log_debug = TUN_UNDEF; tun_bool_t log_syslog = TUN_UNDEF; tun_bool_t log_stderr = TUN_UNDEF; +static CRITICAL_SECTION cs; +static bool cs_inited; + void loginit (tun_bool_t opt_stderr, tun_bool_t opt_syslog) { @@ -43,6 +47,8 @@ loginit (tun_bool_t opt_stderr, tun_bool_t opt_syslog) TUNABLE_INT_FETCH ("kern.log.level", &log_level); if (log_level == 8) log_level = 6; + InitializeCriticalSection (&cs); + cs_inited = true; } void @@ -63,8 +69,15 @@ _vlog (const char *file, int line, int level, syslog (level, buf); if (log_stderr == TUN_TRUE || level == LOG_DEBUG) { + if (!cs_inited) /* Only occurs in --help scenario */ + { + InitializeCriticalSection (&cs); + cs_inited = true; + } + EnterCriticalSection (&cs); fputs (buf, stderr); fputc ('\n', stderr); + LeaveCriticalSection (&cs); } } |