extern inline uintmax_t strtou_noneg(const char *s, char **restrict endp,
int base, uintmax_t min, uintmax_t max, int *restrict status);
-
-extern inline unsigned long strtoul_noneg(const char *s,
- char **restrict endp, int base);
#include <config.h>
#include <errno.h>
+#include <stddef.h>
#include <stdint.h>
-#include <stdlib.h>
#include "atoi/strtoi.h"
#include "attr.h"
inline uintmax_t strtou_noneg(const char *s, char **restrict endp,
int base, uintmax_t min, uintmax_t max, int *restrict status);
-ATTR_STRING(1) ATTR_ACCESS(write_only, 2)
-inline unsigned long strtoul_noneg(const char *s,
- char **restrict endp, int base);
-
inline uintmax_t
strtou_noneg(const char *s, char **restrict endp, int base,
}
-inline unsigned long
-strtoul_noneg(const char *s, char **restrict endp, int base)
-{
- if (strtol(s, endp, base) < 0) {
- errno = ERANGE;
- return 0;
- }
- return strtoul(s, endp, base);
-}
-
-
#endif // include guard
check_PROGRAMS = \
test_adds \
test_atoi_strtoi \
- test_atoi_strtou_noneg \
test_chkname \
test_sprintf \
test_strncpy \
$(CMOCKA_LIBS) \
$(NULL)
-test_atoi_strtou_noneg_SOURCES = \
- ../../lib/atoi/strtou_noneg.c \
- test_atoi_strtou_noneg.c \
- $(NULL)
-test_atoi_strtou_noneg_CFLAGS = \
- $(AM_CFLAGS) \
- $(NULL)
-test_atoi_strtou_noneg_LDFLAGS = \
- $(NULL)
-test_atoi_strtou_noneg_LDADD = \
- $(CMOCKA_LIBS) \
- $(NULL)
-
test_chkname_SOURCES = \
../../lib/chkname.c \
test_chkname.c \
+++ /dev/null
-// SPDX-FileCopyrightText: 2023-2024, Alejandro Colomar <alx@kernel.org>
-// SPDX-License-Identifier: BSD-3-Clause
-
-
-#include <errno.h>
-#include <limits.h>
-#include <stddef.h>
-#include <stdlib.h>
-
-#include <stdarg.h> // Required by <cmocka.h>
-#include <stddef.h> // Required by <cmocka.h>
-#include <setjmp.h> // Required by <cmocka.h>
-#include <stdint.h> // Required by <cmocka.h>
-#include <cmocka.h>
-
-#include "atoi/strtou_noneg.h"
-
-
-static void test_strtoul_noneg(void **state);
-
-
-int
-main(void)
-{
- const struct CMUnitTest tests[] = {
- cmocka_unit_test(test_strtoul_noneg),
- };
-
- return cmocka_run_group_tests(tests, NULL, NULL);
-}
-
-
-static void
-test_strtoul_noneg(void **state)
-{
- errno = 0;
- assert_true(strtoul_noneg("42", NULL, 0) == 42);
- assert_true(errno == 0);
-
- assert_true(strtoul_noneg("-1", NULL, 0) == 0);
- assert_true(errno == ERANGE);
- errno = 0;
- assert_true(strtoul_noneg("-3", NULL, 0) == 0);
- assert_true(errno == ERANGE);
- errno = 0;
- assert_true(strtoul_noneg("-0xFFFFFFFFFFFFFFFF", NULL, 0) == 0);
- assert_true(errno == ERANGE);
-
- errno = 0;
- assert_true(strtoul_noneg("-0x10000000000000000", NULL, 0) == 0);
- assert_true(errno == ERANGE);
-}