about summary refs log tree commit diff stats
path: root/src
diff options
context:
space:
mode:
authorptitSeb <sebastien.chev@gmail.com>2021-11-01 11:28:17 +0100
committerptitSeb <sebastien.chev@gmail.com>2021-11-01 11:28:17 +0100
commit5494d417c03b862a6115a133051bbe41b57b0963 (patch)
treea580368ad4103614a10461dafdaaba496cd1c161 /src
parent472037cba26d367b0e8b8c33a8890c87d13158c6 (diff)
downloadbox64-5494d417c03b862a6115a133051bbe41b57b0963.tar.gz
box64-5494d417c03b862a6115a133051bbe41b57b0963.zip
[DEBUG] Don't overwrite trace if %pid is used
Diffstat (limited to 'src')
-rwxr-xr-xsrc/main.c23
1 files changed, 15 insertions, 8 deletions
diff --git a/src/main.c b/src/main.c
index ec50a1e3..7cb84b43 100755
--- a/src/main.c
+++ b/src/main.c
@@ -93,14 +93,21 @@ void openFTrace()
     char tmp[500];
     char* p = t;
     if(p && strstr(t, "%pid")) {
-        strcpy(tmp, p);
-        char* c = strstr(tmp, "%pid");
-        *c = 0; // cut
-        char pid[10];
-        sprintf(pid, "%d", getpid());
-        strcat(tmp, pid);
-        c = strstr(p, "%pid") + strlen("%pid");
-        strcat(tmp, c);
+        int next = 0;
+        do {
+            strcpy(tmp, p);
+            char* c = strstr(tmp, "%pid");
+            *c = 0; // cut
+            char pid[16];
+            if(next)
+                sprintf(pid, "%d-%d", getpid(), next);
+            else
+                sprintf(pid, "%d", getpid());
+            strcat(tmp, pid);
+            c = strstr(p, "%pid") + strlen("%pid");
+            strcat(tmp, c);
+            ++next;
+        } while (FileExist(tmp, IS_FILE));
         p = tmp;
         ftrace_has_pid = 1;
     }