From aac862e2797e9a05c64a872850bb2e9f304d6e13 Mon Sep 17 00:00:00 2001 From: Bent Bisballe Nyeng Date: Thu, 12 Apr 2012 10:05:31 +0200 Subject: New mutex wrapped debug system. --- server/src/debug.cc | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) (limited to 'server/src/debug.cc') diff --git a/server/src/debug.cc b/server/src/debug.cc index d3e74e8..e42baae 100644 --- a/server/src/debug.cc +++ b/server/src/debug.cc @@ -36,6 +36,10 @@ #include +#include "mutex.h" + +static Mutex mutex; + static unsigned int gettid() { return (unsigned int)pthread_self(); @@ -76,6 +80,7 @@ int __debug(const char *func, const int line, const enum __debug_class cl, const char *ch, const char *fmt, ...) { + MutexAutolock m(mutex); int ret = 0; if(__debug_enabled(cl, ch)) { if((unsigned)cl < NELEM(debug_class_str)) @@ -98,6 +103,7 @@ int __debug_va(const char *func, const int line, const enum __debug_class cl, const char *ch, const char *fmt, va_list va) { + MutexAutolock m(mutex); int ret = 0; if(__debug_enabled(cl, ch)) { if((unsigned)cl < NELEM(debug_class_str)) @@ -117,6 +123,8 @@ int __debug_va(const char *func, const int line, int __log(const char *func, const int line, const enum __debug_class cl, const char *ch, const char *fmt, ...) { + MutexAutolock m(mutex); + std::string logmsg; char str[8]; @@ -157,6 +165,8 @@ int __log(const char *func, const int line, const enum __debug_class cl, int __log_va(const char *func, const int line, const enum __debug_class cl, const char *ch, const char *fmt, va_list va) { + MutexAutolock m(mutex); + std::string logmsg; char str[8]; #ifdef WITH_DEBUG @@ -190,9 +200,25 @@ int __log_va(const char *func, const int line, const enum __debug_class cl, void debug_init(FILE *fp) { + mutex.name = "debug"; + MutexAutolock m(mutex); logfp = fp; } +void debug_reinit(const char *logfile) +{ + MutexAutolock m(mutex); + + if(logfp != stderr) { + fclose(logfp); + logfp = fopen(logfile, "a"); + if(!logfp) { + fprintf(stderr, "Could not write to logfile: '%s'\n", logfile); + logfp = stderr; + } + } +} + /* * fmt := [set[,set]*]* @@ -202,6 +228,7 @@ void debug_init(FILE *fp) */ void debug_parse(const char *fmt) { + MutexAutolock m(mutex); char *s; char *next; char *opt; -- cgit v1.2.3