file page improvements - stagit-gopher - A git gopher frontend. (mirror) | |
git clone git://bitreich.org/stagit-gopher/ git://enlrupgkhuxnvlhsf6lc3fziv5h2h… | |
Log | |
Files | |
Refs | |
Tags | |
README | |
LICENSE | |
--- | |
commit d77d972007d6f996ab4667b9dbbd1e241304c61e | |
parent 23fdbb0c8cd8f875e678c17ef79919a22d704c7a | |
Author: Eivind Uggedal <[email protected]> | |
Date: Thu, 10 Dec 2015 18:13:08 +0000 | |
file page improvements | |
- header with filename and size | |
- handle binary files | |
- small style changes | |
Diffstat: | |
M urmoms.c | 36 ++++++++++++++++++-----------… | |
1 file changed, 21 insertions(+), 15 deletions(-) | |
--- | |
diff --git a/urmoms.c b/urmoms.c | |
@@ -529,31 +529,37 @@ writeatom(FILE *fp) | |
} | |
int | |
-writeblob(const char *path) | |
+writeblob(git_index_entry *entry) | |
{ | |
- char htmlpath[PATH_MAX]; | |
- char refpath[PATH_MAX]; | |
+ char fpath[PATH_MAX]; | |
+ char ref[PATH_MAX]; | |
git_object *obj = NULL; | |
FILE *fp; | |
- snprintf(htmlpath, sizeof(htmlpath), "file/%s.html", path); | |
- snprintf(refpath, sizeof(refpath), "HEAD:%s", path); | |
+ snprintf(fpath, sizeof(fpath), "file/%s.html", entry->path); | |
+ snprintf(ref, sizeof(ref), "HEAD:%s", entry->path); | |
- if (git_revparse_single(&obj, repo, refpath)) | |
- return 1; /* TODO: handle error */ | |
+ if (git_revparse_single(&obj, repo, ref)) | |
+ return 1; | |
- mkdirp(dirname(htmlpath)); | |
+ if (mkdirp(dirname(fpath))) | |
+ return 1; | |
relpath = "../"; /* TODO: dynamic relpath based on number of /'s */ | |
- fp = efopen(htmlpath, "w+b"); | |
+ fp = efopen(fpath, "w+b"); | |
writeheader(fp); | |
- fputs("<pre>\n", fp); | |
- writeblobhtml(fp, (git_blob *)obj); | |
- if (ferror(fp)) | |
- err(1, "fwrite"); | |
+ fprintf(fp, "<p>%s (%" PRIu64 "b)</p><hr/>", entry->path, entry->file_… | |
+ if (git_blob_is_binary((git_blob *)obj)) { | |
+ fprintf(fp, "<p>Binary file</p>\n"); | |
+ } else { | |
+ fputs("<pre>\n", fp); | |
+ writeblobhtml(fp, (git_blob *)obj); | |
+ if (ferror(fp)) | |
+ err(1, "fwrite"); | |
+ fputs("</pre>\n", fp); | |
+ } | |
git_object_free(obj); | |
- fputs("</pre>\n", fp); | |
writefooter(fp); | |
fclose(fp); | |
@@ -589,7 +595,7 @@ writefiles(FILE *fp) | |
fprintf(fp, "%" PRIu64, entry->file_size); | |
fputs("</td></tr>\n", fp); | |
- writeblob(entry->path); | |
+ writeblob(entry); | |
} | |
fputs("</tbody></table>", fp); |