X-Git-Url: https://gitweb.ps.run/ps-cgit/blobdiff_plain/ef688e16f05a5a3438e63645852c436fe33fab71..521e10c884055c800078e6dada97ccf6c5193aad:/ui-patch.c diff --git a/ui-patch.c b/ui-patch.c index 1d77336..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,7 +108,11 @@ 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); htmlf("Subject: %s\n\n", info->subject); @@ -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);