writeblobhtml: improve file view for text-browsers
browsers such as lynx and w3m have some quirks displaying tables and pre elements. links is a bit better with this.
This commit is contained in:
parent
4035291297
commit
44b20f3414
1 changed files with 19 additions and 16 deletions
35
stagit.c
35
stagit.c
|
@ -378,28 +378,31 @@ writefooter(FILE *fp)
|
|||
int
|
||||
writeblobhtml(FILE *fp, const git_blob *blob)
|
||||
{
|
||||
off_t i;
|
||||
size_t n = 0;
|
||||
const char *nfmt = "<a href=\"#l%d\" id=\"l%d\">%d</a>\n";
|
||||
size_t n, i, prev;
|
||||
const char *nfmt = "<a href=\"#l%d\" class=\"line\" id=\"l%d\">%6d</a> ";
|
||||
const char *s = git_blob_rawcontent(blob);
|
||||
git_off_t len = git_blob_rawsize(blob);
|
||||
|
||||
fputs("<table id=\"blob\"><tr><td class=\"num\"><pre>\n", fp);
|
||||
fputs("<pre id=\"blob\">\n", fp);
|
||||
|
||||
if (len) {
|
||||
n++;
|
||||
fprintf(fp, nfmt, n, n, n);
|
||||
for (i = 0; i < len - 1; i++) {
|
||||
if (s[i] == '\n') {
|
||||
n++;
|
||||
fprintf(fp, nfmt, n, n, n);
|
||||
}
|
||||
if (len > 0) {
|
||||
for (i = 0, prev = 0, n = 0; i < (size_t)len; i++) {
|
||||
if (s[i] != '\n')
|
||||
continue;
|
||||
n++;
|
||||
fprintf(fp, nfmt, n, n, n);
|
||||
xmlencode(fp, &s[prev], i - prev + 1);
|
||||
prev = i + 1;
|
||||
}
|
||||
/* trailing data */
|
||||
if ((i - prev) > 0) {
|
||||
n++;
|
||||
fprintf(fp, nfmt, n, n, n);
|
||||
xmlencode(fp, &s[prev], len - prev);
|
||||
}
|
||||
}
|
||||
|
||||
fputs("</pre></td><td><pre>\n", fp);
|
||||
xmlencode(fp, s, (size_t)len);
|
||||
fputs("</pre></td></tr></table>\n", fp);
|
||||
fputs("</pre>\n", fp);
|
||||
|
||||
return n;
|
||||
}
|
||||
|
@ -486,7 +489,7 @@ printshowfile(FILE *fp, struct commitinfo *ci)
|
|||
fwrite(&linestr[add], 1, del, fp);
|
||||
fputs("</span></td></tr>\n", fp);
|
||||
}
|
||||
fprintf(fp, "</table>%zu file%s changed, %zu insertion%s(+), %zu deletion%s(-)\n",
|
||||
fprintf(fp, "</table></pre><pre>%zu file%s changed, %zu insertion%s(+), %zu deletion%s(-)\n",
|
||||
ci->filecount, ci->filecount == 1 ? "" : "s",
|
||||
ci->addcount, ci->addcount == 1 ? "" : "s",
|
||||
ci->delcount, ci->delcount == 1 ? "" : "s");
|
||||
|
|
Loading…
Reference in a new issue