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);