Welcome to mirror list, hosted at ThFree Co, Russian Federation.

cygwin.com/git/newlib-cygwin.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/winsup
diff options
context:
space:
mode:
authorCorinna Vinschen <corinna@vinschen.de>2017-03-24 18:12:00 +0300
committerCorinna Vinschen <corinna@vinschen.de>2017-03-24 18:12:00 +0300
commit8d6a52287735c9f6d18f26569e5d04070162d83f (patch)
tree5e3a3db78bd1ec4bcd39d1ce9f0f9dc29eced019 /winsup
parent8259db586ae57134039f6a01344d4169021709ae (diff)
cygserver: Seralize debug output to stdout to raise readability
Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
Diffstat (limited to 'winsup')
-rw-r--r--winsup/cygserver/bsd_log.cc13
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);
}
}