fix joinpath(): use of global 'repodir', should be 'path'
use joinpath for another case.
2 files changed, 29 insertions(+), 34 deletions(-) | |||
---|---|---|---|
M | stagit-index.c | +12 | -12 |
M | stagit.c | +17 | -22 |
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 {