iadd refs page (branches and tags) - 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 e10f79ad2afa61294c90c4e9ae361aa2b086cf9d /scm/stagit-gopher/commit/e10f79ad2afa61294c90c4e9ae361aa2b086cf9d.gph bitreich.org 70 1parent c226554b64a9529296b690d827966ccf139336bd /scm/stagit-gopher/commit/c226554b64a9529296b690d827966ccf139336bd.gph bitreich.org 70 hAuthor: Hiltjo Posthuma URL:mailto:hiltjo@codemadness.org bitreich.org 70 iDate: Sun, 3 Jan 2016 21:06:03 +0100 Err bitreich.org 70 i Err bitreich.org 70 iadd refs page (branches and tags) Err bitreich.org 70 i Err bitreich.org 70 iquite some code is added, this will be cleaned up in a following code iteration. Err bitreich.org 70 i Err bitreich.org 70 i- make sure to free some more allocated git objects. Err bitreich.org 70 i- use fputs() asmuch as possible instead of fprintf(). Err bitreich.org 70 i- code cleanup Err bitreich.org 70 i Err bitreich.org 70 iDiffstat: Err bitreich.org 70 i M TODO | 1 + Err bitreich.org 70 i M stagit.c | 282 +++++++++++++++++++++++++++---- Err bitreich.org 70 i Err bitreich.org 70 i2 files changed, 251 insertions(+), 32 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@@ -4,6 +4,7 @@ performance: Err bitreich.org 70 i Err bitreich.org 70 i layout: Err bitreich.org 70 i - make top menu look nicer in links/lynx again. Err bitreich.org 70 i+- show tags in log. Err bitreich.org 70 i Err bitreich.org 70 i documentation: Err bitreich.org 70 i - improve mandoc pages. Err bitreich.org 70 1diff --git a/stagit.c b/stagit.c /scm/stagit-gopher/file/stagit.c.gph bitreich.org 70 i@@ -264,7 +264,8 @@ writeheader(FILE *fp) Err bitreich.org 70 i } Err bitreich.org 70 i fputs("\n", fp); 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, "Refs", 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@@ -283,7 +284,7 @@ writefooter(FILE *fp) 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- off_t i = 0; Err bitreich.org 70 i+ off_t i; Err bitreich.org 70 i size_t n = 1; Err bitreich.org 70 i char *nfmt = "%d\n"; Err bitreich.org 70 i const char *s = git_blob_rawcontent(blob); Err bitreich.org 70 i@@ -293,12 +294,11 @@ writeblobhtml(FILE *fp, const git_blob *blob) Err bitreich.org 70 i Err bitreich.org 70 i if (len) { Err bitreich.org 70 i fprintf(fp, nfmt, n, n, n); Err bitreich.org 70 i- while (i < len - 1) { Err bitreich.org 70 i+ for (i = 0; i < len - 1; i++) { Err bitreich.org 70 i if (s[i] == '\n') { Err bitreich.org 70 i n++; Err bitreich.org 70 i fprintf(fp, nfmt, n, n, n); Err bitreich.org 70 i } Err bitreich.org 70 i- i++; Err bitreich.org 70 i } Err bitreich.org 70 i } Err bitreich.org 70 i Err bitreich.org 70 i@@ -319,7 +319,7 @@ printcommit(FILE *fp, struct commitinfo *ci) Err bitreich.org 70 i Err bitreich.org 70 i #if 0 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+ fputs("Merge:", fp); 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", Err bitreich.org 70 i@@ -329,9 +329,9 @@ printcommit(FILE *fp, struct commitinfo *ci) Err bitreich.org 70 i } Err bitreich.org 70 i #endif Err bitreich.org 70 i if (ci->author) { Err bitreich.org 70 i- fprintf(fp, "Author: "); Err bitreich.org 70 i+ fputs("Author: ", fp); Err bitreich.org 70 i xmlencode(fp, ci->author->name, strlen(ci->author->name)); Err bitreich.org 70 i- fprintf(fp, " <author->email, strlen(ci->author->email)); Err bitreich.org 70 i fputs("\">", fp); Err bitreich.org 70 i xmlencode(fp, ci->author->email, strlen(ci->author->email)); Err bitreich.org 70 i@@ -377,7 +377,7 @@ printshowfile(struct commitinfo *ci) Err bitreich.org 70 i if (!git_diff_stats_to_buf(&statsbuf, ci->stats, Err bitreich.org 70 i GIT_DIFF_STATS_FULL | GIT_DIFF_STATS_SHORT, 80)) { Err bitreich.org 70 i if (statsbuf.ptr && statsbuf.ptr[0]) { Err bitreich.org 70 i- fprintf(fp, "Diffstat:\n"); Err bitreich.org 70 i+ fputs("Diffstat:\n", fp); Err bitreich.org 70 i fputs(statsbuf.ptr, fp); Err bitreich.org 70 i } Err bitreich.org 70 i } Err bitreich.org 70 i@@ -431,24 +431,30 @@ printshowfile(struct commitinfo *ci) Err bitreich.org 70 i } Err bitreich.org 70 i git_buf_free(&statsbuf); Err bitreich.org 70 i Err bitreich.org 70 i- fputs( "\n", fp); Err bitreich.org 70 i+ fputs("\n", fp); Err bitreich.org 70 i writefooter(fp); Err bitreich.org 70 i fclose(fp); Err bitreich.org 70 i return; Err bitreich.org 70 i } Err bitreich.org 70 i Err bitreich.org 70 i-void Err bitreich.org 70 i-writelog(FILE *fp) Err bitreich.org 70 i+int Err bitreich.org 70 i+writelog(FILE *fp, const char *branch) Err bitreich.org 70 i { Err bitreich.org 70 i struct commitinfo *ci; Err bitreich.org 70 i+ const git_oid *oid; Err bitreich.org 70 i git_revwalk *w = NULL; Err bitreich.org 70 i+ git_object *obj = NULL; Err bitreich.org 70 i git_oid id; Err bitreich.org 70 i size_t len; Err bitreich.org 70 i Err bitreich.org 70 i mkdir("commit", 0755); Err bitreich.org 70 i Err bitreich.org 70 i+ if (git_revparse_single(&obj, repo, branch)) Err bitreich.org 70 i+ return -1; Err bitreich.org 70 i+ oid = git_object_id(obj); 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+ git_revwalk_push(w, oid); Err bitreich.org 70 i git_revwalk_sorting(w, GIT_SORT_TIME); Err bitreich.org 70 i git_revwalk_simplify_first_parent(w); Err bitreich.org 70 i Err bitreich.org 70 i@@ -491,10 +497,14 @@ writelog(FILE *fp) Err bitreich.org 70 i Err bitreich.org 70 i commitinfo_free(ci); Err bitreich.org 70 i } Err bitreich.org 70 i- fprintf(fp, ""); Err bitreich.org 70 i+ fputs("", fp); Err bitreich.org 70 i Err bitreich.org 70 i git_revwalk_free(w); Err bitreich.org 70 i+ git_object_free(obj); Err bitreich.org 70 i+ Err bitreich.org 70 i relpath = ""; Err bitreich.org 70 i+ Err bitreich.org 70 i+ return 0; Err bitreich.org 70 i } Err bitreich.org 70 i Err bitreich.org 70 i void Err bitreich.org 70 i@@ -521,7 +531,7 @@ printcommitatom(FILE *fp, struct commitinfo *ci) Err bitreich.org 70 i Err bitreich.org 70 i #if 0 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+ fputs("Merge:", fp); 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@@ -531,11 +541,11 @@ printcommitatom(FILE *fp, struct commitinfo *ci) Err bitreich.org 70 i #endif Err bitreich.org 70 i Err bitreich.org 70 i if (ci->author) { Err bitreich.org 70 i- fprintf(fp, "Author: "); Err bitreich.org 70 i+ fputs("Author: ", fp); Err bitreich.org 70 i xmlencode(fp, ci->author->name, strlen(ci->author->name)); Err bitreich.org 70 i- fprintf(fp, " <"); Err bitreich.org 70 i+ fputs(" <", fp); Err bitreich.org 70 i xmlencode(fp, ci->author->email, strlen(ci->author->email)); Err bitreich.org 70 i- fprintf(fp, ">\nDate: "); Err bitreich.org 70 i+ fputs(">\nDate: ", fp); Err bitreich.org 70 i printtime(fp, &(ci->author->when)); Err bitreich.org 70 i } Err bitreich.org 70 i fputc('\n', fp); Err bitreich.org 70 i@@ -619,7 +629,7 @@ writeblob(git_object *obj, const char *filename, git_off_t filesize) Err bitreich.org 70 i fputs("


", fp); Err bitreich.org 70 i Err bitreich.org 70 i if (git_blob_is_binary((git_blob *)obj)) { Err bitreich.org 70 i- fprintf(fp, "

Binary file

\n"); Err bitreich.org 70 i+ fputs("

Binary file

\n", fp); Err bitreich.org 70 i } else { Err bitreich.org 70 i writeblobhtml(fp, (git_blob *)obj); Err bitreich.org 70 i if (ferror(fp)) Err bitreich.org 70 i@@ -676,7 +686,7 @@ filemode(git_filemode_t m) Err bitreich.org 70 i } Err bitreich.org 70 i Err bitreich.org 70 i int Err bitreich.org 70 i-writefilestree(FILE *fp, git_tree *tree, const char *path) 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@@ -690,15 +700,15 @@ writefilestree(FILE *fp, git_tree *tree, const char *path) Err bitreich.org 70 i for (i = 0; i < count; i++) { Err bitreich.org 70 i if (!(entry = git_tree_entry_byindex(tree, i))) Err bitreich.org 70 i return -1; Err bitreich.org 70 i- Err bitreich.org 70 i- filename = git_tree_entry_name(entry); Err bitreich.org 70 i if (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 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- ret = writefilestree(fp, (git_tree *)obj, filename); Err bitreich.org 70 i+ ret = writefilestree(fp, (git_tree *)obj, branch, Err bitreich.org 70 i+ filename); 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@@ -708,7 +718,8 @@ writefilestree(FILE *fp, git_tree *tree, const char *path) Err bitreich.org 70 i continue; Err bitreich.org 70 i } Err bitreich.org 70 i if (path[0]) { Err bitreich.org 70 i- snprintf(filepath, sizeof(filepath), "%s/%s", path, filename); Err bitreich.org 70 i+ snprintf(filepath, sizeof(filepath), "%s/%s", Err bitreich.org 70 i+ path, filename); Err bitreich.org 70 i filename = filepath; Err bitreich.org 70 i } Err bitreich.org 70 i Err bitreich.org 70 i@@ -731,42 +742,221 @@ writefilestree(FILE *fp, git_tree *tree, const char *path) Err bitreich.org 70 i } Err bitreich.org 70 i Err bitreich.org 70 i int Err bitreich.org 70 i-writefiles(FILE *fp) Err bitreich.org 70 i+writefiles(FILE *fp, const char *branch) Err bitreich.org 70 i { Err bitreich.org 70 i const git_oid *id; Err bitreich.org 70 i git_tree *tree = NULL; Err bitreich.org 70 i git_object *obj = NULL; Err bitreich.org 70 i git_commit *commit = NULL; Err bitreich.org 70 i+ int ret = -1; Err bitreich.org 70 i Err bitreich.org 70 i fputs("\n" Err bitreich.org 70 i "" Err bitreich.org 70 i "\n\n", fp); Err bitreich.org 70 i Err bitreich.org 70 i- if (git_revparse_single(&obj, repo, "HEAD")) Err bitreich.org 70 i- return -1; Err bitreich.org 70 i+ if (git_revparse_single(&obj, repo, branch)) Err bitreich.org 70 i+ goto err; Err bitreich.org 70 i id = git_object_id(obj); Err bitreich.org 70 i if (git_commit_lookup(&commit, repo, id)) Err bitreich.org 70 i- return -1; Err bitreich.org 70 i+ goto err; Err bitreich.org 70 i if (git_commit_tree(&tree, commit)) { Err bitreich.org 70 i git_commit_free(commit); Err bitreich.org 70 i- return -1; Err bitreich.org 70 i+ goto err; Err bitreich.org 70 i } Err bitreich.org 70 i- git_commit_free(commit); Err bitreich.org 70 i+ ret = writefilestree(fp, tree, branch, ""); Err bitreich.org 70 i Err bitreich.org 70 i- writefilestree(fp, tree, ""); Err bitreich.org 70 i+err: Err bitreich.org 70 i+ fputs("
ModeNameSize
", fp); Err bitreich.org 70 i Err bitreich.org 70 i+ git_object_free(obj); Err bitreich.org 70 i git_commit_free(commit); Err bitreich.org 70 i git_tree_free(tree); Err bitreich.org 70 i Err bitreich.org 70 i+ return ret; Err bitreich.org 70 i+} Err bitreich.org 70 i+ Err bitreich.org 70 i+int Err bitreich.org 70 i+writebranches(FILE *fp) Err bitreich.org 70 i+{ Err bitreich.org 70 i+ struct commitinfo *ci; Err bitreich.org 70 i+ git_branch_iterator *it = NULL; Err bitreich.org 70 i+ git_branch_t branch; Err bitreich.org 70 i+ git_reference *ref = NULL, *dref = NULL; Err bitreich.org 70 i+ const git_oid *id = NULL; Err bitreich.org 70 i+ const char *branchname = NULL; Err bitreich.org 70 i+ size_t len; Err bitreich.org 70 i+ int ret = -1; Err bitreich.org 70 i+ Err bitreich.org 70 i+ /* log for local branches */ Err bitreich.org 70 i+ if (git_branch_iterator_new(&it, repo, GIT_BRANCH_LOCAL)) Err bitreich.org 70 i+ return -1; Err bitreich.org 70 i+ Err bitreich.org 70 i+ fputs("

Branches

\n" Err bitreich.org 70 i+ "" Err bitreich.org 70 i+ "" Err bitreich.org 70 i+ "\n\n", fp); Err bitreich.org 70 i+ Err bitreich.org 70 i+ while (!git_branch_next(&ref, &branch, it)) { Err bitreich.org 70 i+ if (git_branch_name(&branchname, ref)) Err bitreich.org 70 i+ continue; Err bitreich.org 70 i+ Err bitreich.org 70 i+ id = NULL; Err bitreich.org 70 i+ switch (git_reference_type(ref)) { Err bitreich.org 70 i+ case GIT_REF_SYMBOLIC: Err bitreich.org 70 i+ if (git_reference_resolve(&dref, ref)) Err bitreich.org 70 i+ goto err; Err bitreich.org 70 i+ id = git_reference_target(dref); Err bitreich.org 70 i+ break; Err bitreich.org 70 i+ case GIT_REF_OID: Err bitreich.org 70 i+ id = git_reference_target(ref); Err bitreich.org 70 i+ break; Err bitreich.org 70 i+ default: Err bitreich.org 70 i+ continue; Err bitreich.org 70 i+ } Err bitreich.org 70 i+ if (!id) Err bitreich.org 70 i+ goto err; Err bitreich.org 70 i+ if (!(ci = commitinfo_getbyoid(id))) Err bitreich.org 70 i+ break; Err bitreich.org 70 i+ Err bitreich.org 70 i+ relpath = ""; Err bitreich.org 70 i+ Err bitreich.org 70 i+ fputs("\n", fp); Err bitreich.org 70 i+ Err bitreich.org 70 i+ relpath = "../"; Err bitreich.org 70 i+ Err bitreich.org 70 i+ commitinfo_free(ci); Err bitreich.org 70 i+ git_reference_free(ref); Err bitreich.org 70 i+ git_reference_free(dref); Err bitreich.org 70 i+ ref = NULL; Err bitreich.org 70 i+ dref = NULL; Err bitreich.org 70 i+ } Err bitreich.org 70 i+ ret = 0; Err bitreich.org 70 i+ Err bitreich.org 70 i+err: Err bitreich.org 70 i fputs("
BranchAgeCommit messageAuthorFiles+-
", fp); Err bitreich.org 70 i+ xmlencode(fp, branchname, strlen(branchname)); Err bitreich.org 70 i+ fputs("", fp); Err bitreich.org 70 i+ if (ci->author) Err bitreich.org 70 i+ printtimeshort(fp, &(ci->author->when)); Err bitreich.org 70 i+ fputs("", fp); Err bitreich.org 70 i+ if (ci->summary) { Err bitreich.org 70 i+ fprintf(fp, "", relpath, ci->oid); Err bitreich.org 70 i+ if ((len = strlen(ci->summary)) > summarylen) { Err bitreich.org 70 i+ xmlencode(fp, ci->summary, summarylen - 1); Err bitreich.org 70 i+ fputs("…", fp); Err bitreich.org 70 i+ } else { Err bitreich.org 70 i+ xmlencode(fp, ci->summary, len); Err bitreich.org 70 i+ } Err bitreich.org 70 i+ fputs("", fp); Err bitreich.org 70 i+ } Err bitreich.org 70 i+ fputs("", fp); Err bitreich.org 70 i+ if (ci->author) Err bitreich.org 70 i+ xmlencode(fp, ci->author->name, strlen(ci->author->name)); Err bitreich.org 70 i+ fputs("", fp); Err bitreich.org 70 i+ fprintf(fp, "%zu", ci->filecount); Err bitreich.org 70 i+ fputs("", fp); Err bitreich.org 70 i+ fprintf(fp, "+%zu", ci->addcount); Err bitreich.org 70 i+ fputs("", fp); Err bitreich.org 70 i+ fprintf(fp, "-%zu", ci->delcount); Err bitreich.org 70 i+ fputs("
", fp); Err bitreich.org 70 i+ git_reference_free(ref); Err bitreich.org 70 i+ git_reference_free(dref); Err bitreich.org 70 i+ git_branch_iterator_free(it); Err bitreich.org 70 i+ Err bitreich.org 70 i+ return ret; Err bitreich.org 70 i+} Err bitreich.org 70 i+ Err bitreich.org 70 i+int Err bitreich.org 70 i+tagcompare(void *s1, void *s2) Err bitreich.org 70 i+{ Err bitreich.org 70 i+ return strcmp(*(char **)s1, *(char **)s2); Err bitreich.org 70 i+} Err bitreich.org 70 i+ Err bitreich.org 70 i+int Err bitreich.org 70 i+writetags(FILE *fp) Err bitreich.org 70 i+{ Err bitreich.org 70 i+ struct commitinfo *ci; Err bitreich.org 70 i+ git_strarray tagnames; Err bitreich.org 70 i+ git_object *obj = NULL; Err bitreich.org 70 i+ const git_oid *id = NULL; Err bitreich.org 70 i+ size_t i, len; Err bitreich.org 70 i+ Err bitreich.org 70 i+ fputs("

Tags

\n" Err bitreich.org 70 i+ "" Err bitreich.org 70 i+ "" Err bitreich.org 70 i+ "\n\n", fp); Err bitreich.org 70 i+ Err bitreich.org 70 i+ /* summary page with branches and tags */ Err bitreich.org 70 i+ memset(&tagnames, 0, sizeof(tagnames)); Err bitreich.org 70 i+ git_tag_list(&tagnames, repo); Err bitreich.org 70 i+ /* sort names */ Err bitreich.org 70 i+ qsort(tagnames.strings, tagnames.count, sizeof(char *), Err bitreich.org 70 i+ (int (*)(const void *, const void *))&tagcompare); Err bitreich.org 70 i+ for (i = 0; i < tagnames.count; i++) { Err bitreich.org 70 i+ if (git_revparse_single(&obj, repo, tagnames.strings[i])) Err bitreich.org 70 i+ continue; Err bitreich.org 70 i+ id = git_object_id(obj); Err bitreich.org 70 i+ if (!(ci = commitinfo_getbyoid(id))) Err bitreich.org 70 i+ break; Err bitreich.org 70 i+ Err bitreich.org 70 i+ relpath = ""; Err bitreich.org 70 i+ Err bitreich.org 70 i+ fputs("\n", fp); Err bitreich.org 70 i+ Err bitreich.org 70 i+ relpath = "../"; Err bitreich.org 70 i+ Err bitreich.org 70 i+ commitinfo_free(ci); Err bitreich.org 70 i+ git_object_free(obj); Err bitreich.org 70 i+ } Err bitreich.org 70 i+ fputs("
TagAgeCommit messageAuthorFiles+-
", fp); Err bitreich.org 70 i+ xmlencode(fp, tagnames.strings[i], strlen(tagnames.strings[i])); Err bitreich.org 70 i+ fputs("", fp); Err bitreich.org 70 i+ if (ci->author) Err bitreich.org 70 i+ printtimeshort(fp, &(ci->author->when)); Err bitreich.org 70 i+ fputs("", fp); Err bitreich.org 70 i+ if (ci->summary) { Err bitreich.org 70 i+ fprintf(fp, "", relpath, ci->oid); Err bitreich.org 70 i+ if ((len = strlen(ci->summary)) > summarylen) { Err bitreich.org 70 i+ xmlencode(fp, ci->summary, summarylen - 1); Err bitreich.org 70 i+ fputs("…", fp); Err bitreich.org 70 i+ } else { Err bitreich.org 70 i+ xmlencode(fp, ci->summary, len); Err bitreich.org 70 i+ } Err bitreich.org 70 i+ fputs("", fp); Err bitreich.org 70 i+ } Err bitreich.org 70 i+ fputs("", fp); Err bitreich.org 70 i+ if (ci->author) Err bitreich.org 70 i+ xmlencode(fp, ci->author->name, strlen(ci->author->name)); Err bitreich.org 70 i+ fputs("", fp); Err bitreich.org 70 i+ fprintf(fp, "%zu", ci->filecount); Err bitreich.org 70 i+ fputs("", fp); Err bitreich.org 70 i+ fprintf(fp, "+%zu", ci->addcount); Err bitreich.org 70 i+ fputs("", fp); Err bitreich.org 70 i+ fprintf(fp, "-%zu", ci->delcount); Err bitreich.org 70 i+ fputs("
", fp); Err bitreich.org 70 i+ git_strarray_free(&tagnames); Err bitreich.org 70 i Err bitreich.org 70 i return 0; Err bitreich.org 70 i } Err bitreich.org 70 i Err bitreich.org 70 i int Err bitreich.org 70 i+writerefs(FILE *fp) Err bitreich.org 70 i+{ Err bitreich.org 70 i+ int ret; Err bitreich.org 70 i+ Err bitreich.org 70 i+ if ((ret = writebranches(fp))) Err bitreich.org 70 i+ return ret; Err bitreich.org 70 i+ return writetags(fp); 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 git_object *obj = NULL; Err bitreich.org 70 i+ git_branch_iterator *it = NULL; Err bitreich.org 70 i+ git_branch_t branch; Err bitreich.org 70 i+ git_reference *ref = NULL; Err bitreich.org 70 i+ const char *branchname = 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@@ -827,15 +1017,43 @@ main(int argc, char *argv[]) Err bitreich.org 70 i hasreadme = !git_revparse_single(&obj, repo, "HEAD:README"); Err bitreich.org 70 i git_object_free(obj); Err bitreich.org 70 i Err bitreich.org 70 i+ /* log for HEAD */ Err bitreich.org 70 i fp = efopen("log.html", "w"); Err bitreich.org 70 i writeheader(fp); Err bitreich.org 70 i- writelog(fp); Err bitreich.org 70 i+ writelog(fp, "HEAD"); Err bitreich.org 70 i writefooter(fp); Err bitreich.org 70 i fclose(fp); Err bitreich.org 70 i Err bitreich.org 70 i+ /* log for local branches */ Err bitreich.org 70 i+ if (git_branch_iterator_new(&it, repo, GIT_BRANCH_LOCAL)) Err bitreich.org 70 i+ err(1, "git_branch_iterator_new"); Err bitreich.org 70 i+ Err bitreich.org 70 i+ while (!git_branch_next(&ref, &branch, it)) { Err bitreich.org 70 i+ if (git_branch_name(&branchname, ref)) Err bitreich.org 70 i+ continue; Err bitreich.org 70 i+ Err bitreich.org 70 i+ snprintf(path, sizeof(path), "log-%s.html", branchname); Err bitreich.org 70 i+ Err bitreich.org 70 i+ fp = efopen(path, "w"); Err bitreich.org 70 i+ writeheader(fp); Err bitreich.org 70 i+ writelog(fp, branchname); Err bitreich.org 70 i+ writefooter(fp); Err bitreich.org 70 i+ fclose(fp); Err bitreich.org 70 i+ } Err bitreich.org 70 i+ git_reference_free(ref); Err bitreich.org 70 i+ git_branch_iterator_free(it); Err bitreich.org 70 i+ Err bitreich.org 70 i+ /* files for HEAD */ Err bitreich.org 70 i fp = efopen("files.html", "w"); Err bitreich.org 70 i writeheader(fp); Err bitreich.org 70 i- writefiles(fp); Err bitreich.org 70 i+ writefiles(fp, "HEAD"); Err bitreich.org 70 i+ writefooter(fp); Err bitreich.org 70 i+ fclose(fp); Err bitreich.org 70 i+ Err bitreich.org 70 i+ /* summary page with branches and tags */ Err bitreich.org 70 i+ fp = efopen("refs.html", "w"); Err bitreich.org 70 i+ writeheader(fp); Err bitreich.org 70 i+ writerefs(fp); Err bitreich.org 70 i writefooter(fp); Err bitreich.org 70 i fclose(fp); Err bitreich.org 70 i Err bitreich.org 70 .