Re: [PATCH v4 14/28] format_trailer_info(): teach it about opts->trim_empty
- From
- Linus Arver <linusa@google.com>
- Date
- Feb 13, 2024, 17:05 UTC
- Message-ID
- <owlyttmcb8ge.fsf@fine.c.googlers.com>
- In-Reply-To
- <CAP8UFD3wMD5SmfpP20jST4YndBdPX9U9qAbKh=4TnUzLkpULRA@mail.gmail.com>
Christian Couder <christian.couder@gmail.com> writes:
Show 26 quoted lines
>> diff --git a/trailer.c b/trailer.c
>> index f4defad3dae..c28b6c11cc5 100644
>> --- a/trailer.c
>> +++ b/trailer.c
>> @@ -162,20 +162,6 @@ static void print_tok_val(struct strbuf *out, const char *tok, const char *val)
>> strbuf_addf(out, "%s%c %s\n", tok, separators[0], val);
>> }
>>
>> -static void format_trailers(const struct process_trailer_options *opts,
>> - struct list_head *trailers,
>> - struct strbuf *out)
>> -{
>> - struct list_head *pos;
>> - struct trailer_item *item;
>> - list_for_each(pos, trailers) {
>> - item = list_entry(pos, struct trailer_item, list);
>> - if ((!opts->trim_empty || strlen(item->value) > 0) &&
>> - (!opts->only_trailers || item->token))
>> - print_tok_val(out, item->token, item->value);
>> - }
>> -}
>
> It seems to me that this function could and should have been removed
> in the previous patch. If there is a reason why it is better to do it
> in this patch, I think it should be explained more clearly in the
> commit message.Ah yes, the decision to delay the deletion like this was deliberate. Will update the commit message to add something like:
Although we could have deleted format_trailers() in the previous patch,
we perform the deletion here like this in order to isolate
(and highlight) in this patch the salvaging of the logic in the deleted
code if ((!opts->trim_empty || strlen(item->value) > 0) && ...)
print_tok_val(...)as
if (opts->trim_empty && !strlen(item->value))
continue; in the new code, which has the same effect (because we are skipping the
formatting in the new code).Show 19 quoted lines
>> static struct trailer_item *trailer_from_arg(struct arg_item *arg_tok)
>> {
>> struct trailer_item *new_item = xcalloc(1, sizeof(*new_item));
>> @@ -1101,6 +1087,15 @@ void format_trailer_info(const struct process_trailer_options *opts,
>> strbuf_addstr(&tok, item->token);
>> strbuf_addstr(&val, item->value);
>>
>> + /*
>> + * Skip key/value pairs where the value was empty. This
>> + * can happen from trailers specified without a
>> + * separator, like `--trailer "Reviewed-by"` (no
>> + * corresponding value).
>> + */
>> + if (opts->trim_empty && !strlen(item->value))
>> + continue;
>> +
>
> Wasn't it possible to make this change in format_trailer_info() before
> using format_trailer_info() to replace format_trailers()?It was certainly possible, but the choice to purposely time the addition/deletion of code like this was deliberate (see my comment above).
>> if (!opts->filter || opts->filter(&tok, opts->filter_data)) {
>> if (opts->separator && out->len != origlen)
>> strbuf_addbuf(out, opts->separator);