X-Git-Url: https://git.cameronkatri.com/cgit.git/blobdiff_plain/0f0ab148c6d444316af10e6b4c7a60630fed45d3..6940b23b9e4698ba466a4616e4de77b986560ad3:/ui-patch.c

diff --git a/ui-patch.c b/ui-patch.c
index e60877d..ca008f3 100644
--- a/ui-patch.c
+++ b/ui-patch.c
@@ -57,6 +57,10 @@ static void header(unsigned char *sha1, char *path1, int mode1,
 
 static void filepair_cb(struct diff_filepair *pair)
 {
+	unsigned long old_size = 0;
+	unsigned long new_size = 0;
+	int binary = 0;
+
 	header(pair->one->sha1, pair->one->path, pair->one->mode,
 	       pair->two->sha1, pair->two->path, pair->two->mode);
 	if (S_ISGITLINK(pair->one->mode) || S_ISGITLINK(pair->two->mode)) {
@@ -66,11 +70,14 @@ static void filepair_cb(struct diff_filepair *pair)
 			print_line(fmt("+Subproject %s", sha1_to_hex(pair->two->sha1)), 52);
 		return;
 	}
-	if (cgit_diff_files(pair->one->sha1, pair->two->sha1, print_line))
+	if (cgit_diff_files(pair->one->sha1, pair->two->sha1, &old_size,
+			    &new_size, &binary, 0, 0, print_line))
 		html("Error running diff");
+	if (binary)
+		html("Binary files differ\n");
 }
 
-void cgit_print_patch(char *hex)
+void cgit_print_patch(char *hex, const char *prefix)
 {
 	struct commit *commit;
 	struct commitinfo *info;
@@ -101,9 +108,13 @@ void cgit_print_patch(char *hex)
 	ctx.page.filename = patchname;
 	cgit_print_http_headers(&ctx);
 	htmlf("From %s Mon Sep 17 00:00:00 2001\n", sha1_to_hex(sha1));
-	htmlf("From: %s%s\n", info->author, info->author_email);
+	htmlf("From: %s", info->author);
+	if (!ctx.cfg.noplainemail) {
+		htmlf(" %s", info->author_email);
+	}
+	html("\n");
 	html("Date: ");
-	cgit_print_date(info->author_date, "%a, %d  %b  %Y  %H:%M:%S  %z%n", ctx.cfg.local_time);
+	cgit_print_date(info->author_date, "%a, %d %b %Y %H:%M:%S %z%n", ctx.cfg.local_time);
 	htmlf("Subject: %s\n\n", info->subject);
 	if (info->msg && *info->msg) {
 		htmlf("%s", info->msg);
@@ -111,7 +122,9 @@ void cgit_print_patch(char *hex)
 			html("\n");
 	}
 	html("---\n");
-	cgit_diff_tree(old_sha1, sha1, filepair_cb, NULL);
+	if (prefix)
+		htmlf("(limited to '%s')\n\n", prefix);
+	cgit_diff_tree(old_sha1, sha1, filepair_cb, prefix, 0);
 	html("--\n");
 	htmlf("cgit %s\n", CGIT_VERSION);
 	cgit_free_commitinfo(info);