diff options
| author | Jeff King <peff@peff.net> | 2025-09-16 16:26:37 -0400 |
|---|---|---|
| committer | Junio C Hamano <gitster@pobox.com> | 2025-09-16 18:00:26 -0700 |
| commit | 69a7e8d32f37ca9cefc6b82fe848415d1d4200d9 (patch) | |
| tree | c39c93cd4f4fc4486c96385c62003c79d599a432 | |
| parent | 9d241b01132c17a44adda2d762b37adf3625bdd7 (diff) | |
config: store want_color() result in a separate bool
The "git config --get-colorbool foo.bar" command not only digs in the
config to find the value of foo.bar, it evaluates the result using
want_color() to check the tty-ness of stdout.
But it stores the bool result of want_color() in the same git_colorbool
that we found in the config. This works in practice because the
git_colorbool enum is a superset of the bool values. But it is an oddity
from a type system perspective.
Let's instead store the result in a separate bool and use that.
Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
| -rw-r--r-- | builtin/config.c | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/builtin/config.c b/builtin/config.c index 9e4e4eb2f1..2348a99dd4 100644 --- a/builtin/config.c +++ b/builtin/config.c @@ -598,6 +598,7 @@ static int get_colorbool(const struct config_location_options *opts, .get_diff_color_found = GIT_COLOR_UNKNOWN, .get_color_ui_found = GIT_COLOR_UNKNOWN, }; + bool result; config_with_options(git_get_colorbool_config, &data, &opts->source, the_repository, @@ -614,13 +615,13 @@ static int get_colorbool(const struct config_location_options *opts, /* default value if none found in config */ data.get_colorbool_found = GIT_COLOR_AUTO; - data.get_colorbool_found = want_color(data.get_colorbool_found); + result = want_color(data.get_colorbool_found); if (print) { - printf("%s\n", data.get_colorbool_found ? "true" : "false"); + printf("%s\n", result ? "true" : "false"); return 0; } else - return data.get_colorbool_found ? 0 : 1; + return result ? 0 : 1; } static void check_write(const struct git_config_source *source) |
