From f40bd948565d249372585fb158493805215d0a1a Mon Sep 17 00:00:00 2001 From: Alejandro Colomar Date: Sun, 7 Jan 2024 00:06:49 +0100 Subject: [PATCH] lib/getrange.c: getrange(): Use goto to deduplicate code Signed-off-by: Alejandro Colomar --- lib/getrange.c | 18 +++++------------- 1 file changed, 5 insertions(+), 13 deletions(-) diff --git a/lib/getrange.c b/lib/getrange.c index e5ea1744..8f7acee0 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;