atoi/a2i/a2u_nc.h \
atoi/getnum.c \
atoi/getnum.h \
- atoi/str2i/str2i.c \
- atoi/str2i/str2i.h \
- atoi/str2i/str2s.c \
- atoi/str2i/str2s.h \
- atoi/str2i/str2u.c \
- atoi/str2i/str2u.h \
+ atoi/str2i.c \
+ atoi/str2i.h \
atoi/strtoi/strtoi.c \
atoi/strtoi/strtoi.h \
atoi/strtoi/strtou.c \
// SPDX-FileCopyrightText: 2007-2009, Nicolas François
-// SPDX-FileCopyrightText: 2023-2024, Alejandro Colomar <alx@kernel.org>
+// SPDX-FileCopyrightText: 2023-2025, Alejandro Colomar <alx@kernel.org>
// SPDX-License-Identifier: BSD-3-Clause
#include <config.h>
-#include "atoi/str2i/str2i.h"
+#include "atoi/str2i.h"
--- /dev/null
+// SPDX-FileCopyrightText: 2007-2009, Nicolas François
+// SPDX-FileCopyrightText: 2023-2025, Alejandro Colomar <alx@kernel.org>
+// SPDX-License-Identifier: BSD-3-Clause
+
+
+#ifndef SHADOW_INCLUDE_LIB_ATOI_STR2I_H_
+#define SHADOW_INCLUDE_LIB_ATOI_STR2I_H_
+
+
+#include <config.h>
+
+#include <stddef.h>
+
+#include "atoi/a2i/a2i.h"
+#include "typetraits.h"
+
+
+#define str2i(T, ...) a2i(T, __VA_ARGS__, NULL, 0, type_min(T), type_max(T))
+
+#define str2sh(...) str2i(short, __VA_ARGS__)
+#define str2si(...) str2i(int, __VA_ARGS__)
+#define str2sl(...) str2i(long, __VA_ARGS__)
+#define str2sll(...) str2i(long long, __VA_ARGS__)
+
+#define str2uh(...) str2i(unsigned short, __VA_ARGS__)
+#define str2ui(...) str2i(unsigned int, __VA_ARGS__)
+#define str2ul(...) str2i(unsigned long, __VA_ARGS__)
+#define str2ull(...) str2i(unsigned long long, __VA_ARGS__)
+
+
+#endif // include guard
+++ /dev/null
-// SPDX-FileCopyrightText: 2007-2009, Nicolas François
-// SPDX-FileCopyrightText: 2023-2024, Alejandro Colomar <alx@kernel.org>
-// SPDX-License-Identifier: BSD-3-Clause
-
-
-#ifndef SHADOW_INCLUDE_LIB_ATOI_STR2I_STR2I_H_
-#define SHADOW_INCLUDE_LIB_ATOI_STR2I_STR2I_H_
-
-
-#include <config.h>
-
-#include "atoi/str2i/str2s.h"
-#include "atoi/str2i/str2u.h"
-
-
-#define str2i(TYPE, ...) \
-( \
- _Generic((TYPE) 0, \
- short: str2sh, \
- int: str2si, \
- long: str2sl, \
- long long: str2sll, \
- unsigned short: str2uh, \
- unsigned int: str2ui, \
- unsigned long: str2ul, \
- unsigned long long: str2ull \
- )(__VA_ARGS__) \
-)
-
-
-#endif // include guard
+++ /dev/null
-// SPDX-FileCopyrightText: 2007-2009, Nicolas François
-// SPDX-FileCopyrightText: 2023-2024, Alejandro Colomar <alx@kernel.org>
-// SPDX-License-Identifier: BSD-3-Clause
-
-
-#include <config.h>
-
-#include "atoi/str2i/str2s.h"
-
-
-extern inline int str2sh(short *restrict n, const char *restrict s);
-extern inline int str2si(int *restrict n, const char *restrict s);
-extern inline int str2sl(long *restrict n, const char *restrict s);
-extern inline int str2sll(long long *restrict n, const char *restrict s);
+++ /dev/null
-// SPDX-FileCopyrightText: 2007-2009, Nicolas François
-// SPDX-FileCopyrightText: 2023-2024, Alejandro Colomar <alx@kernel.org>
-// SPDX-License-Identifier: BSD-3-Clause
-
-
-#ifndef SHADOW_INCLUDE_LIB_ATOI_STR2I_STR2S_H_
-#define SHADOW_INCLUDE_LIB_ATOI_STR2I_STR2S_H_
-
-
-#include <config.h>
-
-#include <limits.h>
-#include <stddef.h>
-
-#include "atoi/a2i/a2s.h"
-#include "attr.h"
-
-
-ATTR_STRING(2) ATTR_ACCESS(write_only, 1)
-inline int str2sh(short *restrict n, const char *restrict s);
-ATTR_STRING(2) ATTR_ACCESS(write_only, 1)
-inline int str2si(int *restrict n, const char *restrict s);
-ATTR_STRING(2) ATTR_ACCESS(write_only, 1)
-inline int str2sl(long *restrict n, const char *restrict s);
-ATTR_STRING(2) ATTR_ACCESS(write_only, 1)
-inline int str2sll(long long *restrict n, const char *restrict s);
-
-
-inline int
-str2sh(short *restrict n, const char *restrict s)
-{
- return a2sh(n, s, NULL, 0, SHRT_MIN, SHRT_MAX);
-}
-
-
-inline int
-str2si(int *restrict n, const char *restrict s)
-{
- return a2si(n, s, NULL, 0, INT_MIN, INT_MAX);
-}
-
-
-inline int
-str2sl(long *restrict n, const char *restrict s)
-{
- return a2sl(n, s, NULL, 0, LONG_MIN, LONG_MAX);
-}
-
-
-inline int
-str2sll(long long *restrict n, const char *restrict s)
-{
- return a2sll(n, s, NULL, 0, LLONG_MIN, LLONG_MAX);
-}
-
-
-#endif // include guard
+++ /dev/null
-// SPDX-FileCopyrightText: 2007-2009, Nicolas François
-// SPDX-FileCopyrightText: 2023-2024, Alejandro Colomar <alx@kernel.org>
-// SPDX-License-Identifier: BSD-3-Clause
-
-
-#include <config.h>
-
-#include "atoi/str2i/str2u.h"
-
-
-extern inline int str2uh(unsigned short *restrict n, const char *restrict s);
-extern inline int str2ui(unsigned int *restrict n, const char *restrict s);
-extern inline int str2ul(unsigned long *restrict n, const char *restrict s);
-extern inline int str2ull(unsigned long long *restrict n, const char *restrict s);
+++ /dev/null
-// SPDX-FileCopyrightText: 2007-2009, Nicolas François
-// SPDX-FileCopyrightText: 2023-2024, Alejandro Colomar <alx@kernel.org>
-// SPDX-License-Identifier: BSD-3-Clause
-
-
-#ifndef SHADOW_INCLUDE_LIB_ATOI_STR2I_STR2U_H_
-#define SHADOW_INCLUDE_LIB_ATOI_STR2I_STR2U_H_
-
-
-#include <config.h>
-
-#include <limits.h>
-#include <stddef.h>
-
-#include "atoi/a2i/a2u.h"
-#include "attr.h"
-
-
-ATTR_STRING(2) ATTR_ACCESS(write_only, 1)
-inline int str2uh(unsigned short *restrict n, const char *restrict s);
-ATTR_STRING(2) ATTR_ACCESS(write_only, 1)
-inline int str2ui(unsigned int *restrict n, const char *restrict s);
-ATTR_STRING(2) ATTR_ACCESS(write_only, 1)
-inline int str2ul(unsigned long *restrict n, const char *restrict s);
-ATTR_STRING(2) ATTR_ACCESS(write_only, 1)
-inline int str2ull(unsigned long long *restrict n, const char *restrict s);
-
-
-inline int
-str2uh(unsigned short *restrict n, const char *restrict s)
-{
- return a2uh(n, s, NULL, 0, 0, USHRT_MAX);
-}
-
-
-inline int
-str2ui(unsigned int *restrict n, const char *restrict s)
-{
- return a2ui(n, s, NULL, 0, 0, UINT_MAX);
-}
-
-
-inline int
-str2ul(unsigned long *restrict n, const char *restrict s)
-{
- return a2ul(n, s, NULL, 0, 0, ULONG_MAX);
-}
-
-
-inline int
-str2ull(unsigned long long *restrict n, const char *restrict s)
-{
- return a2ull(n, s, NULL, 0, 0, ULLONG_MAX);
-}
-
-
-#endif // include guard
#include "atoi/a2i/a2s.h"
#include "atoi/a2i/a2u.h"
-#include "atoi/str2i/str2u.h"
+#include "atoi/str2i.h"
#include "defines.h"
#include "getdef.h"
#include "prototypes.h"
#include "atoi/a2i/a2i.h"
#include "atoi/a2i/a2s.h"
-#include "atoi/str2i/str2i.h"
-#include "atoi/str2i/str2s.h"
-#include "atoi/str2i/str2u.h"
+#include "atoi/str2i.h"
#include "string/memset/memzero.h"
#include "string/strcmp/streq.h"
#include "string/strcmp/strprefix.h"
#include <string.h>
#include "atoi/a2i/a2s.h"
-#include "atoi/str2i/str2u.h"
+#include "atoi/str2i.h"
#include "defines.h"
#include "prototypes.h"
#include "shadowlog_internal.h"
#include <ctype.h>
-#include "atoi/str2i/str2s.h"
+#include "atoi/str2i.h"
#include "getdate.h"
#include "prototypes.h"
#include "string/ctype/strisascii/strisdigit.h"
#include "alloc/malloc.h"
#include "alloc/realloc.h"
#include "alloc/reallocf.h"
-#include "atoi/str2i/str2u.h"
+#include "atoi/str2i.h"
#include "string/ctype/strisascii/strisdigit.h"
#include "string/sprintf/snprintf.h"
#include "string/strcmp/streq.h"
#include <fcntl.h>
#include "atoi/getnum.h"
-#include "atoi/str2i/str2u.h"
+#include "atoi/str2i.h"
#include "defines.h"
#include "idmapping.h"
#include "prototypes.h"
#include "pam_defs.h"
#endif /* USE_PAM */
#endif /* ACCT_TOOLS_SETUID */
-#include "atoi/str2i/str2s.h"
+#include "atoi/str2i.h"
#include "defines.h"
#include "nscd.h"
#include "sssd.h"
#ifdef USE_PAM
#include "pam_defs.h"
#endif /* USE_PAM */
-#include "atoi/str2i/str2s.h"
+#include "atoi/str2i.h"
#include "defines.h"
#include "nscd.h"
#include "sssd.h"
#include <time.h>
#include <assert.h>
-#include "atoi/str2i/str2s.h"
+#include "atoi/str2i.h"
#include "defines.h"
#include "faillog.h"
#include "prototypes.h"
#include <stdio.h>
#include <unistd.h>
-#include "atoi/str2i/str2u.h"
+#include "atoi/str2i.h"
#include "subid.h"
#include "stdlib.h"
#include "prototypes.h"
#include <net/if.h>
#endif
-#include "atoi/str2i/str2u.h"
+#include "atoi/str2i.h"
#include "defines.h"
#include "prototypes.h"
#include "getdef.h"
#include <stdio.h>
#include <unistd.h>
-#include "atoi/str2i/str2u.h"
+#include "atoi/str2i.h"
#include "subid.h"
#include "stdlib.h"
#include "prototypes.h"
#include "alloc/reallocf.h"
#include "atoi/getnum.h"
-#include "atoi/str2i/str2s.h"
+#include "atoi/str2i.h"
#ifdef ACCT_TOOLS_SETUID
#ifdef USE_PAM
#include "pam_defs.h"