trailer: reorder format_trailers_from_commit() parameters

Currently there are two functions for formatting trailers in
<trailer.h>:

    void format_trailers(const struct process_trailer_options *,
                         struct list_head *trailers, FILE *outfile);

    void format_trailers_from_commit(struct strbuf *out, const char *msg,
                                     const struct process_trailer_options *opts);

and although they are similar enough (even taking the same
process_trailer_options struct pointer) they are used quite differently.
One might intuitively think that format_trailers_from_commit() builds on
top of format_trailers(), but this is not the case. Instead
format_trailers_from_commit() calls format_trailer_info() and
format_trailers() is never called in that codepath.

This is a preparatory refactor to help us deprecate format_trailers() in
favor of format_trailer_info() (at which point we can rename the latter
to the former). When the deprecation is complete, both
format_trailers_from_commit(), and the interpret-trailers builtin will
be able to call into the same helper function (instead of
format_trailers() and format_trailer_info(), respectively). Unifying the
formatters is desirable because it simplifies the API.

Reorder parameters for format_trailers_from_commit() to prefer

    const struct process_trailer_options *opts

as the first parameter, because these options are intimately tied to
formatting trailers. And take

    struct strbuf *out

last, because it's an "out parameter" (something that the caller wants
to use as the output of this function).

Similarly, reorder parameters for format_trailer_info(), because later
on we will unify the two together.

Signed-off-by: Linus Arver <linusa@google.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
Linus Arver 2024-03-01 00:14:42 +00:00 коммит произвёл Junio C Hamano
Родитель 7b1c6aa541
Коммит 0383dc5629
4 изменённых файлов: 11 добавлений и 9 удалений

Просмотреть файл

@ -1759,7 +1759,7 @@ static size_t format_commit_one(struct strbuf *sb, /* in UTF-8 */
goto trailer_out;
}
if (*arg == ')') {
format_trailers_from_commit(sb, msg + c->subject_off, &opts);
format_trailers_from_commit(&opts, msg + c->subject_off, sb);
ret = arg - placeholder + 1;
}
trailer_out:

Просмотреть файл

@ -1985,7 +1985,7 @@ static void grab_sub_body_contents(struct atom_value *val, int deref, struct exp
struct strbuf s = STRBUF_INIT;
/* Format the trailer info according to the trailer_opts given */
format_trailers_from_commit(&s, subpos, &atom->u.contents.trailer_opts);
format_trailers_from_commit(&atom->u.contents.trailer_opts, subpos, &s);
v->s = strbuf_detach(&s, NULL);
} else if (atom->u.contents.option == C_BARE)

Просмотреть файл

@ -1176,10 +1176,10 @@ void trailer_info_release(struct trailer_info *info)
free(info->trailers);
}
static void format_trailer_info(struct strbuf *out,
static void format_trailer_info(const struct process_trailer_options *opts,
const struct trailer_info *info,
const char *msg,
const struct process_trailer_options *opts)
struct strbuf *out)
{
size_t origlen = out->len;
size_t i;
@ -1237,13 +1237,14 @@ static void format_trailer_info(struct strbuf *out,
}
void format_trailers_from_commit(struct strbuf *out, const char *msg,
const struct process_trailer_options *opts)
void format_trailers_from_commit(const struct process_trailer_options *opts,
const char *msg,
struct strbuf *out)
{
struct trailer_info info;
trailer_info_get(&info, msg, opts);
format_trailer_info(out, &info, msg, opts);
format_trailer_info(opts, &info, msg, out);
trailer_info_release(&info);
}

Просмотреть файл

@ -101,8 +101,9 @@ void trailer_info_release(struct trailer_info *info);
* only the trailer block itself, even if the "only_trailers" option is not
* set.
*/
void format_trailers_from_commit(struct strbuf *out, const char *msg,
const struct process_trailer_options *opts);
void format_trailers_from_commit(const struct process_trailer_options *opts,
const char *msg,
struct strbuf *out);
/*
* An interface for iterating over the trailers found in a particular commit