Merge branch 'master' of https://github.com/jacereda/fsatrace into gcc
diff --git a/unix/fsatrace.c b/unix/fsatrace.c
index a298a77..2ad695c 100644
--- a/unix/fsatrace.c
+++ b/unix/fsatrace.c
@@ -31,6 +31,16 @@
close(fd);
}
+unsigned long
+hash(unsigned char *str)
+{
+ unsigned long h = 5381;
+ int c;
+ while ((c = *str++))
+ h = ((h << 5) + h) + c;
+ return h;
+}
+
int
main(int argc, char **argv)
{
@@ -47,7 +57,7 @@
return rc;
}
out = argv[1];
- snprintf(shname, sizeof(shname), "/%s", out);
+ snprintf(shname, sizeof(shname), "/%ld", hash((unsigned char *)out));
for (size_t i = 0, l = strlen(shname); i < l; i++)
if (shname[i] == '/')
shname[i] = '_';
@@ -69,7 +79,9 @@
execvp(argv[3], argv + 3);
assert(0);
}
- wait(&rc);
+ r = wait(&rc);
+ assert(r >= 0);
+ rc = WEXITSTATUS(rc);
if (!rc)
dump(out, buf);
munmap(buf, LOGSZ);