]> git.ipfire.org Git - thirdparty/shadow.git/commitdiff
lib/atoi/str2i/, *: Simplify implementations
authorAlejandro Colomar <alx@kernel.org>
Thu, 13 Mar 2025 02:19:09 +0000 (03:19 +0100)
committerSerge Hallyn <serge@hallyn.com>
Fri, 30 May 2025 20:11:02 +0000 (15:11 -0500)
Signed-off-by: Alejandro Colomar <alx@kernel.org>
21 files changed:
lib/Makefile.am
lib/atoi/str2i.c [moved from lib/atoi/str2i/str2i.c with 57% similarity]
lib/atoi/str2i.h [new file with mode: 0644]
lib/atoi/str2i/str2i.h [deleted file]
lib/atoi/str2i/str2s.c [deleted file]
lib/atoi/str2i/str2s.h [deleted file]
lib/atoi/str2i/str2u.c [deleted file]
lib/atoi/str2i/str2u.h [deleted file]
lib/getdef.c
lib/limits.c
lib/sgetspent.c
lib/strtoday.c
lib/subordinateio.c
src/check_subid_range.c
src/chgpasswd.c
src/chpasswd.c
src/faillog.c
src/free_subid_range.c
src/lastlog.c
src/new_subid_range.c
src/newusers.c

index 1fb2827db7c481c61d427aa557423667dae3ffc7..0c0284a9b1390c0dc7756b7d21db0306e6c76c4f 100644 (file)
@@ -59,12 +59,8 @@ libshadow_la_SOURCES = \
        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 \
similarity index 57%
rename from lib/atoi/str2i/str2i.c
rename to lib/atoi/str2i.c
index ff5ad8f0210b29db6bd32a9d5c075aeb31425484..cb055723cc03095c55294cc1ae0ae5b1007950b6 100644 (file)
@@ -1,8 +1,8 @@
 // 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"
diff --git a/lib/atoi/str2i.h b/lib/atoi/str2i.h
new file mode 100644 (file)
index 0000000..ca15ac5
--- /dev/null
@@ -0,0 +1,31 @@
+// 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
diff --git a/lib/atoi/str2i/str2i.h b/lib/atoi/str2i/str2i.h
deleted file mode 100644 (file)
index e2cecc7..0000000
+++ /dev/null
@@ -1,31 +0,0 @@
-// 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
diff --git a/lib/atoi/str2i/str2s.c b/lib/atoi/str2i/str2s.c
deleted file mode 100644 (file)
index f77c594..0000000
+++ /dev/null
@@ -1,14 +0,0 @@
-// 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);
diff --git a/lib/atoi/str2i/str2s.h b/lib/atoi/str2i/str2s.h
deleted file mode 100644 (file)
index dc20faa..0000000
+++ /dev/null
@@ -1,57 +0,0 @@
-// 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
diff --git a/lib/atoi/str2i/str2u.c b/lib/atoi/str2i/str2u.c
deleted file mode 100644 (file)
index 25fffda..0000000
+++ /dev/null
@@ -1,14 +0,0 @@
-// 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);
diff --git a/lib/atoi/str2i/str2u.h b/lib/atoi/str2i/str2u.h
deleted file mode 100644 (file)
index c25941c..0000000
+++ /dev/null
@@ -1,57 +0,0 @@
-// 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
index f963e5bc8a0b15ca85435b4817d4fdea04ca764e..9cc8bbfe50c7c7a785e62f6b1819752a906eaae9 100644 (file)
@@ -24,7 +24,7 @@
 
 #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"
index 55a5fa9d9ae3ce08ac0fbcfe1a307dddd2d48f99..d0598f0bbdc9e57e08a9ab309142a251ce9e24e4 100644 (file)
@@ -32,9 +32,7 @@
 
 #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"
index f34853ec69eebb88eb767f2e92107a9241ea3b33..db85cd024287991dd548a75495393b472cb4a660 100644 (file)
@@ -20,7 +20,7 @@
 #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"
index fb242bfbb6b6df0d8ff1f5a4adfac8f3adac6321..c37c90abedb158b9d778b00bed7cebdb2170159e 100644 (file)
@@ -11,7 +11,7 @@
 
 #include <ctype.h>
 
-#include "atoi/str2i/str2s.h"
+#include "atoi/str2i.h"
 #include "getdate.h"
 #include "prototypes.h"
 #include "string/ctype/strisascii/strisdigit.h"
index 229f27cb312619ef77ef5e582021c3f4cf00f280..90372476755aaf84b09803b38bff106a7e986751 100644 (file)
@@ -21,7 +21,7 @@
 #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"
index a33f92238111e0006a41ae1d7d68987318031a28..cc40ed8259c9135ee5bec6877fd20f63d05046fb 100644 (file)
@@ -13,7 +13,7 @@
 #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"
index c5f30284458c89bb5a215b8adcb3ad8cd5c8aba5..e77596578e3b707451d6c3d409930e75d3371452 100644 (file)
@@ -23,7 +23,7 @@
 #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"
index edab544ecbaf16f384d45ca90647ab1b8fb52fd6..315e91cef0a5ef5c51110c29fe6b8413d73249e6 100644 (file)
@@ -21,7 +21,7 @@
 #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"
index 709d741cef2ff932f019fbff44f117d6c0baf83a..ae0ea3d93058b22f9b6f4b56ed47042d8ea26a4e 100644 (file)
@@ -19,7 +19,7 @@
 #include <time.h>
 #include <assert.h>
 
-#include "atoi/str2i/str2s.h"
+#include "atoi/str2i.h"
 #include "defines.h"
 #include "faillog.h"
 #include "prototypes.h"
index bff6f7b2b7fe383fe5a58919c6fb59b73823da78..4bdacfb7dc76673617ab9478f00505f59f6bf303 100644 (file)
@@ -4,7 +4,7 @@
 #include <stdio.h>
 #include <unistd.h>
 
-#include "atoi/str2i/str2u.h"
+#include "atoi/str2i.h"
 #include "subid.h"
 #include "stdlib.h"
 #include "prototypes.h"
index 1a5e1a631c648e1cfd5ce77d77d1a1e5cb96da9b..6ae0de9d7a8d60db90027b6ccc07b9967bc96b21 100644 (file)
@@ -23,7 +23,7 @@
 #include <net/if.h>
 #endif
 
-#include "atoi/str2i/str2u.h"
+#include "atoi/str2i.h"
 #include "defines.h"
 #include "prototypes.h"
 #include "getdef.h"
index 6c62cc08be8edcb01369844c2bd46329a6b15bde..6be957409c9d1857674bd26bfbba1a85e2ab8ab5 100644 (file)
@@ -3,7 +3,7 @@
 #include <stdio.h>
 #include <unistd.h>
 
-#include "atoi/str2i/str2u.h"
+#include "atoi/str2i.h"
 #include "subid.h"
 #include "stdlib.h"
 #include "prototypes.h"
index e3685efe94826d12e7aa4043d541aaf191a28634..ef20541a2d72f6cad3a43d16c7e812ac59a85816 100644 (file)
@@ -34,7 +34,7 @@
 
 #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"