diff --git a/builtin/config.c b/builtin/config.c index 4c4c791883..448b148563 100644 --- a/builtin/config.c +++ b/builtin/config.c @@ -237,6 +237,25 @@ struct strbuf_list { int alloc; }; +static int format_config_int64(struct strbuf *buf, + const char *key_, + const char *value_, + const struct key_value_info *kvi, + int gently) +{ + int64_t v = 0; + if (gently) { + if (!git_parse_int64(value_, &v)) + return -1; + } else { + /* may die() */ + v = git_config_int64(key_, value_ ? value_ : "", kvi); + } + + strbuf_addf(buf, "%"PRId64, v); + return 0; +} + /* * Format the configuration key-value pair (`key_`, `value_`) and * append it into strbuf `buf`. Returns a negative value on failure, @@ -249,8 +268,9 @@ struct strbuf_list { static int format_config(const struct config_display_options *opts, struct strbuf *buf, const char *key_, const char *value_, const struct key_value_info *kvi, - int gently UNUSED) + int gently) { + int res = 0; if (opts->show_scope) show_config_scope(opts, kvi, buf); if (opts->show_origin) @@ -262,8 +282,7 @@ static int format_config(const struct config_display_options *opts, strbuf_addch(buf, opts->key_delim); if (opts->type == TYPE_INT) - strbuf_addf(buf, "%"PRId64, - git_config_int64(key_, value_ ? value_ : "", kvi)); + res = format_config_int64(buf, key_, value_, kvi, gently); else if (opts->type == TYPE_BOOL) strbuf_addstr(buf, git_config_bool(key_, value_) ? "true" : "false"); @@ -309,7 +328,7 @@ static int format_config(const struct config_display_options *opts, } } strbuf_addch(buf, opts->term); - return 0; + return res; } static int show_all_config(const char *key_, const char *value_, diff --git a/t/t1300-config.sh b/t/t1300-config.sh index dc744c0bae..05a812fd6d 100755 --- a/t/t1300-config.sh +++ b/t/t1300-config.sh @@ -2515,7 +2515,9 @@ test_expect_success 'list --type=int shows only canonicalizable int values' ' section.big=1048576 EOF - test_must_fail git config ${mode_prefix}list --type=int + git config ${mode_prefix}list --type=int >actual 2>err && + test_cmp expect actual && + test_must_be_empty err ' test_expect_success 'list --type=bool shows only canonicalizable bool values' '