зеркало из https://github.com/microsoft/git.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 <l.s.r@web.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
Родитель
664178e8e2
Коммит
39c575c969
30
config.c
30
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;
|
||||
}
|
||||
|
|
Загрузка…
Ссылка в новой задаче