summaryrefslogtreecommitdiff
path: root/server/src/debug.cc
diff options
context:
space:
mode:
Diffstat (limited to 'server/src/debug.cc')
-rw-r--r--server/src/debug.cc27
1 files changed, 27 insertions, 0 deletions
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 <pthread.h>
+#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;