#include <sys/stat.h>
#include <errno.h>
#include <pthread.h>
-#if defined(__APPLE__)
-#include <sys/types.h>
-#include <sys/sysctl.h>
-#endif
#include "util.h"
#include "log.h"
#include "libi3.h"
#include "shmlog.h"
+#if defined(__APPLE__)
+#include <sys/sysctl.h>
+#endif
+
static bool debug_logging = false;
static bool verbose = false;
static FILE *errorfile;
return;
}
+#if defined(__OpenBSD__) || defined(__APPLE__)
+ if (ftruncate(logbuffer_shm, logbuffer_size) == -1) {
+ fprintf(stderr, "Could not ftruncate SHM segment for the i3 log: %s\n", strerror(errno));
+#else
int ret;
if ((ret = posix_fallocate(logbuffer_shm, 0, logbuffer_size)) != 0) {
+ fprintf(stderr, "Could not ftruncate SHM segment for the i3 log: %s\n", strerror(ret));
+#endif
close(logbuffer_shm);
shm_unlink(shmlogname);
- fprintf(stderr, "Could not ftruncate SHM segment for the i3 log: %s\n", strerror(ret));
return;
}
/* If there is no space for the current message in the ringbuffer, we
* need to wrap and write to the beginning again. */
- if (len >= (logbuffer_size - (logwalk - logbuffer))) {
+ if (len >= (size_t)(logbuffer_size - (logwalk - logbuffer))) {
loglastwrap = logwalk;
logwalk = logbuffer + sizeof(i3_shmlog_header);
store_log_markers();