From 452538c3586a76939faf43019fb7c21b3147309b Mon Sep 17 00:00:00 2001 From: Denton Liu Date: Mon, 9 Dec 2019 05:10:44 -0800 Subject: notes: extract logic into set_display_notes() Instead of open coding the logic that tweaks the variables in `struct display_notes_opt` within handle_revision_opt(), abstract away the logic into set_display_notes() so that it can be reused. Signed-off-by: Denton Liu Signed-off-by: Junio C Hamano --- notes.c | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) (limited to 'notes.c') diff --git a/notes.c b/notes.c index 53d1e7767c..c93feff4ab 100644 --- a/notes.c +++ b/notes.c @@ -1045,6 +1045,30 @@ void init_display_notes(struct display_notes_opt *opt) opt->use_default_notes = -1; } +int set_display_notes(struct display_notes_opt *opt, int show_notes, const char *opt_ref) +{ + if (show_notes) { + if (opt_ref) { + struct strbuf buf = STRBUF_INIT; + strbuf_addstr(&buf, opt_ref); + expand_notes_ref(&buf); + string_list_append(&opt->extra_notes_refs, + strbuf_detach(&buf, NULL)); + } else { + opt->use_default_notes = 1; + } + } else { + opt->use_default_notes = -1; + /* we have been strdup'ing ourselves, so trick + * string_list into free()ing strings */ + opt->extra_notes_refs.strdup_strings = 1; + string_list_clear(&opt->extra_notes_refs, 0); + opt->extra_notes_refs.strdup_strings = 0; + } + + return !!show_notes; +} + void load_display_notes(struct display_notes_opt *opt) { char *display_ref_env; -- cgit 1.2.3-korg