SMOLNET PORTAL home about changes
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
Original URLgopher://bitreich.org/0/scm/stagit-gopher/commit/4dded587...
Content-Typetext/plain; charset=utf-8