Add generic LOGPRINT macro helper which locks
authorSteve McIntyre <steve@einval.com>
Wed, 11 May 2011 20:25:57 +0000 (21:25 +0100)
committerSteve McIntyre <steve@einval.com>
Wed, 11 May 2011 20:25:57 +0000 (21:25 +0100)
C/misc.c
C/misc.h

index 918aed8..c9a6e87 100644 (file)
--- a/C/misc.c
+++ b/C/misc.c
@@ -4,6 +4,18 @@
 #include <stdio.h>
 #include "misc.h"
 
+static pthread_mutex_t log_mutex = PTHREAD_MUTEX_INITIALIZER;
+
+void log_lock(void)
+{
+    pthread_mutex_lock(&log_mutex);
+}
+
+void log_unlock(void)
+{
+    pthread_mutex_unlock(&log_mutex);
+}
+
 char *strip_leading_path(const char *path, const char *lead)
 {
     char *ret = (char *)path;
index b4443ca..8435097 100644 (file)
--- a/C/misc.h
+++ b/C/misc.h
@@ -1,10 +1,22 @@
 #ifndef MISC_H
 #define MISC_H
 
+#include <pthread.h>
+#include <stdio.h>
+
 extern FILE *logfile;
 
+#define LOGPRINT(x) do { \
+    log_lock(); \
+    fprintf x; \
+    log_unlock(); \
+} while (0);
+
 char *strip_leading_path(const char *path, const char *lead);
 time_t file_mtime(const char *path);
 ssize_t file_size(const char *path);
+void log_lock(void);
+void log_unlock(void);
+
 
 #endif /* MISC_H */