зеркало из https://github.com/microsoft/git.git
format_trailers(): use strbuf instead of FILE
This is another preparatory refactor to unify the trailer formatters. Make format_trailers() also write to a strbuf, to align with format_trailers_from_commit() which also does the same. Doing this makes format_trailers() behave similar to format_trailer_info() (which will soon help us replace one with the other). Signed-off-by: Linus Arver <linusa@google.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
Родитель
9aa1b2bc89
Коммит
bf35e0a018
|
@ -140,6 +140,7 @@ static void interpret_trailers(const struct process_trailer_options *opts,
|
|||
{
|
||||
LIST_HEAD(head);
|
||||
struct strbuf sb = STRBUF_INIT;
|
||||
struct strbuf trailer_block = STRBUF_INIT;
|
||||
struct trailer_info info;
|
||||
FILE *outfile = stdout;
|
||||
|
||||
|
@ -169,8 +170,11 @@ static void interpret_trailers(const struct process_trailer_options *opts,
|
|||
process_trailers_lists(&head, &arg_head);
|
||||
}
|
||||
|
||||
format_trailers(opts, &head, outfile);
|
||||
/* Print trailer block. */
|
||||
format_trailers(opts, &head, &trailer_block);
|
||||
free_trailers(&head);
|
||||
fwrite(trailer_block.buf, 1, trailer_block.len, outfile);
|
||||
strbuf_release(&trailer_block);
|
||||
|
||||
/* Print the lines after the trailers as is */
|
||||
if (!opts->only_trailers)
|
||||
|
|
13
trailer.c
13
trailer.c
|
@ -144,12 +144,12 @@ static char last_non_space_char(const char *s)
|
|||
return '\0';
|
||||
}
|
||||
|
||||
static void print_tok_val(FILE *outfile, const char *tok, const char *val)
|
||||
static void print_tok_val(struct strbuf *out, const char *tok, const char *val)
|
||||
{
|
||||
char c;
|
||||
|
||||
if (!tok) {
|
||||
fprintf(outfile, "%s\n", val);
|
||||
strbuf_addf(out, "%s\n", val);
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -157,13 +157,14 @@ static void print_tok_val(FILE *outfile, const char *tok, const char *val)
|
|||
if (!c)
|
||||
return;
|
||||
if (strchr(separators, c))
|
||||
fprintf(outfile, "%s%s\n", tok, val);
|
||||
strbuf_addf(out, "%s%s\n", tok, val);
|
||||
else
|
||||
fprintf(outfile, "%s%c %s\n", tok, separators[0], val);
|
||||
strbuf_addf(out, "%s%c %s\n", tok, separators[0], val);
|
||||
}
|
||||
|
||||
void format_trailers(const struct process_trailer_options *opts,
|
||||
struct list_head *trailers, FILE *outfile)
|
||||
struct list_head *trailers,
|
||||
struct strbuf *out)
|
||||
{
|
||||
struct list_head *pos;
|
||||
struct trailer_item *item;
|
||||
|
@ -171,7 +172,7 @@ void format_trailers(const struct process_trailer_options *opts,
|
|||
item = list_entry(pos, struct trailer_item, list);
|
||||
if ((!opts->trim_empty || strlen(item->value) > 0) &&
|
||||
(!opts->only_trailers || item->token))
|
||||
print_tok_val(outfile, item->token, item->value);
|
||||
print_tok_val(out, item->token, item->value);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -102,7 +102,8 @@ void trailer_info_release(struct trailer_info *info);
|
|||
|
||||
void trailer_config_init(void);
|
||||
void format_trailers(const struct process_trailer_options *,
|
||||
struct list_head *trailers, FILE *outfile);
|
||||
struct list_head *trailers,
|
||||
struct strbuf *out);
|
||||
void free_trailers(struct list_head *);
|
||||
|
||||
/*
|
||||
|
|
Загрузка…
Ссылка в новой задаче