Skip to content

Commit 69a7e8d

Browse files
peffgitster
authored andcommitted
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 <[email protected]> Signed-off-by: Junio C Hamano <[email protected]>
1 parent 9d241b0 commit 69a7e8d

File tree

1 file changed

+4
-3
lines changed

1 file changed

+4
-3
lines changed

builtin/config.c

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -598,6 +598,7 @@ static int get_colorbool(const struct config_location_options *opts,
598598
.get_diff_color_found = GIT_COLOR_UNKNOWN,
599599
.get_color_ui_found = GIT_COLOR_UNKNOWN,
600600
};
601+
bool result;
601602

602603
config_with_options(git_get_colorbool_config, &data,
603604
&opts->source, the_repository,
@@ -614,13 +615,13 @@ static int get_colorbool(const struct config_location_options *opts,
614615
/* default value if none found in config */
615616
data.get_colorbool_found = GIT_COLOR_AUTO;
616617

617-
data.get_colorbool_found = want_color(data.get_colorbool_found);
618+
result = want_color(data.get_colorbool_found);
618619

619620
if (print) {
620-
printf("%s\n", data.get_colorbool_found ? "true" : "false");
621+
printf("%s\n", result ? "true" : "false");
621622
return 0;
622623
} else
623-
return data.get_colorbool_found ? 0 : 1;
624+
return result ? 0 : 1;
624625
}
625626

626627
static void check_write(const struct git_config_source *source)

0 commit comments

Comments
 (0)