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>main
parent
9d241b0113
commit
69a7e8d32f
|
@ -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)
|
||||
|
|
Loading…
Reference in New Issue