stagit

My fork of stagit

git clone git://git.shimmy1996.com/stagit.git
commit 2ff0c0d6c02dc0d7b5570d12895f12e0ccafd657
parent 6662b8ee42f0f31c163786d8ed4db2fbf32fdbca
Author: Hiltjo Posthuma <hiltjo@codemadness.org>
Date:   Sun, 19 Nov 2017 14:52:04 +0100

fix: add "fattr" pledge for chmod(2) for cachefile

improve checks for when head is NULL (empty repo)

Diffstat:
Mstagit.c | 12+++++-------
1 file changed, 5 insertions(+), 7 deletions(-)
diff --git a/stagit.c b/stagit.c
@@ -1003,7 +1003,7 @@ main(int argc, char *argv[])
 	size_t n;
 	int i, fd;
 
-	if (pledge("stdio rpath wpath cpath", NULL) == -1)
+	if (pledge("stdio rpath wpath cpath fattr", NULL) == -1)
 		err(1, "pledge");
 
 	for (i = 1; i < argc; i++) {
@@ -1017,6 +1017,8 @@ main(int argc, char *argv[])
 			cachefile = argv[++i];
 		}
 	}
+	if (!cachefile && pledge("stdio rpath wpath cpath", NULL) == -1)
+		err(1, "pledge");
 	if (!repodir)
 		usage(argv[0]);
 
@@ -1037,10 +1039,6 @@ main(int argc, char *argv[])
 		head = git_object_id(obj);
 	git_object_free(obj);
 
-	/* don't cache if there is no HEAD */
-	if (!head)
-		cachefile = NULL;
-
 	/* use directory name as name */
 	if ((name = strrchr(repodirabs, '/')))
 		name++;
@@ -1104,7 +1102,7 @@ main(int argc, char *argv[])
 	      "<td class=\"num\" align=\"right\"><b>+</b></td>"
 	      "<td class=\"num\" align=\"right\"><b>-</b></td></tr>\n</thead><tbody>\n", fp);
 
-	if (cachefile) {
+	if (cachefile && head) {
 		/* read from cache file (does not need to exist) */
 		if ((rcachefp = fopen(cachefile, "r"))) {
 			if (!fgets(lastoidstr, sizeof(lastoidstr), rcachefp))
@@ -1167,7 +1165,7 @@ main(int argc, char *argv[])
 	fclose(fp);
 
 	/* rename new cache file on success */
-	if (cachefile) {
+	if (cachefile && head) {
 		if (rename(tmppath, cachefile))
 			err(1, "rename: '%s' to '%s'", tmppath, cachefile);
 		umask((mask = umask(0)));