]> git.sur5r.net Git - i3/i3/blobdiff - i3-dump-log/main.c
make i3bar use libi3’s root_atom_contents()
[i3/i3] / i3-dump-log / main.c
index 48465c75718e696a44779638a5198f98c1e993dd..acb7fcb1f36308b64a2f075b038668c20f55f00c 100644 (file)
@@ -42,14 +42,19 @@ static int check_for_wrap(void) {
     /* The log wrapped. Print the remaining content and reset walk to the top
      * of the log. */
     wrap_count = header->wrap_count;
-    write(STDOUT_FILENO, walk, ((logbuffer + header->offset_last_wrap) - walk));
+    const int len = (logbuffer + header->offset_last_wrap) - walk;
+    if (write(STDOUT_FILENO, walk, len) != len)
+        err(EXIT_FAILURE, "write()");
     walk = logbuffer + sizeof(i3_shmlog_header);
     return 1;
 }
 
 static void print_till_end(void) {
     check_for_wrap();
-    int n = write(STDOUT_FILENO, walk, ((logbuffer + header->offset_next_write) - walk));
+    const int len = (logbuffer + header->offset_next_write) - walk;
+    const int n = write(STDOUT_FILENO, walk, len);
+    if (len != n)
+        err(EXIT_FAILURE, "write()");
     if (n > 0) {
         walk += n;
     }
@@ -85,7 +90,7 @@ int main(int argc, char *argv[]) {
         }
     }
 
-    char *shmname = root_atom_contents("I3_SHMLOG_PATH");
+    char *shmname = root_atom_contents("I3_SHMLOG_PATH", NULL, 0);
     if (shmname == NULL) {
         /* Something failed. Let’s invest a little effort to find out what it
          * is. This is hugely helpful for users who want to debug i3 but are
@@ -104,7 +109,7 @@ int main(int argc, char *argv[]) {
             fprintf(stderr, "FYI: The DISPLAY environment variable is set to \"%s\".\n", getenv("DISPLAY"));
             exit(1);
         }
-        if (root_atom_contents("I3_CONFIG_PATH") != NULL) {
+        if (root_atom_contents("I3_CONFIG_PATH", conn, screen) != NULL) {
             fprintf(stderr, "i3-dump-log: ERROR: i3 is running, but SHM logging is not enabled.\n\n");
             if (!is_debug_build()) {
                 fprintf(stderr, "You seem to be using a release version of i3:\n  %s\n\n", I3_VERSION);
@@ -121,7 +126,7 @@ int main(int argc, char *argv[]) {
 
     struct stat statbuf;
 
-    /* NB: While we must never read, we need O_RDWR for the pthread condvar. */
+    /* NB: While we must never write, we need O_RDWR for the pthread condvar. */
     int logbuffer_shm = shm_open(shmname, O_RDWR, 0);
     if (logbuffer_shm == -1)
         err(EXIT_FAILURE, "Could not shm_open SHM segment for the i3 log (%s)", shmname);
@@ -129,7 +134,7 @@ int main(int argc, char *argv[]) {
     if (fstat(logbuffer_shm, &statbuf) != 0)
         err(EXIT_FAILURE, "stat(%s)", shmname);
 
-    /* NB: While we must never read, we need O_RDWR for the pthread condvar. */
+    /* NB: While we must never write, we need PROT_WRITE for the pthread condvar. */
     logbuffer = mmap(NULL, statbuf.st_size, PROT_READ | PROT_WRITE, MAP_SHARED, logbuffer_shm, 0);
     if (logbuffer == MAP_FAILED)
         err(EXIT_FAILURE, "Could not mmap SHM segment for the i3 log");