file page improvements
- header with filename and size - handle binary files - small style changes
1 files changed, 21 insertions(+), 15 deletions(-) | |||
---|---|---|---|
M | urmoms.c | +21 | -15 |
1@@ -529,31 +529,37 @@ writeatom(FILE *fp)
2 }
3
4 int
5-writeblob(const char *path)
6+writeblob(git_index_entry *entry)
7 {
8- char htmlpath[PATH_MAX];
9- char refpath[PATH_MAX];
10+ char fpath[PATH_MAX];
11+ char ref[PATH_MAX];
12 git_object *obj = NULL;
13 FILE *fp;
14
15- snprintf(htmlpath, sizeof(htmlpath), "file/%s.html", path);
16- snprintf(refpath, sizeof(refpath), "HEAD:%s", path);
17+ snprintf(fpath, sizeof(fpath), "file/%s.html", entry->path);
18+ snprintf(ref, sizeof(ref), "HEAD:%s", entry->path);
19
20- if (git_revparse_single(&obj, repo, refpath))
21- return 1; /* TODO: handle error */
22+ if (git_revparse_single(&obj, repo, ref))
23+ return 1;
24
25- mkdirp(dirname(htmlpath));
26+ if (mkdirp(dirname(fpath)))
27+ return 1;
28
29 relpath = "../"; /* TODO: dynamic relpath based on number of /'s */
30
31- fp = efopen(htmlpath, "w+b");
32+ fp = efopen(fpath, "w+b");
33 writeheader(fp);
34- fputs("<pre>\n", fp);
35- writeblobhtml(fp, (git_blob *)obj);
36- if (ferror(fp))
37- err(1, "fwrite");
38+ fprintf(fp, "<p>%s (%" PRIu64 "b)</p><hr/>", entry->path, entry->file_size);
39+ if (git_blob_is_binary((git_blob *)obj)) {
40+ fprintf(fp, "<p>Binary file</p>\n");
41+ } else {
42+ fputs("<pre>\n", fp);
43+ writeblobhtml(fp, (git_blob *)obj);
44+ if (ferror(fp))
45+ err(1, "fwrite");
46+ fputs("</pre>\n", fp);
47+ }
48 git_object_free(obj);
49- fputs("</pre>\n", fp);
50 writefooter(fp);
51 fclose(fp);
52
53@@ -589,7 +595,7 @@ writefiles(FILE *fp)
54 fprintf(fp, "%" PRIu64, entry->file_size);
55 fputs("</td></tr>\n", fp);
56
57- writeblob(entry->path);
58+ writeblob(entry);
59 }
60
61 fputs("</tbody></table>", fp);