log-tree.c: small refactor in show_signature()
The next patch needs to show the result of signature verification on a mergetag extended header in a way similar to how embedded signature for the commit object itself is shown. Separate out the logic to go through the message lines and show them in the "error" color (highlighted) or the "correct" color (dim). Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
parent
c871a1d17b
commit
c6b3ec41e2
28
log-tree.c
28
log-tree.c
@ -404,13 +404,27 @@ void log_write_email_headers(struct rev_info *opt, struct commit *commit,
|
|||||||
*extra_headers_p = extra_headers;
|
*extra_headers_p = extra_headers;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void show_sig_lines(struct rev_info *opt, int status, const char *bol)
|
||||||
|
{
|
||||||
|
const char *color, *reset, *eol;
|
||||||
|
|
||||||
|
color = diff_get_color_opt(&opt->diffopt,
|
||||||
|
status ? DIFF_WHITESPACE : DIFF_FRAGINFO);
|
||||||
|
reset = diff_get_color_opt(&opt->diffopt, DIFF_RESET);
|
||||||
|
while (*bol) {
|
||||||
|
eol = strchrnul(bol, '\n');
|
||||||
|
printf("%s%.*s%s%s", color, (int)(eol - bol), bol, reset,
|
||||||
|
*eol ? "\n" : "");
|
||||||
|
bol = (*eol) ? (eol + 1) : eol;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
static void show_signature(struct rev_info *opt, struct commit *commit)
|
static void show_signature(struct rev_info *opt, struct commit *commit)
|
||||||
{
|
{
|
||||||
struct strbuf payload = STRBUF_INIT;
|
struct strbuf payload = STRBUF_INIT;
|
||||||
struct strbuf signature = STRBUF_INIT;
|
struct strbuf signature = STRBUF_INIT;
|
||||||
struct strbuf gpg_output = STRBUF_INIT;
|
struct strbuf gpg_output = STRBUF_INIT;
|
||||||
int status;
|
int status;
|
||||||
const char *color, *reset, *bol, *eol;
|
|
||||||
|
|
||||||
if (parse_signed_commit(commit->object.sha1, &payload, &signature) <= 0)
|
if (parse_signed_commit(commit->object.sha1, &payload, &signature) <= 0)
|
||||||
goto out;
|
goto out;
|
||||||
@ -421,17 +435,7 @@ static void show_signature(struct rev_info *opt, struct commit *commit)
|
|||||||
if (status && !gpg_output.len)
|
if (status && !gpg_output.len)
|
||||||
strbuf_addstr(&gpg_output, "No signature\n");
|
strbuf_addstr(&gpg_output, "No signature\n");
|
||||||
|
|
||||||
color = diff_get_color_opt(&opt->diffopt,
|
show_sig_lines(opt, status, gpg_output.buf);
|
||||||
status ? DIFF_WHITESPACE : DIFF_FRAGINFO);
|
|
||||||
reset = diff_get_color_opt(&opt->diffopt, DIFF_RESET);
|
|
||||||
|
|
||||||
bol = gpg_output.buf;
|
|
||||||
while (*bol) {
|
|
||||||
eol = strchrnul(bol, '\n');
|
|
||||||
printf("%s%.*s%s%s", color, (int)(eol - bol), bol, reset,
|
|
||||||
*eol ? "\n" : "");
|
|
||||||
bol = (*eol) ? (eol + 1) : eol;
|
|
||||||
}
|
|
||||||
|
|
||||||
out:
|
out:
|
||||||
strbuf_release(&gpg_output);
|
strbuf_release(&gpg_output);
|
||||||
|
Loading…
Reference in New Issue
Block a user