ifix file tree handling - 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 502b95ce68ef3e08fb536a0d22c267dcd3e9c7fc /scm/stagit-gopher/commit/502b95ce68ef3e08fb536a0d22c267dcd3e9c7fc.gph bitreich.org 70 1parent 9693d1d1a965006c14d43a8e73aa9cc4f512e75f /scm/stagit-gopher/commit/9693d1d1a965006c14d43a8e73aa9cc4f512e75f.gph bitreich.org 70 hAuthor: Quentin Rameau URL:mailto:quinq@fifth.space bitreich.org 70 iDate: Mon, 18 Jan 2016 12:47:25 +0100 Err bitreich.org 70 i Err bitreich.org 70 ifix file tree handling Err bitreich.org 70 i Err bitreich.org 70 iDo not forget to keep previous path when recursing or we end up with Err bitreich.org 70 ifilenames only. Err bitreich.org 70 i Err bitreich.org 70 iDiffstat: Err bitreich.org 70 i M stagit.c | 18 ++++++++++-------- Err bitreich.org 70 i Err bitreich.org 70 i1 file changed, 10 insertions(+), 8 deletions(-) Err bitreich.org 70 i--- Err bitreich.org 70 1diff --git a/stagit.c b/stagit.c /scm/stagit-gopher/file/stagit.c.gph bitreich.org 70 i@@ -662,8 +662,8 @@ int Err bitreich.org 70 i writefilestree(FILE *fp, git_tree *tree, const char *branch, const char *path) Err bitreich.org 70 i { Err bitreich.org 70 i const git_tree_entry *entry = NULL; Err bitreich.org 70 i- const char *filename; Err bitreich.org 70 i- char filepath[PATH_MAX]; Err bitreich.org 70 i+ const char *entryname; Err bitreich.org 70 i+ char filepath[PATH_MAX], entrypath[PATH_MAX]; Err bitreich.org 70 i git_object *obj = NULL; Err bitreich.org 70 i git_off_t filesize; Err bitreich.org 70 i size_t count, i; Err bitreich.org 70 i@@ -674,14 +674,16 @@ writefilestree(FILE *fp, git_tree *tree, const char *branch, const char *path) Err bitreich.org 70 i if (!(entry = git_tree_entry_byindex(tree, i)) || Err bitreich.org 70 i git_tree_entry_to_object(&obj, repo, entry)) Err bitreich.org 70 i return -1; Err bitreich.org 70 i- filename = git_tree_entry_name(entry); Err bitreich.org 70 i+ entryname = git_tree_entry_name(entry); Err bitreich.org 70 i+ snprintf(entrypath, sizeof(entrypath), "%s%s%s", Err bitreich.org 70 i+ path, path[0] ? "/" : "", entryname); Err bitreich.org 70 i switch (git_object_type(obj)) { Err bitreich.org 70 i case GIT_OBJ_BLOB: Err bitreich.org 70 i break; Err bitreich.org 70 i case GIT_OBJ_TREE: Err bitreich.org 70 i /* NOTE: recurses */ Err bitreich.org 70 i ret = writefilestree(fp, (git_tree *)obj, branch, Err bitreich.org 70 i- filename); Err bitreich.org 70 i+ entrypath); Err bitreich.org 70 i git_object_free(obj); Err bitreich.org 70 i if (ret) Err bitreich.org 70 i return ret; Err bitreich.org 70 i@@ -692,18 +694,18 @@ writefilestree(FILE *fp, git_tree *tree, const char *branch, const char *path) Err bitreich.org 70 i } Err bitreich.org 70 i if (path[0]) Err bitreich.org 70 i snprintf(filepath, sizeof(filepath), "file/%s/%s.html", Err bitreich.org 70 i- path, filename); Err bitreich.org 70 i+ path, entryname); Err bitreich.org 70 i else Err bitreich.org 70 i snprintf(filepath, sizeof(filepath), "file/%s.html", Err bitreich.org 70 i- filename); Err bitreich.org 70 i+ entryname); Err bitreich.org 70 i filesize = git_blob_rawsize((git_blob *)obj); Err bitreich.org 70 i Err bitreich.org 70 i- lc = writeblob(obj, filepath, filename, filesize); Err bitreich.org 70 i+ lc = writeblob(obj, filepath, entryname, filesize); Err bitreich.org 70 i Err bitreich.org 70 i fputs("", fp); Err bitreich.org 70 i fputs(filemode(git_tree_entry_filemode(entry)), fp); Err bitreich.org 70 i fprintf(fp, "", relpath, filepath); Err bitreich.org 70 i- xmlencode(fp, filename, strlen(filename)); Err bitreich.org 70 i+ xmlencode(fp, entrypath, strlen(entrypath)); Err bitreich.org 70 i fputs("", fp); Err bitreich.org 70 i if (showlinecount && lc > 0) Err bitreich.org 70 i fprintf(fp, "%dL", lc); Err bitreich.org 70 .