[PATCH] handle arbitrary ints in git_config_maybe_bool
- From
Jeff King <peff@peff.net>
- Date
- Dec 19, 2010, 03:36 UTC
- Message-ID
- <20101219033640.GA6889@sigill.intra.peff.net>
This function recently gained the ability to recognize the documented "0" and "1" values as false/true. However, unlike regular git_config_bool, it did not treat arbitrary numbers as true. While this is undocumented and probably ridiculous for somebody to rely on, it is safer to behave exactly as git_config_bool would. Because git_config_maybe_bool can be used to retrofit new non-bool values onto existing bool options, not behaving in exactly the same way is technically a regression.
Signed-off-by: Jeff King <peff@peff.net> --- This was posted earlier as part of the command-specific pager topic; you ended up splitting part of that out into jk/maint-decorate-01-bool. This should logically go on top of that (b2be2f6).
It probably doesn't make a difference in the real world, but I think it is safer (as described above), and the code is a little cleaner. I should have just done it this way in the first place.
config.c | 8 +++----- 1 files changed, 3 insertions(+), 5 deletions(-)
diff --git a/config.c b/config.c index 32c0b2c..d73b090 100644 --- a/config.c +++ b/config.c @@ -429,13 +429,11 @@ static int git_config_maybe_bool_text(const char *name, const char *value) int git_config_maybe_bool(const char *name, const char *value) { - int v = git_config_maybe_bool_text(name, value); + long v = git_config_maybe_bool_text(name, value); if (0 <= v) return v; - if (!strcmp(value, "0")) - return 0; - if (!strcmp(value, "1")) - return 1; + if (git_parse_long(value, &v)) + return !!v; return -1; }
-- 1.7.3.4.761.g98ad5