stagit

fix joinpath(): use of global 'repodir', should be 'path'

use joinpath for another case.

Hiltjo Posthuma contact@arjunchoudhary.com

commit: a6be3ab parent: c239338
2 files changed, 29 insertions(+), 34 deletions(-)
Mstagit-index.c+12-12
Mstagit.c+17-22
M · stagit-index.c +12, -12
 1@@ -30,6 +30,18 @@ pledge(const char *promises, const char *paths[])
 2 }
 3 #endif
 4 
 5+void
 6+joinpath(char *buf, size_t bufsiz, const char *path, const char *path2)
 7+{
 8+	int r;
 9+
10+	r = snprintf(buf, bufsiz, "%s%s%s",
11+		path, path[0] && path[strlen(path) - 1] != '/' ? "/" : "", path2);
12+	if (r == -1 || (size_t)r >= bufsiz)
13+		errx(1, "path truncated: '%s%s%s'",
14+			path, path[0] && path[strlen(path) - 1] != '/' ? "/" : "", path2);
15+}
16+
17 /* Escape characters below as HTML 2.0 / XML 1.0. */
18 void
19 xmlencode(FILE *fp, const char *s, size_t len)
20@@ -139,18 +151,6 @@ err:
21 	return ret;
22 }
23 
24-void
25-joinpath(char *buf, size_t bufsiz, const char *path, const char *path2)
26-{
27-	int r;
28-
29-	r = snprintf(buf, bufsiz, "%s%s%s",
30-		repodir, path[0] && path[strlen(path) - 1] != '/' ? "/" : "", path2);
31-	if (r == -1 || (size_t)r >= bufsiz)
32-		errx(1, "path truncated: '%s%s%s'",
33-			path, path[0] && path[strlen(path) - 1] != '/' ? "/" : "", path2);
34-}
35-
36 int
37 main(int argc, char *argv[])
38 {
M · stagit.c +17, -22
 1@@ -76,6 +76,18 @@ pledge(const char *promises, const char *paths[])
 2 }
 3 #endif
 4 
 5+void
 6+joinpath(char *buf, size_t bufsiz, const char *path, const char *path2)
 7+{
 8+	int r;
 9+
10+	r = snprintf(buf, bufsiz, "%s%s%s",
11+		path, path[0] && path[strlen(path) - 1] != '/' ? "/" : "", path2);
12+	if (r == -1 || (size_t)r >= bufsiz)
13+		errx(1, "path truncated: '%s%s%s'",
14+			path, path[0] && path[strlen(path) - 1] != '/' ? "/" : "", path2);
15+}
16+
17 void
18 deltainfo_free(struct deltainfo *di)
19 {
20@@ -796,17 +808,12 @@ writefilestree(FILE *fp, git_tree *tree, const char *branch, const char *path)
21 		if (!(entry = git_tree_entry_byindex(tree, i)) ||
22 		    !(entryname = git_tree_entry_name(entry)))
23 			return -1;
24-		r = snprintf(entrypath, sizeof(entrypath), "%s%s%s",
25-			 path, path[0] ? "/" : "", entryname);
26-		if (r == -1 || (size_t)r >= sizeof(entrypath))
27-			errx(1, "path truncated: '%s%s%s'",
28-			        path, path[0] ? "/" : "", entryname);
29-
30-		r = snprintf(filepath, sizeof(filepath), "file/%s%s%s.html",
31-		         path, path[0] ? "/" : "", entryname);
32+		joinpath(entrypath, sizeof(entrypath), path, entryname);
33+
34+		r = snprintf(filepath, sizeof(filepath), "file/%s.html",
35+		         entrypath);
36 		if (r == -1 || (size_t)r >= sizeof(filepath))
37-			errx(1, "path truncated: 'file/%s%s%s.html'",
38-			        path, path[0] ? "/" : "", entryname);
39+			errx(1, "path truncated: 'file/%s.html'", entrypath);
40 
41 		if (!git_tree_entry_to_object(&obj, repo, entry)) {
42 			switch (git_object_type(obj)) {
43@@ -990,18 +997,6 @@ err:
44 	return 0;
45 }
46 
47-void
48-joinpath(char *buf, size_t bufsiz, const char *path, const char *path2)
49-{
50-	int r;
51-
52-	r = snprintf(buf, bufsiz, "%s%s%s",
53-		repodir, path[0] && path[strlen(path) - 1] != '/' ? "/" : "", path2);
54-	if (r == -1 || (size_t)r >= bufsiz)
55-		errx(1, "path truncated: '%s%s%s'",
56-			path, path[0] && path[strlen(path) - 1] != '/' ? "/" : "", path2);
57-}
58-
59 void
60 usage(char *argv0)
61 {