New upstream version 4.15.2

This commit is contained in:
Chris Hofstaedtler
2024-06-22 17:34:25 +02:00
parent f7f4fd7c05
commit 0fda4df4f1
10661 changed files with 382133 additions and 3243 deletions
+37 -60
View File
@@ -1,8 +1,6 @@
/*
* SPDX-FileCopyrightText: 2008 , Nicolas François
*
* SPDX-License-Identifier: BSD-3-Clause
*/
// SPDX-FileCopyrightText: 2008, Nicolas François
// SPDX-FileCopyrightText: 2023-2024, Alejandro Colomar <alx@kernel.org>
// SPDX-License-Identifier: BSD-3-Clause
#include <config.h>
@@ -12,7 +10,7 @@
#include <ctype.h>
#include <stdlib.h>
#include "atoi/strtou_noneg.h"
#include "atoi/a2i.h"
#include "defines.h"
#include "prototypes.h"
@@ -30,65 +28,44 @@ getrange(const char *range,
unsigned long *min, bool *has_min,
unsigned long *max, bool *has_max)
{
char *endptr;
unsigned long n;
const char *end;
if (NULL == range)
return -1;
*min = 0;
*has_min = false;
*has_max = false;
if ('-' == range[0]) {
if (!isdigit(range[1]))
return -1;
errno = 0;
n = strtoul_noneg(&range[1], &endptr, 10);
if (('\0' != *endptr) || (0 != errno))
return -1;
/* -<long> */
*has_min = false;
*has_max = true;
*max = n;
} else {
errno = 0;
n = strtoul_noneg(range, &endptr, 10);
if (endptr == range || 0 != errno)
return -1;
switch (*endptr) {
case '\0':
/* <long> */
*has_min = true;
*has_max = true;
*min = n;
*max = n;
break;
case '-':
endptr++;
if ('\0' == *endptr) {
/* <long>- */
*has_min = true;
*has_max = false;
*min = n;
} else if (!isdigit (*endptr)) {
return -1;
} else {
*has_min = true;
*min = n;
errno = 0;
n = strtoul_noneg(endptr, &endptr, 10);
if ('\0' != *endptr || 0 != errno)
return -1;
/* <long>-<long> */
*has_max = true;
*max = n;
}
break;
default:
return -1;
}
end = range + 1;
goto parse_max;
}
return 0;
if (a2ul(min, range, &end, 10, 0, ULONG_MAX) == -1 && errno != ENOTSUP)
return -1;
*has_min = true;
switch (*end++) {
case '\0':
*has_max = true;
*max = *min;
return 0; /* <long> */
case '-':
if ('\0' == *end)
return 0; /* <long>- */
parse_max:
if (!isdigit((unsigned char) *end))
return -1;
if (a2ul(max, end, NULL, 10, *min, ULONG_MAX) == -1)
return -1;
*has_max = true;
return 0; /* <long>-<long>, or -<long> */
default:
return -1;
}
}