stagit

file page improvements

- header with filename and size
- handle binary files
- small style changes

Eivind Uggedal contact@arjunchoudhary.com

commit: 23479d7 parent: 8668c26
1 files changed, 21 insertions(+), 15 deletions(-)
Murmoms.c+21-15
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);