iresolve absolute paths to repodir, remove basename just use strrchr. - stagit-gopher - A git gopher frontend. (mirror) Err bitreich.org 70 hgit clone git://bitreich.org/stagit-gopher/ git://enlrupgkhuxnvlhsf6lc3fziv5h2hhfrinws65d7roiv6bfj7d652fid.onion/stagit-gopher/ URL:git://bitreich.org/stagit-gopher/ git://enlrupgkhuxnvlhsf6lc3fziv5h2hhfrinws65d7roiv6bfj7d652fid.onion/stagit-gopher/ bitreich.org 70 1Log /scm/stagit-gopher/log.gph bitreich.org 70 1Files /scm/stagit-gopher/files.gph bitreich.org 70 1Refs /scm/stagit-gopher/refs.gph bitreich.org 70 1Tags /scm/stagit-gopher/tag bitreich.org 70 1README /scm/stagit-gopher/file/README.gph bitreich.org 70 1LICENSE /scm/stagit-gopher/file/LICENSE.gph bitreich.org 70 i--- Err bitreich.org 70 1commit 8df54926f2ad80ae46a4cc701f3341e97839e0c8 /scm/stagit-gopher/commit/8df54926f2ad80ae46a4cc701f3341e97839e0c8.gph bitreich.org 70 1parent 70b777831a80a7a204f02697563d39dba612c8c4 /scm/stagit-gopher/commit/70b777831a80a7a204f02697563d39dba612c8c4.gph bitreich.org 70 hAuthor: Hiltjo Posthuma URL:mailto:hiltjo@codemadness.org bitreich.org 70 iDate: Wed, 27 Apr 2016 19:19:50 +0200 Err bitreich.org 70 i Err bitreich.org 70 iresolve absolute paths to repodir, remove basename just use strrchr. Err bitreich.org 70 i Err bitreich.org 70 i- resolve repodir, for example: stagit-index ../ used to use ".." as the name, Err bitreich.org 70 i now it will resolve to the real directory name. Err bitreich.org 70 i- just use strrchr(path, '/') instead of basename, '/' path separator is now Err bitreich.org 70 i used. Err bitreich.org 70 i Err bitreich.org 70 iDiffstat: Err bitreich.org 70 i M stagit-index.c | 37 ++++++++----------------------- Err bitreich.org 70 i M stagit.c | 32 ++++++++----------------------- Err bitreich.org 70 i Err bitreich.org 70 i2 files changed, 17 insertions(+), 52 deletions(-) Err bitreich.org 70 i--- Err bitreich.org 70 1diff --git a/stagit-index.c b/stagit-index.c /scm/stagit-gopher/file/stagit-index.c.gph bitreich.org 70 i@@ -3,7 +3,6 @@ Err bitreich.org 70 i #include Err bitreich.org 70 i #include Err bitreich.org 70 i #include Err bitreich.org 70 i-#include Err bitreich.org 70 i #include Err bitreich.org 70 i #include Err bitreich.org 70 i #include Err bitreich.org 70 i@@ -21,7 +20,7 @@ static const char *relpath = ""; Err bitreich.org 70 i static const char *repodir; Err bitreich.org 70 i Err bitreich.org 70 i static char description[255] = "Repositories"; Err bitreich.org 70 i-static char name[255]; Err bitreich.org 70 i+static char *name = ""; Err bitreich.org 70 i static char owner[255]; Err bitreich.org 70 i Err bitreich.org 70 i /* Escape characters below as HTML 2.0 / XML 1.0. */ Err bitreich.org 70 i@@ -42,27 +41,6 @@ xmlencode(FILE *fp, const char *s, size_t len) Err bitreich.org 70 i } Err bitreich.org 70 i } Err bitreich.org 70 i Err bitreich.org 70 i-/* Some implementations of basename(3) return a pointer to a static Err bitreich.org 70 i- * internal buffer (OpenBSD). Others modify the contents of `path` (POSIX). Err bitreich.org 70 i- * This is a wrapper function that is compatible with both versions. Err bitreich.org 70 i- * The program will error out if basename(3) failed, this can only happen Err bitreich.org 70 i- * with the OpenBSD version. */ Err bitreich.org 70 i-char * Err bitreich.org 70 i-xbasename(const char *path) Err bitreich.org 70 i-{ Err bitreich.org 70 i- char *p, *b; Err bitreich.org 70 i- Err bitreich.org 70 i- if (!(p = strdup(path))) Err bitreich.org 70 i- err(1, "strdup"); Err bitreich.org 70 i- if (!(b = basename(p))) Err bitreich.org 70 i- err(1, "basename"); Err bitreich.org 70 i- if (!(b = strdup(b))) Err bitreich.org 70 i- err(1, "strdup"); Err bitreich.org 70 i- free(p); Err bitreich.org 70 i- Err bitreich.org 70 i- return b; Err bitreich.org 70 i-} Err bitreich.org 70 i- Err bitreich.org 70 i void Err bitreich.org 70 i printtimeformat(FILE *fp, const git_time *intime, const char *fmt) Err bitreich.org 70 i { Err bitreich.org 70 i@@ -166,7 +144,7 @@ main(int argc, char *argv[]) Err bitreich.org 70 i { Err bitreich.org 70 i const git_error *e = NULL; Err bitreich.org 70 i FILE *fp; Err bitreich.org 70 i- char path[PATH_MAX], *p; Err bitreich.org 70 i+ char path[PATH_MAX], repodirabs[PATH_MAX + 1]; Err bitreich.org 70 i int i, r, ret = 0; Err bitreich.org 70 i Err bitreich.org 70 i if (argc < 2) { Err bitreich.org 70 i@@ -179,6 +157,8 @@ main(int argc, char *argv[]) Err bitreich.org 70 i Err bitreich.org 70 i for (i = 1; i < argc; i++) { Err bitreich.org 70 i repodir = argv[i]; Err bitreich.org 70 i+ if (!realpath(repodir, repodirabs)) Err bitreich.org 70 i+ err(1, "realpath"); Err bitreich.org 70 i Err bitreich.org 70 i if (git_repository_open_ext(&repo, repodir, Err bitreich.org 70 i GIT_REPOSITORY_OPEN_NO_SEARCH, NULL)) { Err bitreich.org 70 i@@ -188,10 +168,11 @@ main(int argc, char *argv[]) Err bitreich.org 70 i continue; Err bitreich.org 70 i } Err bitreich.org 70 i Err bitreich.org 70 i- /* use directory name as name, truncation of name is no problem. */ Err bitreich.org 70 i- p = xbasename(repodir); Err bitreich.org 70 i- snprintf(name, sizeof(name), "%s", p); Err bitreich.org 70 i- free(p); Err bitreich.org 70 i+ /* use directory name as name */ Err bitreich.org 70 i+ if ((name = strrchr(repodirabs, '/'))) Err bitreich.org 70 i+ name++; Err bitreich.org 70 i+ else Err bitreich.org 70 i+ name = ""; Err bitreich.org 70 i Err bitreich.org 70 i /* read description or .git/description */ Err bitreich.org 70 i description[0] = '\0'; Err bitreich.org 70 1diff --git a/stagit.c b/stagit.c /scm/stagit-gopher/file/stagit.c.gph bitreich.org 70 i@@ -42,7 +42,7 @@ static git_repository *repo; Err bitreich.org 70 i static const char *relpath = ""; Err bitreich.org 70 i static const char *repodir; Err bitreich.org 70 i Err bitreich.org 70 i-static char *name; Err bitreich.org 70 i+static char *name = ""; Err bitreich.org 70 i static char *stripped_name; Err bitreich.org 70 i static char description[255]; Err bitreich.org 70 i static char cloneurl[1024]; Err bitreich.org 70 i@@ -162,27 +162,6 @@ xdirname(const char *path) Err bitreich.org 70 i return b; Err bitreich.org 70 i } Err bitreich.org 70 i Err bitreich.org 70 i-/* Some implementations of basename(3) return a pointer to a static Err bitreich.org 70 i- * internal buffer (OpenBSD). Others modify the contents of `path` (POSIX). Err bitreich.org 70 i- * This is a wrapper function that is compatible with both versions. Err bitreich.org 70 i- * The program will error out if basename(3) failed, this can only happen Err bitreich.org 70 i- * with the OpenBSD version. */ Err bitreich.org 70 i-char * Err bitreich.org 70 i-xbasename(const char *path) Err bitreich.org 70 i-{ Err bitreich.org 70 i- char *p, *b; Err bitreich.org 70 i- Err bitreich.org 70 i- if (!(p = strdup(path))) Err bitreich.org 70 i- err(1, "strdup"); Err bitreich.org 70 i- if (!(b = basename(p))) Err bitreich.org 70 i- err(1, "basename"); Err bitreich.org 70 i- if (!(b = strdup(b))) Err bitreich.org 70 i- err(1, "strdup"); Err bitreich.org 70 i- free(p); Err bitreich.org 70 i- Err bitreich.org 70 i- return b; Err bitreich.org 70 i-} Err bitreich.org 70 i- Err bitreich.org 70 i int Err bitreich.org 70 i mkdirp(const char *path) Err bitreich.org 70 i { Err bitreich.org 70 i@@ -879,7 +858,7 @@ main(int argc, char *argv[]) Err bitreich.org 70 i const git_oid *head = NULL; Err bitreich.org 70 i const git_error *e = NULL; Err bitreich.org 70 i FILE *fp, *fpread; Err bitreich.org 70 i- char path[PATH_MAX], *p; Err bitreich.org 70 i+ char path[PATH_MAX], repodirabs[PATH_MAX + 1], *p; Err bitreich.org 70 i int r, status; Err bitreich.org 70 i Err bitreich.org 70 i if (argc != 2) { Err bitreich.org 70 i@@ -887,6 +866,8 @@ main(int argc, char *argv[]) Err bitreich.org 70 i return 1; Err bitreich.org 70 i } Err bitreich.org 70 i repodir = argv[1]; Err bitreich.org 70 i+ if (!realpath(repodir, repodirabs)) Err bitreich.org 70 i+ err(1, "realpath"); Err bitreich.org 70 i Err bitreich.org 70 i git_libgit2_init(); Err bitreich.org 70 i Err bitreich.org 70 i@@ -904,7 +885,10 @@ main(int argc, char *argv[]) Err bitreich.org 70 i git_object_free(obj); Err bitreich.org 70 i Err bitreich.org 70 i /* use directory name as name */ Err bitreich.org 70 i- name = xbasename(repodir); Err bitreich.org 70 i+ if ((name = strrchr(repodirabs, '/'))) Err bitreich.org 70 i+ name++; Err bitreich.org 70 i+ else Err bitreich.org 70 i+ name = ""; Err bitreich.org 70 i Err bitreich.org 70 i /* strip .git suffix */ Err bitreich.org 70 i if (!(stripped_name = strdup(name))) Err bitreich.org 70 .