From: Derrick Stolee via GitGitGadget Date: Fri, 13 Feb 2026 23:55:14 GMT Subject: [PATCH v2 09/13] config: format paths gently Message-ID: In-Reply-To: From: Derrick Stolee Move the logic for formatting path config values into a helper method and use gentle parsing when needed. Signed-off-by: Derrick Stolee --- builtin/config.c | 35 +++++++++++++++++++++++++---------- 1 file changed, 25 insertions(+), 10 deletions(-) diff --git a/builtin/config.c b/builtin/config.c index 0c539ff98e..4664651dd2 100644 --- a/builtin/config.c +++ b/builtin/config.c @@ -314,6 +314,28 @@ static int format_config_bool_or_str(struct strbuf *buf, return 0; } +static int format_config_path(struct strbuf *buf, + const char *key_, + const char *value_, + int gently) +{ + char *v; + if (gently) { + if (git_parse_maybe_pathname(value_, &v) < 0) + return -1; + } else if (git_config_pathname(&v, key_, value_) < 0) { + return -1; + } + + if (v) + strbuf_addstr(buf, v); + else + return 1; /* :(optional)no-such-file */ + + free(v); + return 0; +} + /* * Format the configuration key-value pair (`key_`, `value_`) and * append it into strbuf `buf`. Returns a negative value on failure, @@ -347,16 +369,9 @@ static int format_config(const struct config_display_options *opts, res = format_config_bool_or_int(buf, key_, value_, kvi, gently); else if (opts->type == TYPE_BOOL_OR_STR) res = format_config_bool_or_str(buf, value_); - else if (opts->type == TYPE_PATH) { - char *v; - if (git_config_pathname(&v, key_, value_) < 0) - return -1; - if (v) - strbuf_addstr(buf, v); - else - return 1; /* :(optional)no-such-file */ - free((char *)v); - } else if (opts->type == TYPE_EXPIRY_DATE) { + else if (opts->type == TYPE_PATH) + res = format_config_path(buf, key_, value_, gently); + else if (opts->type == TYPE_EXPIRY_DATE) { timestamp_t t; if (git_config_expiry_date(&t, key_, value_) < 0) return -1; -- gitgitgadget