From: René Scharfe Date: Sat, 22 Jun 2019 10:03:40 +0000 (+0200) Subject: config: simplify parsing of unit factors X-Git-Tag: v2.23.0-rc0~71^2 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=39c575c96967f325a995cf9716a46f7e924714f5;p=thirdparty%2Fgit.git config: simplify parsing of unit factors Just return the value of the factor or zero for unrecognized strings instead of using an output reference and a separate return value to indicate success. This is shorter and simpler. It basically reverts that function to before c8deb5a146 ("Improve error messages when int/long cannot be parsed from config", 2007-12-25), while keeping the better messages, so restore its old name, get_unit_factor(), as well. Signed-off-by: Rene Scharfe Signed-off-by: Junio C Hamano --- diff --git a/config.c b/config.c index a8bd1d821e..26196bdccf 100644 --- a/config.c +++ b/config.c @@ -834,24 +834,16 @@ static int git_parse_source(config_fn_t fn, void *data, return error_return; } -static int parse_unit_factor(const char *end, uintmax_t *factor) +static uintmax_t get_unit_factor(const char *end) { - if (!*end) { - *factor = 1; + if (!*end) return 1; - } - else if (!strcasecmp(end, "k")) { - *factor = 1024; - return 1; - } - else if (!strcasecmp(end, "m")) { - *factor = 1024 * 1024; - return 1; - } - else if (!strcasecmp(end, "g")) { - *factor = 1024 * 1024 * 1024; - return 1; - } + else if (!strcasecmp(end, "k")) + return 1024; + else if (!strcasecmp(end, "m")) + return 1024 * 1024; + else if (!strcasecmp(end, "g")) + return 1024 * 1024 * 1024; return 0; } @@ -867,7 +859,8 @@ static int git_parse_signed(const char *value, intmax_t *ret, intmax_t max) val = strtoimax(value, &end, 0); if (errno == ERANGE) return 0; - if (!parse_unit_factor(end, &factor)) { + factor = get_unit_factor(end); + if (!factor) { errno = EINVAL; return 0; } @@ -896,7 +889,8 @@ static int git_parse_unsigned(const char *value, uintmax_t *ret, uintmax_t max) val = strtoumax(value, &end, 0); if (errno == ERANGE) return 0; - if (!parse_unit_factor(end, &factor)) { + factor = get_unit_factor(end); + if (!factor) { errno = EINVAL; return 0; }