Ævar Arnfjörð Bjarmason <avarab@xxxxxxxxx> writes: > In preceding commits the rest of the vreportf() users outside of > usage.c have been migrated to die_message(), leaving only the > git_die_config() function added in 5a80e97c827 (config: add > `git_die_config()` to the config-set API, 2014-08-07). > > Let's have its callers call error() themselves if they want to emit a > message, which is exactly what git_die_config() was doing for them > before emitting its own die() message. I do not quite get this. If git_die_config() has been showing the message for them, and if the existing callers can just use error(), why not git_die_config() call error() on behalf of these callers? > diff --git a/builtin/fast-import.c b/builtin/fast-import.c > index 2b2e28bad79..4e2432bb491 100644 > --- a/builtin/fast-import.c > +++ b/builtin/fast-import.c > @@ -3456,9 +3456,10 @@ static void git_pack_config(void) > } > if (!git_config_get_int("pack.indexversion", &indexversion_value)) { > pack_idx_opts.version = indexversion_value; > - if (pack_idx_opts.version > 2) > - git_die_config("pack.indexversion", > - "bad pack.indexversion=%"PRIu32, pack_idx_opts.version); > + if (pack_idx_opts.version > 2) { > + error("bad pack.indexversion=%"PRIu32, pack_idx_opts.version); > + git_die_config("pack.indexversion"); > + } This is exactly what triggered the question above, and the pattern repeats elsewhere, too. > @@ -2550,18 +2552,12 @@ void git_die_config_linenr(const char *key, const char *filename, int linenr) > key, filename, linenr); > } > > -NORETURN __attribute__((format(printf, 2, 3))) > -void git_die_config(const char *key, const char *err, ...) > +NORETURN > +void git_die_config(const char *key) > { > const struct string_list *values; > struct key_value_info *kv_info; > > - if (err) { > - va_list params; > - va_start(params, err); > - vreportf("error: ", err, params); > - va_end(params); I get that we do not want to expose vreportf() to this caller, and I agree with the goal, but wouldn't it be the matter of calling get_error_routine() and calling it with err and params here, instead of losing the whole block? Is that insufficient to avoid toucing all the callers? > diff --git a/git-compat-util.h b/git-compat-util.h > index c6c6f7d6b51..bdb3977b9ec 100644 > --- a/git-compat-util.h > +++ b/git-compat-util.h > @@ -474,7 +474,6 @@ static inline int git_has_dir_sep(const char *path) > struct strbuf; > > /* General helper functions */ > -void vreportf(const char *prefix, const char *err, va_list params); Good. > diff --git a/usage.c b/usage.c > index 3d09e8eea48..9943dd8742e 100644 > --- a/usage.c > +++ b/usage.c > @@ -6,7 +6,7 @@ > #include "git-compat-util.h" > #include "cache.h" > > -void vreportf(const char *prefix, const char *err, va_list params) > +static void vreportf(const char *prefix, const char *err, va_list params) Good, too. Thanks.