lib/, src/: getrange(): Use the usual -1 as an error code

Signed-off-by: Alejandro Colomar <alx@kernel.org>
This commit is contained in:
Alejandro Colomar
2024-01-05 16:54:55 -06:00
committed by Serge Hallyn
parent c595ea7e87
commit ea253cb275
3 changed files with 29 additions and 37 deletions
+23 -31
View File
@@ -4,6 +4,7 @@
* SPDX-License-Identifier: BSD-3-Clause
*/
#include <config.h>
#ident "$Id: $"
@@ -14,6 +15,7 @@
#include "defines.h"
#include "prototypes.h"
/*
* Parse a range and indicate if the range is valid.
* Valid ranges are in the form:
@@ -21,32 +23,27 @@
* -<long> -> max=long !has_min has_max
* <long>- -> min=long has_min !has_max
* <long1>-<long2> -> min=long1 max=long2 has_min has_max
*
* If the range is valid, getrange returns 1.
* If the range is not valid, getrange returns 0.
*/
int getrange (const char *range,
unsigned long *min, bool *has_min,
unsigned long *max, bool *has_max)
int
getrange(const char *range,
unsigned long *min, bool *has_min,
unsigned long *max, bool *has_max)
{
char *endptr;
unsigned long n;
if (NULL == range) {
return 0;
}
if (NULL == range)
return -1;
if ('-' == range[0]) {
if (!isdigit(range[1])) {
/* invalid */
return 0;
}
if (!isdigit(range[1]))
return -1;
errno = 0;
n = strtoul(&range[1], &endptr, 10);
if (('\0' != *endptr) || (0 != errno)) {
/* invalid */
return 0;
}
if (('\0' != *endptr) || (0 != errno))
return -1;
/* -<long> */
*has_min = false;
*has_max = true;
@@ -54,10 +51,9 @@ int getrange (const char *range,
} else {
errno = 0;
n = strtoul(range, &endptr, 10);
if (endptr == range || 0 != errno) {
/* invalid */
return 0;
}
if (endptr == range || 0 != errno)
return -1;
switch (*endptr) {
case '\0':
/* <long> */
@@ -74,28 +70,24 @@ int getrange (const char *range,
*has_max = false;
*min = n;
} else if (!isdigit (*endptr)) {
/* invalid */
return 0;
return -1;
} else {
*has_min = true;
*min = n;
errno = 0;
n = strtoul(endptr, &endptr, 10);
if ( ('\0' != *endptr)
|| (0 != errno)) {
/* invalid */
return 0;
}
if ('\0' != *endptr || 0 != errno)
return -1;
/* <long>-<long> */
*has_max = true;
*max = n;
}
break;
default:
return 0;
return -1;
}
}
return 1;
return 0;
}
+3 -3
View File
@@ -605,9 +605,9 @@ int main (int argc, char **argv)
umax = umin;
has_umax = true;
} else {
if (getrange (optarg,
&umin, &has_umin,
&umax, &has_umax) == 0) {
if (getrange(optarg,
&umin, &has_umin,
&umax, &has_umax) == -1) {
fprintf (stderr,
_("%s: Unknown user or range: %s\n"),
Prog, optarg);
+3 -3
View File
@@ -381,9 +381,9 @@ int main (int argc, char **argv)
umax = umin;
has_umax = true;
} else {
if (getrange (optarg,
&umin, &has_umin,
&umax, &has_umax) == 0) {
if (getrange(optarg,
&umin, &has_umin,
&umax, &has_umax) == -1) {
fprintf (stderr,
_("%s: Unknown user or range: %s\n"),
Prog, optarg);