-#undef I3__FILE__
-#define I3__FILE__ "log.c"
/*
* vim:ts=4:sw=4:expandtab
*
* log.c: Logging functions.
*
*/
+#include <config.h>
+
#include <stdarg.h>
#include <stdio.h>
#include <string.h>
#include <sys/mman.h>
#include <sys/stat.h>
#include <errno.h>
+#if !defined(__OpenBSD__)
#include <pthread.h>
+#endif
#include "util.h"
#include "log.h"
fprintf(stderr, "Could not initialize errorlog\n");
else {
errorfile = fopen(errorfilename, "w");
- if (fcntl(fileno(errorfile), F_SETFD, FD_CLOEXEC)) {
- fprintf(stderr, "Could not set close-on-exec flag\n");
+ if (!errorfile) {
+ fprintf(stderr, "Could not initialize errorlog on %s: %s\n",
+ errorfilename, strerror(errno));
+ } else {
+ if (fcntl(fileno(errorfile), F_SETFD, FD_CLOEXEC)) {
+ fprintf(stderr, "Could not set close-on-exec flag\n");
+ }
}
}
}
header = (i3_shmlog_header *)logbuffer;
+#if !defined(__OpenBSD__)
pthread_condattr_t cond_attr;
pthread_condattr_init(&cond_attr);
if (pthread_condattr_setpshared(&cond_attr, PTHREAD_PROCESS_SHARED) != 0)
fprintf(stderr, "pthread_condattr_setpshared() failed, i3-dump-log -f will not work!\n");
pthread_cond_init(&(header->condvar), &cond_attr);
+#endif
logwalk = logbuffer + sizeof(i3_shmlog_header);
loglastwrap = logbuffer + logbuffer_size;
store_log_markers();
+#if !defined(__OpenBSD__)
/* Wake up all (i3-dump-log) processes waiting for condvar. */
pthread_cond_broadcast(&(header->condvar));
+#endif
if (print)
fwrite(message, len, 1, stdout);