]> git.sur5r.net Git - i3/i3/blobdiff - src/sighandler.c
Send IPC window events for focus and title changes
[i3/i3] / src / sighandler.c
index c951ea9d0c1abdd050661d9391518f12c357c00a..a458b4a6d4fe19855af0fc25b7040647386f62e7 100644 (file)
@@ -52,7 +52,15 @@ static int backtrace(void) {
     pid_t pid_parent = getpid();
 
     char *filename = NULL;
-    sasprintf(&filename, "%s/i3-backtrace.%d.txt", tmpdir, pid_parent);
+    int suffix = 0;
+    struct stat bt;
+    /* Find a unique filename for the backtrace (since the PID of i3 stays the
+     * same), so that we don’t overwrite earlier backtraces. */
+    do {
+        FREE(filename);
+        sasprintf(&filename, "%s/i3-backtrace.%d.%d.txt", tmpdir, pid_parent, suffix);
+        suffix++;
+    } while (stat(filename, &bt) == 0);
 
     pid_t pid_gdb = fork();
     if (pid_gdb < 0) {
@@ -101,7 +109,6 @@ static int backtrace(void) {
         exit(1);
     }
     int status = 0;
-    struct stat bt;
 
     waitpid(pid_gdb, &status, 0);
 
@@ -110,7 +117,7 @@ static int backtrace(void) {
         DLOG("GDB did not run properly\n");
         return -1;
     } else if (stat(filename, &bt) == -1) {
-        DLOG("GDB executed succesfully, but no backtrace was generated\n");
+        DLOG("GDB executed successfully, but no backtrace was generated\n");
         return -1;
     }
     return 1;