iadd atom feed support + some fixes - 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 45d8d2f4303b0953f8267116eecde019d1ba1feb /scm/stagit-gopher/commit/45d8d2f4303b0953f8267116eecde019d1ba1feb.gph bitreich.org 70 1parent 77260d21f1f22263a3164005f73d2c6edfd2b00e /scm/stagit-gopher/commit/77260d21f1f22263a3164005f73d2c6edfd2b00e.gph bitreich.org 70 hAuthor: Hiltjo Posthuma URL:mailto:hiltjo@codemadness.org bitreich.org 70 iDate: Mon, 7 Dec 2015 16:14:03 +0100 Err bitreich.org 70 i Err bitreich.org 70 iadd atom feed support + some fixes Err bitreich.org 70 i Err bitreich.org 70 iDiffstat: Err bitreich.org 70 i M urmoms.c | 155 +++++++++++++++++++++++-------- Err bitreich.org 70 i Err bitreich.org 70 i1 file changed, 115 insertions(+), 40 deletions(-) Err bitreich.org 70 i--- Err bitreich.org 70 1diff --git a/urmoms.c b/urmoms.c /scm/stagit-gopher/file/urmoms.c.gph bitreich.org 70 i@@ -22,10 +22,10 @@ static int hasreadme, haslicense; Err bitreich.org 70 i int Err bitreich.org 70 i writeheader(FILE *fp) Err bitreich.org 70 i { Err bitreich.org 70 i- fprintf(fp, "" Err bitreich.org 70 i+ fputs("" Err bitreich.org 70 i "" Err bitreich.org 70 i "" Err bitreich.org 70 i- ""); Err bitreich.org 70 i+ "", fp); Err bitreich.org 70 i fprintf(fp, "%s%s%s", name, description[0] ? " - " : "", description); Err bitreich.org 70 i fprintf(fp, "", relpath); Err bitreich.org 70 i fprintf(fp, "", Err bitreich.org 70 i@@ -35,13 +35,13 @@ writeheader(FILE *fp) Err bitreich.org 70 i fprintf(fp, "

\"\" %s

", relpath, name); Err bitreich.org 70 i fprintf(fp, "%s
", description); Err bitreich.org 70 i fprintf(fp, "Log |", relpath); Err bitreich.org 70 i- fprintf(fp, "Files| ", relpath); Err bitreich.org 70 i+ fprintf(fp, "Files | ", relpath); Err bitreich.org 70 i fprintf(fp, "Stats", relpath); Err bitreich.org 70 i if (hasreadme) Err bitreich.org 70 i fprintf(fp, " | README", relpath); Err bitreich.org 70 i if (haslicense) Err bitreich.org 70 i fprintf(fp, " | LICENSE", relpath); Err bitreich.org 70 i- fprintf(fp, "
");	Err	bitreich.org	70
i+        fputs("
", fp);	Err	bitreich.org	70
i 	Err	bitreich.org	70
i         return 0;	Err	bitreich.org	70
i }	Err	bitreich.org	70
i@@ -49,9 +49,7 @@ writeheader(FILE *fp)	Err	bitreich.org	70
i int	Err	bitreich.org	70
i writefooter(FILE *fp)	Err	bitreich.org	70
i {	Err	bitreich.org	70
i-        fprintf(fp, "
"); Err bitreich.org 70 i- Err bitreich.org 70 i- return 0; Err bitreich.org 70 i+ return !fputs("
", fp); Err bitreich.org 70 i } Err bitreich.org 70 i Err bitreich.org 70 i FILE * Err bitreich.org 70 i@@ -105,6 +103,32 @@ xbasename(const char *path) Err bitreich.org 70 i } Err bitreich.org 70 i Err bitreich.org 70 i void Err bitreich.org 70 i+printtimez(FILE *fp, const git_time *intime) Err bitreich.org 70 i+{ Err bitreich.org 70 i+ struct tm *intm; Err bitreich.org 70 i+ time_t t; Err bitreich.org 70 i+ int offset, hours, minutes; Err bitreich.org 70 i+ char sign, out[32]; Err bitreich.org 70 i+ Err bitreich.org 70 i+ offset = intime->offset; Err bitreich.org 70 i+ if (offset < 0) { Err bitreich.org 70 i+ sign = '-'; Err bitreich.org 70 i+ offset = -offset; Err bitreich.org 70 i+ } else { Err bitreich.org 70 i+ sign = '+'; Err bitreich.org 70 i+ } Err bitreich.org 70 i+ Err bitreich.org 70 i+ hours = offset / 60; Err bitreich.org 70 i+ minutes = offset % 60; Err bitreich.org 70 i+ Err bitreich.org 70 i+ t = (time_t) intime->time + (intime->offset * 60); Err bitreich.org 70 i+ Err bitreich.org 70 i+ intm = gmtime(&t); Err bitreich.org 70 i+ strftime(out, sizeof(out), "%Y-%m-%dT%H:%M:%SZ", intm); Err bitreich.org 70 i+ fputs(out, fp); Err bitreich.org 70 i+} Err bitreich.org 70 i+ Err bitreich.org 70 i+void Err bitreich.org 70 i printtime(FILE *fp, const git_time *intime) Err bitreich.org 70 i { Err bitreich.org 70 i struct tm *intm; Err bitreich.org 70 i@@ -328,6 +352,7 @@ writelog(FILE *fp) Err bitreich.org 70 i Err bitreich.org 70 i /* TODO: show tag when commit has it */ Err bitreich.org 70 i Err bitreich.org 70 i+ /* TODO: collect stats per author and make stats.html page */ Err bitreich.org 70 i author = git_commit_author(commit); Err bitreich.org 70 i summary = git_commit_summary(commit); Err bitreich.org 70 i Err bitreich.org 70 i@@ -366,29 +391,107 @@ writelog(FILE *fp) Err bitreich.org 70 i return 0; Err bitreich.org 70 i } Err bitreich.org 70 i Err bitreich.org 70 i-#if 0 Err bitreich.org 70 i+void Err bitreich.org 70 i+printcommitatom(FILE *fp, git_commit *commit) Err bitreich.org 70 i+{ Err bitreich.org 70 i+ const git_signature *sig; Err bitreich.org 70 i+ char buf[GIT_OID_HEXSZ + 1]; Err bitreich.org 70 i+ int i, count; Err bitreich.org 70 i+ const char *scan, *eol, *summary; Err bitreich.org 70 i+ Err bitreich.org 70 i+ fputs("", fp); Err bitreich.org 70 i+ Err bitreich.org 70 i+ /* TODO: show tag when commit has it */ Err bitreich.org 70 i+ git_oid_tostr(buf, sizeof(buf), git_commit_id(commit)); Err bitreich.org 70 i+ fprintf(fp, "%s", buf); Err bitreich.org 70 i+ Err bitreich.org 70 i+ sig = git_commit_author(commit); Err bitreich.org 70 i+ Err bitreich.org 70 i+ if (sig) { Err bitreich.org 70 i+ fputs("", fp); Err bitreich.org 70 i+ printtimez(fp, &sig->when); Err bitreich.org 70 i+ fputs("", fp); Err bitreich.org 70 i+ } Err bitreich.org 70 i+ Err bitreich.org 70 i+ if ((summary = git_commit_summary(commit))) { Err bitreich.org 70 i+ fputs("", fp); Err bitreich.org 70 i+ xmlencode(fp, summary, strlen(summary)); Err bitreich.org 70 i+ fputs("", fp); Err bitreich.org 70 i+ } Err bitreich.org 70 i+ Err bitreich.org 70 i+ fputs("", fp); Err bitreich.org 70 i+ fprintf(fp, "commit %s\n", buf); Err bitreich.org 70 i+ if (git_oid_tostr(buf, sizeof(buf), git_commit_parent_id(commit, 0))) Err bitreich.org 70 i+ fprintf(fp, "parent %s\n", buf); Err bitreich.org 70 i+ Err bitreich.org 70 i+ if ((count = (int)git_commit_parentcount(commit)) > 1) { Err bitreich.org 70 i+ fprintf(fp, "Merge:"); Err bitreich.org 70 i+ for (i = 0; i < count; ++i) { Err bitreich.org 70 i+ git_oid_tostr(buf, 8, git_commit_parent_id(commit, i)); Err bitreich.org 70 i+ fprintf(fp, " %s", buf); Err bitreich.org 70 i+ } Err bitreich.org 70 i+ fputc('\n', fp); Err bitreich.org 70 i+ } Err bitreich.org 70 i+ Err bitreich.org 70 i+ if (sig) { Err bitreich.org 70 i+ fprintf(fp, "Author: "); Err bitreich.org 70 i+ xmlencode(fp, sig->name, strlen(sig->name)); Err bitreich.org 70 i+ fprintf(fp, " <"); Err bitreich.org 70 i+ xmlencode(fp, sig->email, strlen(sig->email)); Err bitreich.org 70 i+ fprintf(fp, ">\nDate: "); Err bitreich.org 70 i+ printtime(fp, &sig->when); Err bitreich.org 70 i+ } Err bitreich.org 70 i+ fputc('\n', fp); Err bitreich.org 70 i+ Err bitreich.org 70 i+ for (scan = git_commit_message(commit); scan && *scan;) { Err bitreich.org 70 i+ for (eol = scan; *eol && *eol != '\n'; ++eol) /* find eol */ Err bitreich.org 70 i+ ; Err bitreich.org 70 i+ Err bitreich.org 70 i+ fprintf(fp, " %.*s\n", (int) (eol - scan), scan); Err bitreich.org 70 i+ scan = *eol ? eol + 1 : NULL; Err bitreich.org 70 i+ } Err bitreich.org 70 i+ fputc('\n', fp); Err bitreich.org 70 i+ fputs("", fp); Err bitreich.org 70 i+ if (sig) { Err bitreich.org 70 i+ fputs("", fp); Err bitreich.org 70 i+ xmlencode(fp, sig->name, strlen(sig->name)); Err bitreich.org 70 i+ fputs("", fp); Err bitreich.org 70 i+ xmlencode(fp, sig->email, strlen(sig->email)); Err bitreich.org 70 i+ fputs("", fp); Err bitreich.org 70 i+ } Err bitreich.org 70 i+ fputs("", fp); Err bitreich.org 70 i+} Err bitreich.org 70 i+ Err bitreich.org 70 i int Err bitreich.org 70 i writeatom(FILE *fp) Err bitreich.org 70 i { Err bitreich.org 70 i git_revwalk *w = NULL; Err bitreich.org 70 i git_oid id; Err bitreich.org 70 i git_commit *c = NULL; Err bitreich.org 70 i+ size_t i, m = 100; /* max */ Err bitreich.org 70 i+ Err bitreich.org 70 i+ fputs("", fp); Err bitreich.org 70 i+ xmlencode(fp, name, strlen(name)); Err bitreich.org 70 i+ fputs(", branch master", fp); Err bitreich.org 70 i+ Err bitreich.org 70 i+ xmlencode(fp, description, strlen(description)); Err bitreich.org 70 i+ fputs("", fp); Err bitreich.org 70 i Err bitreich.org 70 i git_revwalk_new(&w, repo); Err bitreich.org 70 i git_revwalk_push_head(w); Err bitreich.org 70 i Err bitreich.org 70 i- while (!git_revwalk_next(&id, w)) { Err bitreich.org 70 i+ for (i = 0; i < m && !git_revwalk_next(&id, w); i++) { Err bitreich.org 70 i if (git_commit_lookup(&c, repo, &id)) Err bitreich.org 70 i return 1; /* TODO: error */ Err bitreich.org 70 i- printcommit(fp, c); Err bitreich.org 70 i- printshowfile(c); Err bitreich.org 70 i+ printcommitatom(fp, c); Err bitreich.org 70 i git_commit_free(c); Err bitreich.org 70 i } Err bitreich.org 70 i git_revwalk_free(w); Err bitreich.org 70 i Err bitreich.org 70 i+ fputs("", fp); Err bitreich.org 70 i+ Err bitreich.org 70 i return 0; Err bitreich.org 70 i } Err bitreich.org 70 i-#endif Err bitreich.org 70 i Err bitreich.org 70 i int Err bitreich.org 70 i writefiles(FILE *fp) Err bitreich.org 70 i@@ -409,32 +512,6 @@ writefiles(FILE *fp) Err bitreich.org 70 i return 0; Err bitreich.org 70 i } Err bitreich.org 70 i Err bitreich.org 70 i-#if 0 Err bitreich.org 70 i-int Err bitreich.org 70 i-writebranches(FILE *fp) Err bitreich.org 70 i-{ Err bitreich.org 70 i- git_branch_iterator *branchit = NULL; Err bitreich.org 70 i- git_branch_t branchtype; Err bitreich.org 70 i- git_reference *branchref; Err bitreich.org 70 i- char branchbuf[BUFSIZ] = ""; Err bitreich.org 70 i- int status; Err bitreich.org 70 i- Err bitreich.org 70 i- git_branch_iterator_new(&branchit, repo, GIT_BRANCH_LOCAL); Err bitreich.org 70 i- Err bitreich.org 70 i- while ((status = git_branch_next(&branchref, &branchtype, branchit)) == GIT_ITEROVER) { Err bitreich.org 70 i- git_reference_normalize_name(branchbuf, sizeof(branchbuf), Err bitreich.org 70 i- git_reference_name(branchref), Err bitreich.org 70 i- GIT_REF_FORMAT_ALLOW_ONELEVEL | GIT_REF_FORMAT_REFSPEC_SHORTHAND); Err bitreich.org 70 i- Err bitreich.org 70 i- /* fprintf(fp, "branch: |%s|\n", branchbuf); */ Err bitreich.org 70 i- } Err bitreich.org 70 i- Err bitreich.org 70 i- git_branch_iterator_free(branchit); Err bitreich.org 70 i- Err bitreich.org 70 i- return 0; Err bitreich.org 70 i-} Err bitreich.org 70 i-#endif Err bitreich.org 70 i- Err bitreich.org 70 i void Err bitreich.org 70 i writeblobhtml(FILE *fp, const git_blob *blob) Err bitreich.org 70 i { Err bitreich.org 70 i@@ -516,11 +593,9 @@ main(int argc, char *argv[]) Err bitreich.org 70 i writefooter(fp); Err bitreich.org 70 i fclose(fp); Err bitreich.org 70 i Err bitreich.org 70 i-#if 0 Err bitreich.org 70 i fp = efopen("atom.xml", "w+b"); Err bitreich.org 70 i writeatom(fp); Err bitreich.org 70 i fclose(fp); Err bitreich.org 70 i-#endif Err bitreich.org 70 i Err bitreich.org 70 i fp = efopen("files.html", "w+b"); Err bitreich.org 70 i writeheader(fp); Err bitreich.org 70 .