diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-06-26 16:18:36 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-06-26 16:18:36 +0000 |
commit | 6c3ea4f47ea280811a7fe53a22f7832e4533c9ec (patch) | |
tree | 3d7ed5da23b5dbf6f9e450dfb61642832249c31e /libmisc/getrange.c | |
parent | Adding upstream version 1:4.13+dfsg1. (diff) | |
download | shadow-6c3ea4f47ea280811a7fe53a22f7832e4533c9ec.tar.xz shadow-6c3ea4f47ea280811a7fe53a22f7832e4533c9ec.zip |
Adding upstream version 1:4.15.2.upstream/1%4.15.2upstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'libmisc/getrange.c')
-rw-r--r-- | libmisc/getrange.c | 101 |
1 files changed, 0 insertions, 101 deletions
diff --git a/libmisc/getrange.c b/libmisc/getrange.c deleted file mode 100644 index 82f2edf..0000000 --- a/libmisc/getrange.c +++ /dev/null @@ -1,101 +0,0 @@ -/* - * SPDX-FileCopyrightText: 2008 , Nicolas François - * - * SPDX-License-Identifier: BSD-3-Clause - */ - -#include <config.h> - -#ident "$Id: $" - -#include <ctype.h> -#include <stdlib.h> - -#include "defines.h" -#include "prototypes.h" - -/* - * Parse a range and indicate if the range is valid. - * Valid ranges are in the form: - * <long> -> min=max=long has_min has_max - * -<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) -{ - char *endptr; - unsigned long n; - - if (NULL == range) { - return 0; - } - - if ('-' == range[0]) { - if (!isdigit(range[1])) { - /* invalid */ - return 0; - } - errno = 0; - n = strtoul (&range[1], &endptr, 10); - if (('\0' != *endptr) || (ERANGE == errno)) { - /* invalid */ - return 0; - } - /* -<long> */ - *has_min = false; - *has_max = true; - *max = n; - } else { - errno = 0; - n = strtoul (range, &endptr, 10); - if (ERANGE == errno) { - /* invalid */ - return 0; - } - 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)) { - /* invalid */ - return 0; - } else { - *has_min = true; - *min = n; - errno = 0; - n = strtoul (endptr, &endptr, 10); - if ( ('\0' != *endptr) - || (ERANGE == errno)) { - /* invalid */ - return 0; - } - /* <long>-<long> */ - *has_max = true; - *max = n; - } - break; - default: - return 0; - } - } - - return 1; -} - |