diff --git a/lib/getrange.c b/lib/getrange.c index 389f9042..0410cb81 100644 --- a/lib/getrange.c +++ b/lib/getrange.c @@ -48,38 +48,38 @@ getrange(const char *range, return -1; *has_max = true; - /* - */ - } else { + return 0; /* - */ + } + + errno = 0; + *min = strtoul_noneg(range, &endptr, 10); + if (endptr == range || 0 != errno) + return -1; + *has_min = true; + + switch (*endptr) { + case '\0': + /* */ + *has_max = true; + *max = *min; + break; + case '-': + endptr++; + if ('\0' == *endptr) + return 0; /* - */ + if (!isdigit(*endptr)) + return -1; + errno = 0; - *min = strtoul_noneg(range, &endptr, 10); - if (endptr == range || 0 != errno) + *max = strtoul_noneg(endptr, &endptr, 10); + if ('\0' != *endptr || 0 != errno) return -1; - *has_min = true; + *has_max = true; - switch (*endptr) { - case '\0': - /* */ - *has_max = true; - *max = *min; - break; - case '-': - endptr++; - if ('\0' == *endptr) - return 0; /* - */ - if (!isdigit(*endptr)) - return -1; - - errno = 0; - *max = strtoul_noneg(endptr, &endptr, 10); - if ('\0' != *endptr || 0 != errno) - return -1; - *has_max = true; - - /* - */ - break; - default: - return -1; - } + /* - */ + break; + default: + return -1; } return 0;