X-Git-Url: https://git.sur5r.net/?a=blobdiff_plain;f=src%2Flog.c;h=7cf988438063ca5df2aaacce329e7d1e35224cb6;hb=884214f14fdbd0a4a368d2a36d5e50324fa1d52a;hp=ec44f3ae963804fada28edff9ead570837ba6e05;hpb=c23db20cb56847305bd8b6b362b8623e9e81db69;p=i3%2Fi3 diff --git a/src/log.c b/src/log.c index ec44f3ae..7cf98843 100644 --- a/src/log.c +++ b/src/log.c @@ -4,7 +4,7 @@ * vim:ts=4:sw=4:expandtab * * i3 - an improved dynamic tiling window manager - * © 2009-2011 Michael Stapelberg and contributors (see also: LICENSE) + * © 2009 Michael Stapelberg and contributors (see also: LICENSE) * * log.c: Logging functions. * @@ -21,10 +21,6 @@ #include #include #include -#if defined(__APPLE__) -#include -#include -#endif #include "util.h" #include "log.h" @@ -32,6 +28,10 @@ #include "libi3.h" #include "shmlog.h" +#if defined(__APPLE__) +#include +#endif + static bool debug_logging = false; static bool verbose = false; static FILE *errorfile; @@ -92,11 +92,11 @@ void init_logging(void) { /* Start SHM logging if shmlog_size is > 0. shmlog_size is SHMLOG_SIZE by * default on development versions, and 0 on release versions. If it is * not > 0, the user has turned it off, so let's close the logbuffer. */ - if (shmlog_size > 0 && logbuffer == NULL) + if (shmlog_size > 0 && logbuffer == NULL) open_logbuffer(); - else if (shmlog_size <= 0 && logbuffer) + else if (shmlog_size <= 0 && logbuffer) close_logbuffer(); - atexit(purge_zerobyte_logfile); + atexit(purge_zerobyte_logfile); } /* @@ -104,65 +104,65 @@ void init_logging(void) { * */ void open_logbuffer(void) { - /* Reserve 1% of the RAM for the logfile, but at max 25 MiB. + /* Reserve 1% of the RAM for the logfile, but at max 25 MiB. * For 512 MiB of RAM this will lead to a 5 MiB log buffer. * At the moment (2011-12-10), no testcase leads to an i3 log * of more than ~ 600 KiB. */ - long long physical_mem_bytes; + long long physical_mem_bytes; #if defined(__APPLE__) - int mib[2] = { CTL_HW, HW_MEMSIZE }; - size_t length = sizeof(long long); - sysctl(mib, 2, &physical_mem_bytes, &length, NULL, 0); + int mib[2] = {CTL_HW, HW_MEMSIZE}; + size_t length = sizeof(long long); + sysctl(mib, 2, &physical_mem_bytes, &length, NULL, 0); #else - physical_mem_bytes = (long long)sysconf(_SC_PHYS_PAGES) * - sysconf(_SC_PAGESIZE); + physical_mem_bytes = (long long)sysconf(_SC_PHYS_PAGES) * + sysconf(_SC_PAGESIZE); #endif - logbuffer_size = min(physical_mem_bytes * 0.01, shmlog_size); + logbuffer_size = min(physical_mem_bytes * 0.01, shmlog_size); #if defined(__FreeBSD__) - sasprintf(&shmlogname, "/tmp/i3-log-%d", getpid()); + sasprintf(&shmlogname, "/tmp/i3-log-%d", getpid()); #else - sasprintf(&shmlogname, "/i3-log-%d", getpid()); + sasprintf(&shmlogname, "/i3-log-%d", getpid()); #endif - logbuffer_shm = shm_open(shmlogname, O_RDWR | O_CREAT, S_IREAD | S_IWRITE); - if (logbuffer_shm == -1) { - fprintf(stderr, "Could not shm_open SHM segment for the i3 log: %s\n", strerror(errno)); - return; - } + logbuffer_shm = shm_open(shmlogname, O_RDWR | O_CREAT, S_IREAD | S_IWRITE); + if (logbuffer_shm == -1) { + fprintf(stderr, "Could not shm_open SHM segment for the i3 log: %s\n", strerror(errno)); + 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)); + 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)); + 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); - return; - } + close(logbuffer_shm); + shm_unlink(shmlogname); + return; + } - logbuffer = mmap(NULL, logbuffer_size, PROT_READ | PROT_WRITE, MAP_SHARED, logbuffer_shm, 0); - if (logbuffer == MAP_FAILED) { - close_logbuffer(); - fprintf(stderr, "Could not mmap SHM segment for the i3 log: %s\n", strerror(errno)); - return; - } + logbuffer = mmap(NULL, logbuffer_size, PROT_READ | PROT_WRITE, MAP_SHARED, logbuffer_shm, 0); + if (logbuffer == MAP_FAILED) { + close_logbuffer(); + fprintf(stderr, "Could not mmap SHM segment for the i3 log: %s\n", strerror(errno)); + return; + } - /* Initialize with 0-bytes, just to be sure… */ - memset(logbuffer, '\0', logbuffer_size); + /* Initialize with 0-bytes, just to be sure… */ + memset(logbuffer, '\0', logbuffer_size); - header = (i3_shmlog_header*)logbuffer; + header = (i3_shmlog_header *)logbuffer; - 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); + 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); - logwalk = logbuffer + sizeof(i3_shmlog_header); - loglastwrap = logbuffer + logbuffer_size; - store_log_markers(); + logwalk = logbuffer + sizeof(i3_shmlog_header); + loglastwrap = logbuffer + logbuffer_size; + store_log_markers(); } /*