Merge branch 'jk/output-prefix-cleanup'
Code clean-up. * jk/output-prefix-cleanup: diff: store graph prefix buf in git_graph struct diff: return line_prefix directly when possible diff: return const char from output_prefix callback diff: drop line_prefix_length field line-log: use diff_line_prefix() instead of custom helper
This commit is contained in:
29
graph.c
29
graph.c
@ -76,10 +76,7 @@ static void graph_show_line_prefix(const struct diff_options *diffopt)
|
||||
if (!diffopt || !diffopt->line_prefix)
|
||||
return;
|
||||
|
||||
fwrite(diffopt->line_prefix,
|
||||
sizeof(char),
|
||||
diffopt->line_prefix_length,
|
||||
diffopt->file);
|
||||
fputs(diffopt->line_prefix, diffopt->file);
|
||||
}
|
||||
|
||||
static const char **column_colors;
|
||||
@ -312,22 +309,28 @@ struct git_graph {
|
||||
* stored as an index into the array column_colors.
|
||||
*/
|
||||
unsigned short default_column_color;
|
||||
|
||||
/*
|
||||
* Scratch buffer for generating prefixes to be used with
|
||||
* diff_output_prefix_callback().
|
||||
*/
|
||||
struct strbuf prefix_buf;
|
||||
};
|
||||
|
||||
static struct strbuf *diff_output_prefix_callback(struct diff_options *opt, void *data)
|
||||
static const char *diff_output_prefix_callback(struct diff_options *opt, void *data)
|
||||
{
|
||||
struct git_graph *graph = data;
|
||||
static struct strbuf msgbuf = STRBUF_INIT;
|
||||
|
||||
assert(opt);
|
||||
|
||||
strbuf_reset(&msgbuf);
|
||||
if (!graph)
|
||||
return opt->line_prefix;
|
||||
|
||||
strbuf_reset(&graph->prefix_buf);
|
||||
if (opt->line_prefix)
|
||||
strbuf_add(&msgbuf, opt->line_prefix,
|
||||
opt->line_prefix_length);
|
||||
if (graph)
|
||||
graph_padding_line(graph, &msgbuf);
|
||||
return &msgbuf;
|
||||
strbuf_addstr(&graph->prefix_buf, opt->line_prefix);
|
||||
graph_padding_line(graph, &graph->prefix_buf);
|
||||
return graph->prefix_buf.buf;
|
||||
}
|
||||
|
||||
static const struct diff_options *default_diffopt;
|
||||
@ -397,6 +400,7 @@ struct git_graph *graph_init(struct rev_info *opt)
|
||||
* The diff output prefix callback, with this we can make
|
||||
* all the diff output to align with the graph lines.
|
||||
*/
|
||||
strbuf_init(&graph->prefix_buf, 0);
|
||||
opt->diffopt.output_prefix = diff_output_prefix_callback;
|
||||
opt->diffopt.output_prefix_data = graph;
|
||||
|
||||
@ -412,6 +416,7 @@ void graph_clear(struct git_graph *graph)
|
||||
free(graph->new_columns);
|
||||
free(graph->mapping);
|
||||
free(graph->old_mapping);
|
||||
strbuf_release(&graph->prefix_buf);
|
||||
free(graph);
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user