[PATCH 4/5] pretty: Add name_and_address_only parameter
- From
- Zev Weiss <zev@bewilderbeest.net>
- Date
- Jan 19, 2023, 22:38 UTC
- Message-ID
- <20230119223858.29262-5-zev@bewilderbeest.net>
- In-Reply-To
- <20230119223858.29262-1-zev@bewilderbeest.net>
This is meant to be used with pp_user_info() when using it to format email recipients generated by --to-cmd/--cc-cmd. When set it omits the leading 'From: ', trailing linefeed, and the date suffix, and additionally will return the input string unmodified if split_ident_line() can't parse it (e.g. for a bare email address).
Signed-off-by: Zev Weiss <zev@bewilderbeest.net> --- pretty.c | 15 ++++++++++++--- pretty.h | 1 + 2 files changed, 13 insertions(+), 3 deletions(-)
diff --git a/pretty.c b/pretty.c index 1e1e21878c83..e6798fadc107 100644 --- a/pretty.c +++ b/pretty.c @@ -509,8 +509,11 @@ void pp_user_info(struct pretty_print_context *pp, return; line_end = strchrnul(line, '\n'); - if (split_ident_line(&ident, line, line_end - line)) + if (split_ident_line(&ident, line, line_end - line)) { + if (pp->name_and_address_only) + strbuf_addstr(sb, line); return; + } mailbuf = ident.mail_begin; maillen = ident.mail_end - ident.mail_begin; @@ -538,7 +541,8 @@ void pp_user_info(struct pretty_print_context *pp, namelen = pp->from_ident->name_end - namebuf; } - strbuf_addstr(sb, "From: "); + if (!pp->name_and_address_only) + strbuf_addstr(sb, "From: "); if (pp->encode_email_headers && needs_rfc2047_encoding(namebuf, namelen)) { add_rfc2047(sb, namebuf, namelen, @@ -558,7 +562,9 @@ void pp_user_info(struct pretty_print_context *pp, if (max_length < last_line_length(sb) + strlen(" <") + maillen + strlen(">")) strbuf_addch(sb, '\n'); - strbuf_addf(sb, " <%.*s>\n", (int)maillen, mailbuf); + strbuf_addf(sb, " <%.*s>", (int)maillen, mailbuf); + if (!pp->name_and_address_only) + strbuf_addch(sb, '\n'); } else { struct strbuf id = STRBUF_INIT; enum grep_header_field field = GREP_HEADER_FIELD_MAX; @@ -582,6 +588,9 @@ void pp_user_info(struct pretty_print_context *pp, strbuf_release(&id); } + if (pp->name_and_address_only) + return; + switch (pp->fmt) { case CMIT_FMT_MEDIUM: strbuf_addf(sb, "Date: %s\n", diff --git a/pretty.h b/pretty.h index f34e24c53a49..306666e99294 100644 --- a/pretty.h +++ b/pretty.h @@ -39,6 +39,7 @@ struct pretty_print_context { int preserve_subject; struct date_mode date_mode; unsigned date_mode_explicit:1; + unsigned name_and_address_only:1; int print_email_subject; int expand_tabs_in_log; int need_8bit_cte;
-- 2.39.1.236.ga8a28b9eace8