iwip - 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 de699c5afe2db575e0ac94ce7f64478a6427842b /scm/stagit-gopher/commit/de699c5afe2db575e0ac94ce7f64478a6427842b.gph bitreich.org 70 1parent aee984022be470e18b1b085703801ae842b4e24a /scm/stagit-gopher/commit/aee984022be470e18b1b085703801ae842b4e24a.gph bitreich.org 70 hAuthor: Hiltjo Posthuma URL:mailto:hiltjo@codemadness.org bitreich.org 70 iDate: Tue, 13 Jun 2017 21:07:49 +0200 Err bitreich.org 70 i Err bitreich.org 70 iwip Err bitreich.org 70 i Err bitreich.org 70 iDiffstat: Err bitreich.org 70 i M TODO | 8 ++++++++ Err bitreich.org 70 i M stagit-index.c | 115 +++++++++++++++++-------------- Err bitreich.org 70 i M stagit.c | 13 ++----------- Err bitreich.org 70 i Err bitreich.org 70 i3 files changed, 74 insertions(+), 62 deletions(-) Err bitreich.org 70 i--- Err bitreich.org 70 1diff --git a/TODO b/TODO /scm/stagit-gopher/file/TODO.gph bitreich.org 70 i@@ -1,3 +1,11 @@ Err bitreich.org 70 i+gopher: Err bitreich.org 70 i+ Err bitreich.org 70 i+- align UTF-8 characters (and wide?). Err bitreich.org 70 i+- update documentation: Err bitreich.org 70 i+ - document new gopher-specific options. Err bitreich.org 70 i+ Err bitreich.org 70 i+=== Err bitreich.org 70 i+ Err bitreich.org 70 i performance: Err bitreich.org 70 i - don't recreate files tree for HEAD each time: Err bitreich.org 70 i - idea: update files in tree and commit files with timestamp of commit and 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@@ -26,6 +26,34 @@ static char owner[255]; Err bitreich.org 70 i #endif Err bitreich.org 70 i Err bitreich.org 70 i void Err bitreich.org 70 i+trim(char *buf, size_t bufsiz, const char *src) Err bitreich.org 70 i+{ Err bitreich.org 70 i+ size_t d = 0, i, len, s; Err bitreich.org 70 i+ Err bitreich.org 70 i+ len = strlen(src); Err bitreich.org 70 i+ for (s = 0; s < len && d < bufsiz - 1; s++) { Err bitreich.org 70 i+ switch (src[s]) { Err bitreich.org 70 i+ case '\t': Err bitreich.org 70 i+ if (d + 8 >= bufsiz - 1) Err bitreich.org 70 i+ goto end; Err bitreich.org 70 i+ for (i = 0; i < 8; i++) Err bitreich.org 70 i+ buf[d++] = ' '; Err bitreich.org 70 i+ break; Err bitreich.org 70 i+ case '|': Err bitreich.org 70 i+ case '\n': Err bitreich.org 70 i+ case '\r': Err bitreich.org 70 i+ buf[d++] = ' '; Err bitreich.org 70 i+ break; Err bitreich.org 70 i+ default: Err bitreich.org 70 i+ buf[d++] = src[s]; Err bitreich.org 70 i+ break; Err bitreich.org 70 i+ } Err bitreich.org 70 i+ } Err bitreich.org 70 i+end: Err bitreich.org 70 i+ buf[d] = '\0'; Err bitreich.org 70 i+} Err bitreich.org 70 i+ Err bitreich.org 70 i+void Err bitreich.org 70 i joinpath(char *buf, size_t bufsiz, const char *path, const char *path2) Err bitreich.org 70 i { Err bitreich.org 70 i int r; Err bitreich.org 70 i@@ -37,24 +65,6 @@ joinpath(char *buf, size_t bufsiz, const char *path, const char *path2) Err bitreich.org 70 i path, path[0] && path[strlen(path) - 1] != '/' ? "/" : "", path2); Err bitreich.org 70 i } 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-void Err bitreich.org 70 i-xmlencode(FILE *fp, const char *s, size_t len) Err bitreich.org 70 i-{ Err bitreich.org 70 i- size_t i; Err bitreich.org 70 i- Err bitreich.org 70 i- for (i = 0; *s && i < len; s++, i++) { Err bitreich.org 70 i- switch(*s) { Err bitreich.org 70 i- case '<': fputs("<", fp); break; Err bitreich.org 70 i- case '>': fputs(">", fp); break; Err bitreich.org 70 i- case '\'': fputs("'" , fp); break; Err bitreich.org 70 i- case '&': fputs("&", fp); break; Err bitreich.org 70 i- case '"': fputs(""", fp); break; Err bitreich.org 70 i- default: fputc(*s, fp); Err bitreich.org 70 i- } Err bitreich.org 70 i- } Err bitreich.org 70 i-} Err bitreich.org 70 i- Err bitreich.org 70 i void Err bitreich.org 70 i printtimeshort(FILE *fp, const git_time *intime) Err bitreich.org 70 i { Err bitreich.org 70 i@@ -72,29 +82,22 @@ printtimeshort(FILE *fp, const git_time *intime) Err bitreich.org 70 i void Err bitreich.org 70 i writeheader(FILE *fp) Err bitreich.org 70 i { Err bitreich.org 70 i- fputs("\n" Err bitreich.org 70 i- "\n\n" Err bitreich.org 70 i- "\n" Err bitreich.org 70 i- "", fp); Err bitreich.org 70 i- xmlencode(fp, description, strlen(description)); Err bitreich.org 70 i- fprintf(fp, "\n\n", relpath); Err bitreich.org 70 i- fprintf(fp, "\n", relpath); Err bitreich.org 70 i- fputs("\n\n", fp); Err bitreich.org 70 i- fprintf(fp, "\n\n" Err bitreich.org 70 i- "\n
\"\"", relpath); Err bitreich.org 70 i- xmlencode(fp, description, strlen(description)); Err bitreich.org 70 i- fputs("
\n" Err bitreich.org 70 i- "
\n
\n
\n" Err bitreich.org 70 i- "\n" Err bitreich.org 70 i- "" Err bitreich.org 70 i- "" Err bitreich.org 70 i- "\n", fp); Err bitreich.org 70 i+ char buf[1024]; Err bitreich.org 70 i+ Err bitreich.org 70 i+ trim(buf, sizeof(buf), description); Err bitreich.org 70 i+ if (buf[0] == 't') Err bitreich.org 70 i+ fputc('t', fp); Err bitreich.org 70 i+ fprintf(fp, "%s\n", buf); Err bitreich.org 70 i+ Err bitreich.org 70 i+ fprintf(fp, "%-25.25s ", "Name"); Err bitreich.org 70 i+ fprintf(fp, "%-50.50s ", "Description"); Err bitreich.org 70 i+ fprintf(fp, "%-25.25s ", "Owner"); Err bitreich.org 70 i+ fprintf(fp, "%-16.16s\n", "Last commit"); Err bitreich.org 70 i } Err bitreich.org 70 i Err bitreich.org 70 i void Err bitreich.org 70 i writefooter(FILE *fp) Err bitreich.org 70 i { Err bitreich.org 70 i- fputs("\n
NameDescriptionOwnerLast commit
\n
\n\n\n", fp); Err bitreich.org 70 i } Err bitreich.org 70 i Err bitreich.org 70 i int Err bitreich.org 70 i@@ -105,6 +108,7 @@ writelog(FILE *fp) Err bitreich.org 70 i git_revwalk *w = NULL; Err bitreich.org 70 i git_oid id; Err bitreich.org 70 i char *stripped_name = NULL, *p; Err bitreich.org 70 i+ char buf[1024]; Err bitreich.org 70 i int ret = 0; Err bitreich.org 70 i Err bitreich.org 70 i git_revwalk_new(&w, repo); Err bitreich.org 70 i@@ -127,18 +131,16 @@ writelog(FILE *fp) Err bitreich.org 70 i if (!strcmp(p, ".git")) Err bitreich.org 70 i *p = '\0'; Err bitreich.org 70 i Err bitreich.org 70 i- fputs("", fp); Err bitreich.org 70 i- xmlencode(fp, stripped_name, strlen(stripped_name)); Err bitreich.org 70 i- fputs("", fp); Err bitreich.org 70 i- xmlencode(fp, description, strlen(description)); Err bitreich.org 70 i- fputs("", fp); Err bitreich.org 70 i- xmlencode(fp, owner, strlen(owner)); Err bitreich.org 70 i- fputs("", fp); Err bitreich.org 70 i+ trim(buf, sizeof(buf), stripped_name); Err bitreich.org 70 i+ fprintf(fp, "[1|%-25.25s ", buf); Err bitreich.org 70 i+ trim(buf, sizeof(buf), description); Err bitreich.org 70 i+ fprintf(fp, "%-50.50s ", buf); Err bitreich.org 70 i+ trim(buf, sizeof(buf), owner); Err bitreich.org 70 i+ fprintf(fp, "%-25.25s ", buf); Err bitreich.org 70 i if (author) Err bitreich.org 70 i printtimeshort(fp, &(author->when)); Err bitreich.org 70 i- fputs("", fp); Err bitreich.org 70 i+ trim(buf, sizeof(buf), stripped_name); Err bitreich.org 70 i+ fprintf(fp, "|%s%s/log.gph|server|port]\n", relpath, buf); Err bitreich.org 70 i Err bitreich.org 70 i git_commit_free(commit); Err bitreich.org 70 i err: Err bitreich.org 70 i@@ -148,27 +150,38 @@ err: Err bitreich.org 70 i return ret; Err bitreich.org 70 i } Err bitreich.org 70 i Err bitreich.org 70 i+void Err bitreich.org 70 i+usage(const char *argv0) Err bitreich.org 70 i+{ Err bitreich.org 70 i+ fprintf(stderr, "%s [repodir...]\n", argv0); Err bitreich.org 70 i+ exit(1); Err bitreich.org 70 i+} Err bitreich.org 70 i+ Err bitreich.org 70 i+ Err bitreich.org 70 i int Err bitreich.org 70 i 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], repodirabs[PATH_MAX + 1]; Err bitreich.org 70 i- const char *repodir; Err bitreich.org 70 i+ const char *repodir = NULL; Err bitreich.org 70 i int i, ret = 0; Err bitreich.org 70 i Err bitreich.org 70 i if (pledge("stdio rpath", NULL) == -1) Err bitreich.org 70 i err(1, "pledge"); Err bitreich.org 70 i Err bitreich.org 70 i- if (argc < 2) { Err bitreich.org 70 i- fprintf(stderr, "%s [repodir...]\n", argv[0]); Err bitreich.org 70 i- return 1; Err bitreich.org 70 i- } Err bitreich.org 70 i git_libgit2_init(); Err bitreich.org 70 i Err bitreich.org 70 i writeheader(stdout); Err bitreich.org 70 i Err bitreich.org 70 i for (i = 1; i < argc; i++) { Err bitreich.org 70 i+ if (argv[i][0] == '-') { Err bitreich.org 70 i+ if (argv[i][1] != 'b' || i + 1 >= argc) Err bitreich.org 70 i+ usage(argv[0]); Err bitreich.org 70 i+ relpath = argv[++i]; Err bitreich.org 70 i+ continue; Err bitreich.org 70 i+ } Err bitreich.org 70 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 1diff --git a/stagit.c b/stagit.c /scm/stagit-gopher/file/stagit.c.gph bitreich.org 70 i@@ -251,13 +251,10 @@ xmlencode(FILE *fp, const char *s, size_t len) Err bitreich.org 70 i void Err bitreich.org 70 i trim(char *buf, size_t bufsiz, const char *src) Err bitreich.org 70 i { Err bitreich.org 70 i- size_t d = 0, i, len, n = 0, s; Err bitreich.org 70 i+ size_t d = 0, i, len, s; Err bitreich.org 70 i Err bitreich.org 70 i len = strlen(src); Err bitreich.org 70 i for (s = 0; s < len && d < bufsiz - 1; s++) { Err bitreich.org 70 i- if (src[s] == '\n') Err bitreich.org 70 i- n = 0; Err bitreich.org 70 i- Err bitreich.org 70 i switch (src[s]) { Err bitreich.org 70 i case '\t': Err bitreich.org 70 i if (d + 8 >= bufsiz - 1) Err bitreich.org 70 i@@ -266,20 +263,14 @@ trim(char *buf, size_t bufsiz, const char *src) Err bitreich.org 70 i buf[d++] = ' '; Err bitreich.org 70 i break; Err bitreich.org 70 i case '|': Err bitreich.org 70 i+ case '\n': Err bitreich.org 70 i case '\r': Err bitreich.org 70 i buf[d++] = ' '; Err bitreich.org 70 i break; Err bitreich.org 70 i- case 't': Err bitreich.org 70 i- if (!n && src[s] == 't') { Err bitreich.org 70 i- if (d + 1 >= bufsiz - 1) Err bitreich.org 70 i- goto end; Err bitreich.org 70 i- buf[d++] = src[s]; Err bitreich.org 70 i- } Err bitreich.org 70 i default: Err bitreich.org 70 i buf[d++] = src[s]; Err bitreich.org 70 i break; Err bitreich.org 70 i } Err bitreich.org 70 i- n++; Err bitreich.org 70 i } Err bitreich.org 70 i end: Err bitreich.org 70 i buf[d] = '\0'; Err bitreich.org 70 .