From: Alejandro Colomar Date: Sat, 6 Jan 2024 23:06:49 +0000 (+0100) Subject: lib/getrange.c: getrange(): Use goto to deduplicate code X-Git-Tag: 4.15.2~43 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=f40bd948565d249372585fb158493805215d0a1a;p=thirdparty%2Fshadow.git lib/getrange.c: getrange(): Use goto to deduplicate code Signed-off-by: Alejandro Colomar --- diff --git a/lib/getrange.c b/lib/getrange.c index e5ea17449..8f7acee0c 100644 --- a/lib/getrange.c +++ b/lib/getrange.c @@ -39,16 +39,8 @@ getrange(const char *range, *has_max = false; if ('-' == range[0]) { - if (!isdigit(range[1])) - return -1; - - errno = 0; - *max = strtoul_noneg(&range[1], &endptr, 10); - if (('\0' != *endptr) || (0 != errno)) - return -1; - *has_max = true; - - return 0; /* - */ + endptr = range + 1; + goto parse_max; } errno = 0; @@ -57,16 +49,16 @@ getrange(const char *range, return -1; *has_min = true; - switch (*endptr) { + switch (*endptr++) { case '\0': *has_max = true; *max = *min; return 0; /* */ case '-': - endptr++; if ('\0' == *endptr) return 0; /* - */ +parse_max: if (!isdigit(*endptr)) return -1; @@ -76,7 +68,7 @@ getrange(const char *range, return -1; *has_max = true; - return 0; /* - */ + return 0; /* -, or - */ default: return -1;