garbash-stagit

garbash fork of stagit for git hosting with subdirs
git clone git://git.alexkarle.com.com/garbash-stagit
Log | Files | Refs | README | LICENSE

commit 2ff0c0d6c02dc0d7b5570d12895f12e0ccafd657 (patch)
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)));