iwriteblobhtml: improve file view for text-browsers - 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 44b20f341443cf3daffbe2b092df28df522cad86 /scm/stagit-gopher/commit/44b20f341443cf3daffbe2b092df28df522cad86.gph bitreich.org 70 1parent 4035291297b1a559cd5b0bf4bef65b7fe33c59c1 /scm/stagit-gopher/commit/4035291297b1a559cd5b0bf4bef65b7fe33c59c1.gph bitreich.org 70 hAuthor: Hiltjo Posthuma URL:mailto:hiltjo@codemadness.org bitreich.org 70 iDate: Sun, 16 Apr 2017 20:37:42 +0200 Err bitreich.org 70 i Err bitreich.org 70 iwriteblobhtml: improve file view for text-browsers Err bitreich.org 70 i Err bitreich.org 70 ibrowsers such as lynx and w3m have some quirks displaying tables and pre Err bitreich.org 70 ielements. Err bitreich.org 70 i Err bitreich.org 70 ilinks is a bit better with this. Err bitreich.org 70 i Err bitreich.org 70 iDiffstat: Err bitreich.org 70 i M stagit.c | 35 +++++++++++++++++-------------- Err bitreich.org 70 i Err bitreich.org 70 i1 file changed, 19 insertions(+), 16 deletions(-) Err bitreich.org 70 i--- Err bitreich.org 70 1diff --git a/stagit.c b/stagit.c /scm/stagit-gopher/file/stagit.c.gph bitreich.org 70 i@@ -378,28 +378,31 @@ writefooter(FILE *fp) Err bitreich.org 70 i int 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; Err bitreich.org 70 i- size_t n = 0; Err bitreich.org 70 i- const char *nfmt = "%d\n"; Err bitreich.org 70 i+ size_t n, i, prev; Err bitreich.org 70 i+ const char *nfmt = "%6d "; Err bitreich.org 70 i const char *s = git_blob_rawcontent(blob); Err bitreich.org 70 i git_off_t len = git_blob_rawsize(blob); 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 	Err	bitreich.org	70
i-        if (len) {	Err	bitreich.org	70
i-                n++;	Err	bitreich.org	70
i-                fprintf(fp, nfmt, n, n, n);	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+        if (len > 0) {	Err	bitreich.org	70
i+                for (i = 0, prev = 0, n = 0; i < (size_t)len; i++) {	Err	bitreich.org	70
i+                        if (s[i] != '\n')	Err	bitreich.org	70
i+                                continue;	Err	bitreich.org	70
i+                        n++;	Err	bitreich.org	70
i+                        fprintf(fp, nfmt, n, n, n);	Err	bitreich.org	70
i+                        xmlencode(fp, &s[prev], i - prev + 1);	Err	bitreich.org	70
i+                        prev = i + 1;	Err	bitreich.org	70
i+                }	Err	bitreich.org	70
i+                /* trailing data */	Err	bitreich.org	70
i+                if ((i - prev) > 0) {	Err	bitreich.org	70
i+                        n++;	Err	bitreich.org	70
i+                        fprintf(fp, nfmt, n, n, n);	Err	bitreich.org	70
i+                        xmlencode(fp, &s[prev], len - prev);	Err	bitreich.org	70
i                 }	Err	bitreich.org	70
i         }	Err	bitreich.org	70
i 	Err	bitreich.org	70
i-        fputs("
\n", fp);	Err	bitreich.org	70
i-        xmlencode(fp, s, (size_t)len);	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 return n; Err bitreich.org 70 i } Err bitreich.org 70 i@@ -486,7 +489,7 @@ printshowfile(FILE *fp, struct commitinfo *ci) Err bitreich.org 70 i fwrite(&linestr[add], 1, del, fp); Err bitreich.org 70 i fputs("\n", fp); Err bitreich.org 70 i } Err bitreich.org 70 i- fprintf(fp, "%zu file%s changed, %zu insertion%s(+), %zu deletion%s(-)\n", Err bitreich.org 70 i+ fprintf(fp, "
%zu file%s changed, %zu insertion%s(+), %zu deletion%s(-)\n",	Err	bitreich.org	70
i                 ci->filecount, ci->filecount == 1 ? "" : "s",	Err	bitreich.org	70
i                 ci->addcount,  ci->addcount  == 1 ? "" : "s",	Err	bitreich.org	70
i                 ci->delcount,  ci->delcount  == 1 ? "" : "s");	Err	bitreich.org	70
.