X-Git-Url: https://gitweb.ps.run/ps-cgit/blobdiff_plain/620bb3e5e4ff87da740fe7232ba74330b5f862d4..502865a5ec40fed5f1f865cb34002aecaab8405e:/ui-patch.c diff --git a/ui-patch.c b/ui-patch.c index ef79c7c..c1c4ce3 100644 --- a/ui-patch.c +++ b/ui-patch.c @@ -7,6 +7,8 @@ */ #include "cgit.h" +#include "html.h" +#include "ui-shared.h" static void print_line(char *line, int len) { @@ -68,7 +70,7 @@ static void filepair_cb(struct diff_filepair *pair) html("Error running diff"); } -void cgit_print_patch(char *hex, struct cacheitem *item) +void cgit_print_patch(char *hex) { struct commit *commit; struct commitinfo *info; @@ -76,7 +78,7 @@ void cgit_print_patch(char *hex, struct cacheitem *item) char *patchname; if (!hex) - hex = cgit_query_head; + hex = ctx.qry.head; if (get_sha1(hex, sha1)) { cgit_print_error(fmt("Bad object id: %s", hex)); @@ -88,15 +90,26 @@ void cgit_print_patch(char *hex, struct cacheitem *item) return; } info = cgit_parse_commit(commit); - hashcpy(old_sha1, commit->parents->item->object.sha1); + + if (commit->parents && commit->parents->item) + hashcpy(old_sha1, commit->parents->item->object.sha1); + else + hashclr(old_sha1); patchname = fmt("%s.patch", sha1_to_hex(sha1)); - cgit_print_snapshot_start("text/plain", patchname, item); + ctx.page.mimetype = "text/plain"; + 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); html("Date: "); cgit_print_date(info->author_date, "%a, %d %b %Y %H:%M:%S %z%n"); - htmlf("Subject: %s\n\n%s", info->subject, info->msg); + htmlf("Subject: %s\n\n", info->subject); + if (info->msg && *info->msg) { + htmlf("%s", info->msg); + if (info->msg[strlen(info->msg) - 1] != '\n') + html("\n"); + } html("---\n"); cgit_diff_tree(old_sha1, sha1, filepair_cb, NULL); html("--\n");