]> git.sur5r.net Git - i3/i3/blobdiff - src/log.c
layout restoring: append at the nearest split container (or workspace) (Thanks chris)
[i3/i3] / src / log.c
index 68131af88daae542cd9f2c792bf1e2a3331c8768..ec44f3ae963804fada28edff9ead570837ba6e05 100644 (file)
--- a/src/log.c
+++ b/src/log.c
@@ -129,10 +129,16 @@ void open_logbuffer(void) {
             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(errno));
             return;
         }
 
@@ -180,6 +186,14 @@ void set_verbosity(bool _verbose) {
     verbose = _verbose;
 }
 
+/*
+ * Get debug logging.
+ *
+ */
+bool get_debug_logging(void) {
+    return debug_logging;
+}
+
 /*
  * Set debug logging.
  *
@@ -236,7 +250,7 @@ static void vlog(const bool print, const char *fmt, va_list args) {
 
         /* 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();