isort branches and tags by time (descending) and add tags.xml for releases - 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 4dded587b089f4c2fda9694a908157a549c6cc1a /scm/stagit-gopher/commit/4dded587b089f4c2fda9694a908157a549c6cc1a.gph bitreich.org 70
1parent de86bac090f236501ee9f211d2bd55aa39c38ac7 /scm/stagit-gopher/commit/de86bac090f236501ee9f211d2bd55aa39c38ac7.gph bitreich.org 70
hAuthor: Hiltjo Posthuma <hiltjo@codemadness.org> URL:mailto:hiltjo@codemadness.org bitreich.org 70
iDate: Sun, 19 Jul 2020 18:56:10 +0200 Err bitreich.org 70
i Err bitreich.org 70
isort branches and tags by time (descending) and add tags.xml for releases Err bitreich.org 70
i Err bitreich.org 70
iSimilar to the recent changes to stagit (HTML version). Err bitreich.org 70
i Err bitreich.org 70
iDiffstat: Err bitreich.org 70
i M stagit-gopher.1 | 6 ++++-- Err bitreich.org 70
i M stagit-gopher.c | 294 ++++++++++++++++++++----------- Err bitreich.org 70
i Err bitreich.org 70
i2 files changed, 192 insertions(+), 108 deletions(-) Err bitreich.org 70
i--- Err bitreich.org 70
1diff --git a/stagit-gopher.1 b/stagit-gopher.1 /scm/stagit-gopher/file/stagit-gopher.1.gph bitreich.org 70
i@@ -1,4 +1,4 @@ Err bitreich.org 70
i-.Dd February 6, 2019 Err bitreich.org 70
i+.Dd July 19, 2020 Err bitreich.org 70
i .Dt STAGIT-GOPHER 1 Err bitreich.org 70
i .Os Err bitreich.org 70
i .Sh NAME Err bitreich.org 70
i@@ -46,7 +46,9 @@ cannot be used at the same time. Err bitreich.org 70
i The following files will be written: Err bitreich.org 70
i .Bl -tag -width Ds Err bitreich.org 70
i .It atom.xml Err bitreich.org 70
i-Atom XML feed Err bitreich.org 70
i+Atom XML feed of the last 100 commits. Err bitreich.org 70
i+.It tags.xml Err bitreich.org 70
i+Atom XML feed of the tags. Err bitreich.org 70
i .It files.gph Err bitreich.org 70
i List of files in the latest tree, linking to the file. Err bitreich.org 70
i .It log.gph Err bitreich.org 70
1diff --git a/stagit-gopher.c b/stagit-gopher.c /scm/stagit-gopher/file/stagit-gopher.c.gph bitreich.org 70
i@@ -50,6 +50,12 @@ struct commitinfo { Err bitreich.org 70
i size_t ndeltas; Err bitreich.org 70
i }; Err bitreich.org 70
i Err bitreich.org 70
i+/* reference and associated data for sorting */ Err bitreich.org 70
i+struct referenceinfo { Err bitreich.org 70
i+ struct git_reference *ref; Err bitreich.org 70
i+ struct commitinfo *ci; Err bitreich.org 70
i+}; Err bitreich.org 70
i+ Err bitreich.org 70
i static git_repository *repo; Err bitreich.org 70
i Err bitreich.org 70
i static const char *relpath = ""; Err bitreich.org 70
i@@ -288,6 +294,104 @@ err: Err bitreich.org 70
i return NULL; Err bitreich.org 70
i } Err bitreich.org 70
i Err bitreich.org 70
i+int Err bitreich.org 70
i+refs_cmp(const void *v1, const void *v2) Err bitreich.org 70
i+{ Err bitreich.org 70
i+ struct referenceinfo *r1 = (struct referenceinfo *)v1; Err bitreich.org 70
i+ struct referenceinfo *r2 = (struct referenceinfo *)v2; Err bitreich.org 70
i+ time_t t1, t2; Err bitreich.org 70
i+ int r; Err bitreich.org 70
i+ Err bitreich.org 70
i+ if ((r = git_reference_is_tag(r1->ref) - git_reference_is_tag(r2->ref))) Err bitreich.org 70
i+ return r; Err bitreich.org 70
i+ Err bitreich.org 70
i+ t1 = r1->ci->author ? r1->ci->author->when.time : 0; Err bitreich.org 70
i+ t2 = r2->ci->author ? r2->ci->author->when.time : 0; Err bitreich.org 70
i+ if ((r = t1 > t2 ? -1 : (t1 == t2 ? 0 : 1))) Err bitreich.org 70
i+ return r; Err bitreich.org 70
i+ Err bitreich.org 70
i+ return strcmp(git_reference_shorthand(r1->ref), Err bitreich.org 70
i+ git_reference_shorthand(r2->ref)); Err bitreich.org 70
i+} Err bitreich.org 70
i+ Err bitreich.org 70
i+int Err bitreich.org 70
i+getrefs(struct referenceinfo **pris, size_t *prefcount) Err bitreich.org 70
i+{ Err bitreich.org 70
i+ struct referenceinfo *ris = NULL; Err bitreich.org 70
i+ struct commitinfo *ci = NULL; Err bitreich.org 70
i+ git_reference_iterator *it = NULL; Err bitreich.org 70
i+ const git_oid *id = NULL; Err bitreich.org 70
i+ git_object *obj = NULL; Err bitreich.org 70
i+ git_reference *dref = NULL, *r, *ref = NULL; Err bitreich.org 70
i+ size_t i, refcount; Err bitreich.org 70
i+ Err bitreich.org 70
i+ *pris = NULL; Err bitreich.org 70
i+ *prefcount = 0; Err bitreich.org 70
i+ Err bitreich.org 70
i+ if (git_reference_iterator_new(&it, repo)) Err bitreich.org 70
i+ return -1; Err bitreich.org 70
i+ Err bitreich.org 70
i+ for (refcount = 0; !git_reference_next(&ref, it); ) { Err bitreich.org 70
i+ if (!git_reference_is_branch(ref) && !git_reference_is_tag(ref)) { Err bitreich.org 70
i+ git_reference_free(ref); Err bitreich.org 70
i+ ref = NULL; Err bitreich.org 70
i+ continue; Err bitreich.org 70
i+ } Err bitreich.org 70
i+ 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+ r = dref; Err bitreich.org 70
i+ break; Err bitreich.org 70
i+ case GIT_REF_OID: Err bitreich.org 70
i+ r = 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 (!git_reference_target(r) || Err bitreich.org 70
i+ git_reference_peel(&obj, r, GIT_OBJ_ANY)) Err bitreich.org 70
i+ goto err; Err bitreich.org 70
i+ if (!(id = git_object_id(obj))) 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+ if (!(ris = reallocarray(ris, refcount + 1, sizeof(*ris)))) Err bitreich.org 70
i+ err(1, "realloc"); Err bitreich.org 70
i+ ris[refcount].ci = ci; Err bitreich.org 70
i+ ris[refcount].ref = r; Err bitreich.org 70
i+ refcount++; Err bitreich.org 70
i+ Err bitreich.org 70
i+ git_object_free(obj); Err bitreich.org 70
i+ obj = NULL; Err bitreich.org 70
i+ git_reference_free(dref); Err bitreich.org 70
i+ dref = NULL; Err bitreich.org 70
i+ } Err bitreich.org 70
i+ git_reference_iterator_free(it); Err bitreich.org 70
i+ Err bitreich.org 70
i+ /* sort by type, date then shorthand name */ Err bitreich.org 70
i+ qsort(ris, refcount, sizeof(*ris), refs_cmp); Err bitreich.org 70
i+ Err bitreich.org 70
i+ *pris = ris; Err bitreich.org 70
i+ *prefcount = refcount; Err bitreich.org 70
i+ Err bitreich.org 70
i+ return 0; Err bitreich.org 70
i+ Err bitreich.org 70
i+err: Err bitreich.org 70
i+ git_object_free(obj); Err bitreich.org 70
i+ git_reference_free(dref); Err bitreich.org 70
i+ commitinfo_free(ci); Err bitreich.org 70
i+ for (i = 0; i < refcount; i++) { Err bitreich.org 70
i+ commitinfo_free(ris[i].ci); Err bitreich.org 70
i+ git_reference_free(ris[i].ref); Err bitreich.org 70
i+ } Err bitreich.org 70
i+ free(ris); Err bitreich.org 70
i+ Err bitreich.org 70
i+ return -1; Err bitreich.org 70
i+} Err bitreich.org 70
i+ Err bitreich.org 70
i FILE * Err bitreich.org 70
i efopen(const char *name, const char *flags) Err bitreich.org 70
i { Err bitreich.org 70
i@@ -760,7 +864,7 @@ err: Err bitreich.org 70
i } Err bitreich.org 70
i Err bitreich.org 70
i void Err bitreich.org 70
i-printcommitatom(FILE *fp, struct commitinfo *ci) Err bitreich.org 70
i+printcommitatom(FILE *fp, struct commitinfo *ci, const char *tag) Err bitreich.org 70
i { Err bitreich.org 70
i fputs("<entry>\n", fp); Err bitreich.org 70
i Err bitreich.org 70
i@@ -777,6 +881,11 @@ printcommitatom(FILE *fp, struct commitinfo *ci) Err bitreich.org 70
i } Err bitreich.org 70
i if (ci->summary) { Err bitreich.org 70
i fputs("<title type=\"text\">", fp); Err bitreich.org 70
i+ if (tag) { Err bitreich.org 70
i+ fputs("[", fp); Err bitreich.org 70
i+ xmlencode(fp, tag, strlen(tag)); Err bitreich.org 70
i+ fputs("] ", fp); Err bitreich.org 70
i+ } Err bitreich.org 70
i xmlencode(fp, ci->summary, strlen(ci->summary)); Err bitreich.org 70
i fputs("</title>\n", fp); Err bitreich.org 70
i } Err bitreich.org 70
i@@ -812,8 +921,10 @@ printcommitatom(FILE *fp, struct commitinfo *ci) 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+writeatom(FILE *fp, int all) Err bitreich.org 70
i { Err bitreich.org 70
i+ struct referenceinfo *ris = NULL; Err bitreich.org 70
i+ size_t refcount = 0; Err bitreich.org 70
i struct commitinfo *ci; Err bitreich.org 70
i git_revwalk *w = NULL; Err bitreich.org 70
i git_oid id; Err bitreich.org 70
i@@ -826,17 +937,34 @@ writeatom(FILE *fp) Err bitreich.org 70
i xmlencode(fp, description, strlen(description)); Err bitreich.org 70
i fputs("</subtitle>\n", 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- git_revwalk_simplify_first_parent(w); Err bitreich.org 70
i+ /* all commits or only tags? */ Err bitreich.org 70
i+ if (all) { 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_simplify_first_parent(w); Err bitreich.org 70
i+ for (i = 0; i < m && !git_revwalk_next(&id, w); i++) { Err bitreich.org 70
i+ if (!(ci = commitinfo_getbyoid(&id))) Err bitreich.org 70
i+ break; Err bitreich.org 70
i+ printcommitatom(fp, ci, ""); Err bitreich.org 70
i+ commitinfo_free(ci); Err bitreich.org 70
i+ } Err bitreich.org 70
i+ git_revwalk_free(w); Err bitreich.org 70
i+ } else { Err bitreich.org 70
i+ /* references: tags */ Err bitreich.org 70
i+ if (getrefs(&ris, &refcount) != -1) { Err bitreich.org 70
i+ for (i = 0; i < refcount; i++) { Err bitreich.org 70
i+ if (!git_reference_is_tag(ris[i].ref)) Err bitreich.org 70
i+ continue; Err bitreich.org 70
i Err bitreich.org 70
i- for (i = 0; i < m && !git_revwalk_next(&id, w); i++) { Err bitreich.org 70
i- if (!(ci = commitinfo_getbyoid(&id))) Err bitreich.org 70
i- break; Err bitreich.org 70
i- printcommitatom(fp, ci); Err bitreich.org 70
i- commitinfo_free(ci); Err bitreich.org 70
i+ printcommitatom(fp, ris[i].ci, Err bitreich.org 70
i+ git_reference_shorthand(ris[i].ref)); Err bitreich.org 70
i+ Err bitreich.org 70
i+ commitinfo_free(ris[i].ci); Err bitreich.org 70
i+ git_reference_free(ris[i].ref); Err bitreich.org 70
i+ } Err bitreich.org 70
i+ free(ris); Err bitreich.org 70
i+ } 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("</feed>\n", fp); Err bitreich.org 70
i Err bitreich.org 70
i@@ -1012,115 +1140,63 @@ writefiles(FILE *fp, const git_oid *id) Err bitreich.org 70
i } Err bitreich.org 70
i Err bitreich.org 70
i int Err bitreich.org 70
i-refs_cmp(const void *v1, const void *v2) Err bitreich.org 70
i-{ Err bitreich.org 70
i- git_reference *r1 = (*(git_reference **)v1); Err bitreich.org 70
i- git_reference *r2 = (*(git_reference **)v2); Err bitreich.org 70
i- int r; Err bitreich.org 70
i- Err bitreich.org 70
i- if ((r = git_reference_is_branch(r1) - git_reference_is_branch(r2))) Err bitreich.org 70
i- return r; Err bitreich.org 70
i- Err bitreich.org 70
i- return strcmp(git_reference_shorthand(r1), Err bitreich.org 70
i- git_reference_shorthand(r2)); 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+ struct referenceinfo *ris = NULL; Err bitreich.org 70
i struct commitinfo *ci; Err bitreich.org 70
i- const git_oid *id = NULL; Err bitreich.org 70
i- git_object *obj = NULL; Err bitreich.org 70
i- git_reference *dref = NULL, *r, *ref = NULL; Err bitreich.org 70
i- git_reference_iterator *it = NULL; Err bitreich.org 70
i- git_reference **refs = NULL; Err bitreich.org 70
i size_t count, i, j, refcount; Err bitreich.org 70
i const char *titles[] = { "Branches", "Tags" }; Err bitreich.org 70
i- const char *name; Err bitreich.org 70
i+ const char *ids[] = { "branches", "tags" }; Err bitreich.org 70
i+ const char *s; Err bitreich.org 70
i char buf[256]; Err bitreich.org 70
i Err bitreich.org 70
i- if (git_reference_iterator_new(&it, repo)) Err bitreich.org 70
i+ if (getrefs(&ris, &refcount) == -1) Err bitreich.org 70
i return -1; Err bitreich.org 70
i Err bitreich.org 70
i- for (refcount = 0; !git_reference_next(&ref, it); refcount++) { Err bitreich.org 70
i- if (!(refs = reallocarray(refs, refcount + 1, sizeof(git_reference *)))) Err bitreich.org 70
i- err(1, "realloc"); Err bitreich.org 70
i- refs[refcount] = ref; Err bitreich.org 70
i- } Err bitreich.org 70
i- git_reference_iterator_free(it); Err bitreich.org 70
i- Err bitreich.org 70
i- /* sort by type then shorthand name */ Err bitreich.org 70
i- qsort(refs, refcount, sizeof(git_reference *), refs_cmp); Err bitreich.org 70
i- Err bitreich.org 70
i- for (j = 0; j < 2; j++) { Err bitreich.org 70
i- for (i = 0, count = 0; i < refcount; i++) { Err bitreich.org 70
i- if (!(git_reference_is_branch(refs[i]) && j == 0) && Err bitreich.org 70
i- !(git_reference_is_tag(refs[i]) && j == 1)) Err bitreich.org 70
i- continue; Err bitreich.org 70
i- Err bitreich.org 70
i- switch (git_reference_type(refs[i])) { Err bitreich.org 70
i- case GIT_REF_SYMBOLIC: Err bitreich.org 70
i- if (git_reference_resolve(&dref, refs[i])) Err bitreich.org 70
i- goto err; Err bitreich.org 70
i- r = dref; Err bitreich.org 70
i- break; Err bitreich.org 70
i- case GIT_REF_OID: Err bitreich.org 70
i- r = refs[i]; 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 (!git_reference_target(r) || Err bitreich.org 70
i- git_reference_peel(&obj, r, GIT_OBJ_ANY)) Err bitreich.org 70
i- goto err; Err bitreich.org 70
i- if (!(id = git_object_id(obj))) 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- /* print header if it has an entry (first). */ Err bitreich.org 70
i- if (++count == 1) { Err bitreich.org 70
i- fprintf(fp, "%s\n", titles[j]); Err bitreich.org 70
i- fprintf(fp, " %-32.32s", "Name"); Err bitreich.org 70
i- fprintf(fp, " %-16.16s", "Last commit date"); Err bitreich.org 70
i- fprintf(fp, " %s\n", "Author"); Err bitreich.org 70
i- } Err bitreich.org 70
i+ for (i = 0, j = 0, count = 0; i < refcount; i++) { Err bitreich.org 70
i+ if (j == 0 && git_reference_is_tag(ris[i].ref)) { Err bitreich.org 70
i+ /* table footer */ Err bitreich.org 70
i+ if (count) Err bitreich.org 70
i+ fputs("\n", fp); Err bitreich.org 70
i+ count = 0; Err bitreich.org 70
i+ j = 1; Err bitreich.org 70
i+ } Err bitreich.org 70
i Err bitreich.org 70
i- name = git_reference_shorthand(r); Err bitreich.org 70
i+ /* print header if it has an entry (first). */ Err bitreich.org 70
i+ if (++count == 1) { Err bitreich.org 70
i+ fprintf(fp, "%s\n", titles[j]); Err bitreich.org 70
i+ fprintf(fp, " %-32.32s", "Name"); Err bitreich.org 70
i+ fprintf(fp, " %-16.16s", "Last commit date"); Err bitreich.org 70
i+ fprintf(fp, " %s\n", "Author"); Err bitreich.org 70
i+ } Err bitreich.org 70
i Err bitreich.org 70
i- fputs(" ", fp); Err bitreich.org 70
i- utf8pad(buf, sizeof(buf), name, 32, ' '); Err bitreich.org 70
i+ ci = ris[i].ci; Err bitreich.org 70
i+ s = git_reference_shorthand(ris[i].ref); Err bitreich.org 70
i+ Err bitreich.org 70
i+ fputs(" ", fp); Err bitreich.org 70
i+ utf8pad(buf, sizeof(buf), s, 32, ' '); Err bitreich.org 70
i+ gphlink(fp, buf, strlen(buf)); 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+ else Err bitreich.org 70
i+ fputs(" ", fp); Err bitreich.org 70
i+ fputs(" ", fp); Err bitreich.org 70
i+ if (ci->author) { Err bitreich.org 70
i+ utf8pad(buf, sizeof(buf), ci->author->name, 25, '\0'); Err bitreich.org 70
i gphlink(fp, buf, strlen(buf)); 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- else Err bitreich.org 70
i- fputs(" ", fp); Err bitreich.org 70
i- fputs(" ", fp); Err bitreich.org 70
i- if (ci->author) { Err bitreich.org 70
i- utf8pad(buf, sizeof(buf), ci->author->name, 25, '\0'); Err bitreich.org 70
i- gphlink(fp, buf, strlen(buf)); Err bitreich.org 70
i- } Err bitreich.org 70
i- fputs("\n", fp); 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- obj = NULL; Err bitreich.org 70
i- git_reference_free(dref); Err bitreich.org 70
i- dref = NULL; Err bitreich.org 70
i } Err bitreich.org 70
i- /* table footer */ Err bitreich.org 70
i- if (count) Err bitreich.org 70
i- fputs("\n", fp); Err bitreich.org 70
i+ fputs("\n", fp); Err bitreich.org 70
i } Err bitreich.org 70
i+ /* table footer */ Err bitreich.org 70
i+ if (count) Err bitreich.org 70
i+ fputs("\n", fp); Err bitreich.org 70
i Err bitreich.org 70
i-err: Err bitreich.org 70
i- git_object_free(obj); Err bitreich.org 70
i- git_reference_free(dref); Err bitreich.org 70
i- Err bitreich.org 70
i- for (i = 0; i < refcount; i++) Err bitreich.org 70
i- git_reference_free(refs[i]); Err bitreich.org 70
i- free(refs); Err bitreich.org 70
i+ for (i = 0; i < refcount; i++) { Err bitreich.org 70
i+ commitinfo_free(ris[i].ci); Err bitreich.org 70
i+ git_reference_free(ris[i].ref); Err bitreich.org 70
i+ } Err bitreich.org 70
i+ free(ris); Err bitreich.org 70
i Err bitreich.org 70
i return 0; Err bitreich.org 70
i } Err bitreich.org 70
i@@ -1311,6 +1387,7 @@ main(int argc, char *argv[]) Err bitreich.org 70
i writelog(fp, head); Err bitreich.org 70
i } Err bitreich.org 70
i fprintf(fp, "\n[0|Atom feed|%s/atom.xml|server|port]\n", relpath); Err bitreich.org 70
i+ fprintf(fp, "\n[0|Atom feed (tags)|%s/tags.xml|server|port]\n", relpath); Err bitreich.org 70
i writefooter(fp); Err bitreich.org 70
i fclose(fp); Err bitreich.org 70
i Err bitreich.org 70
i@@ -1331,7 +1408,12 @@ main(int argc, char *argv[]) Err bitreich.org 70
i Err bitreich.org 70
i /* Atom feed */ Err bitreich.org 70
i fp = efopen("atom.xml", "w"); Err bitreich.org 70
i- writeatom(fp); Err bitreich.org 70
i+ writeatom(fp, 1); Err bitreich.org 70
i+ fclose(fp); Err bitreich.org 70
i+ Err bitreich.org 70
i+ /* Atom feed for tags / releases */ Err bitreich.org 70
i+ fp = efopen("tags.xml", "w"); Err bitreich.org 70
i+ writeatom(fp, 0); Err bitreich.org 70
i fclose(fp); Err bitreich.org 70
i Err bitreich.org 70
i /* rename new cache file on success */ Err bitreich.org 70
.
Response:
text/plain