X-Git-Url: https://gitweb.ps.run/ps-cgit/blobdiff_plain/cb92d05b6b729cd0e219b43d7a79aff832a9c1ac..c0dfaf1c281d0697ce43131343d7a9f170a61ff9:/ui-patch.c diff --git a/ui-patch.c b/ui-patch.c index 2a8f7a5..fbb92cc 100644 --- a/ui-patch.c +++ b/ui-patch.c @@ -7,6 +7,7 @@ */ #include "cgit.h" +#include "ui-patch.h" #include "html.h" #include "ui-shared.h" @@ -28,11 +29,6 @@ static void header(unsigned char *sha1, char *path1, int mode1, subproject = (S_ISGITLINK(mode1) || S_ISGITLINK(mode2)); htmlf("diff --git a/%s b/%s\n", path1, path2); - if (is_null_sha1(sha1)) - path1 = "dev/null"; - if (is_null_sha1(sha2)) - path2 = "dev/null"; - if (mode1 == 0) htmlf("new file mode %.6o\n", mode2); @@ -50,8 +46,18 @@ static void header(unsigned char *sha1, char *path1, int mode1, if (mode2 != mode1) htmlf("..%.6o", mode2); } - htmlf("\n--- a/%s\n", path1); - htmlf("+++ b/%s\n", path2); + + if (is_null_sha1(sha1)) { + path1 = "dev/null"; + htmlf("\n--- /%s\n", path1); + } else + htmlf("\n--- a/%s\n", path1); + + if (is_null_sha1(sha2)) { + path2 = "dev/null"; + htmlf("+++ /%s\n", path2); + } else + htmlf("+++ b/%s\n", path2); } } @@ -71,13 +77,13 @@ static void filepair_cb(struct diff_filepair *pair) return; } if (cgit_diff_files(pair->one->sha1, pair->two->sha1, &old_size, - &new_size, &binary, print_line)) + &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; @@ -88,12 +94,12 @@ void cgit_print_patch(char *hex) hex = ctx.qry.head; if (get_sha1(hex, sha1)) { - cgit_print_error(fmt("Bad object id: %s", hex)); + cgit_print_error("Bad object id: %s", hex); return; } commit = lookup_commit_reference(sha1); if (!commit) { - cgit_print_error(fmt("Bad commit reference: %s", hex)); + cgit_print_error("Bad commit reference: %s", hex); return; } info = cgit_parse_commit(commit); @@ -122,8 +128,10 @@ 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); + htmlf("cgit %s\n", cgit_version); cgit_free_commitinfo(info); }