trailer: move process_trailers to trailer.h

This function would be used by trailer_process
in following commits.

Signed-off-by: Li Chen <chenl311@chinatelecom.cn>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
Li Chen 2025-11-05 22:29:42 +08:00 committed by Junio C Hamano
parent 6145e03295
commit 7aeb71a516
3 changed files with 39 additions and 36 deletions

View File

@ -136,42 +136,6 @@ static void read_input_file(struct strbuf *sb, const char *file)
strbuf_complete_line(sb);
}
static void process_trailers(const struct process_trailer_options *opts,
struct list_head *new_trailer_head,
struct strbuf *sb, struct strbuf *out)
{
LIST_HEAD(head);
struct trailer_block *trailer_block;
trailer_block = parse_trailers(opts, sb->buf, &head);
/* Print the lines before the trailer block */
if (!opts->only_trailers)
strbuf_add(out, sb->buf, trailer_block_start(trailer_block));
if (!opts->only_trailers && !blank_line_before_trailer_block(trailer_block))
strbuf_addch(out, '\n');
if (!opts->only_input) {
LIST_HEAD(config_head);
LIST_HEAD(arg_head);
parse_trailers_from_config(&config_head);
parse_trailers_from_command_line_args(&arg_head, new_trailer_head);
list_splice(&config_head, &arg_head);
process_trailers_lists(&head, &arg_head);
}
/* Print trailer block. */
format_trailers(opts, &head, out);
free_trailers(&head);
/* Print the lines after the trailer block as is. */
if (!opts->only_trailers)
strbuf_add(out, sb->buf + trailer_block_end(trailer_block),
sb->len - trailer_block_end(trailer_block));
trailer_block_release(trailer_block);
}
static void interpret_trailers(const struct process_trailer_options *opts,
struct list_head *new_trailer_head,
const char *file)

View File

@ -1235,3 +1235,39 @@ int amend_file_with_trailers(const char *path, const struct strvec *trailer_args
strvec_pushv(&run_trailer.args, trailer_args->v);
return run_command(&run_trailer);
}
void process_trailers(const struct process_trailer_options *opts,
struct list_head *new_trailer_head,
struct strbuf *sb, struct strbuf *out)
{
LIST_HEAD(head);
struct trailer_block *trailer_block;
trailer_block = parse_trailers(opts, sb->buf, &head);
/* Print the lines before the trailer block */
if (!opts->only_trailers)
strbuf_add(out, sb->buf, trailer_block_start(trailer_block));
if (!opts->only_trailers && !blank_line_before_trailer_block(trailer_block))
strbuf_addch(out, '\n');
if (!opts->only_input) {
LIST_HEAD(config_head);
LIST_HEAD(arg_head);
parse_trailers_from_config(&config_head);
parse_trailers_from_command_line_args(&arg_head, new_trailer_head);
list_splice(&config_head, &arg_head);
process_trailers_lists(&head, &arg_head);
}
/* Print trailer block. */
format_trailers(opts, &head, out);
free_trailers(&head);
/* Print the lines after the trailer block as is. */
if (!opts->only_trailers)
strbuf_add(out, sb->buf + trailer_block_end(trailer_block),
sb->len - trailer_block_end(trailer_block));
trailer_block_release(trailer_block);
}

View File

@ -202,4 +202,7 @@ void trailer_iterator_release(struct trailer_iterator *iter);
*/
int amend_file_with_trailers(const char *path, const struct strvec *trailer_args);
void process_trailers(const struct process_trailer_options *opts,
struct list_head *new_trailer_head,
struct strbuf *sb, struct strbuf *out);
#endif /* TRAILER_H */