From: Alejandro Colomar Date: Thu, 27 Jun 2024 09:29:56 +0000 (+0200) Subject: lib/string/sprintf/, lib/, src/, tests/: Move all sprintf(3)-like APIs to a subdirectory X-Git-Tag: 4.17.0-rc1~206 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=22272347b63932e392a5bbf7a4e6a00a1f692ad8;p=thirdparty%2Fshadow.git lib/string/sprintf/, lib/, src/, tests/: Move all sprintf(3)-like APIs to a subdirectory And have a separate file for each pair of APIs. Signed-off-by: Alejandro Colomar --- diff --git a/lib/Makefile.am b/lib/Makefile.am index 2a65e1d79..f6691d4c5 100644 --- a/lib/Makefile.am +++ b/lib/Makefile.am @@ -144,12 +144,14 @@ libshadow_la_SOURCES = \ spawn.c \ sssd.c \ sssd.h \ - string/sprintf.c \ - string/sprintf.h \ + string/sprintf/snprintf.c \ + string/sprintf/snprintf.h \ + string/sprintf/stpeprintf.c \ + string/sprintf/stpeprintf.h \ + string/sprintf/xasprintf.c \ + string/sprintf/xasprintf.h \ string/stpecpy.c \ string/stpecpy.h \ - string/stpeprintf.c \ - string/stpeprintf.h \ string/strftime.c \ string/strftime.h \ string/strncpy.h \ diff --git a/lib/commonio.c b/lib/commonio.c index 396feff1a..f1723c808 100644 --- a/lib/commonio.c +++ b/lib/commonio.c @@ -33,7 +33,7 @@ #include "prototypes.h" #include "commonio.h" #include "shadowlog_internal.h" -#include "string/sprintf.h" +#include "string/sprintf/snprintf.h" /* local function prototypes */ diff --git a/lib/copydir.c b/lib/copydir.c index 926033afc..58d7cb8cd 100644 --- a/lib/copydir.c +++ b/lib/copydir.c @@ -36,7 +36,7 @@ #include #endif /* WITH_ATTR */ #include "shadowlog.h" -#include "string/sprintf.h" +#include "string/sprintf/xasprintf.h" static /*@null@*/const char *src_orig; diff --git a/lib/env.c b/lib/env.c index 9b5fd32f5..8a59468a6 100644 --- a/lib/env.c +++ b/lib/env.c @@ -20,7 +20,8 @@ #include "prototypes.h" #include "defines.h" #include "shadowlog.h" -#include "string/sprintf.h" +#include "string/sprintf/snprintf.h" +#include "string/sprintf/xasprintf.h" /* diff --git a/lib/get_pid.c b/lib/get_pid.c index f090a2651..f4d31cfda 100644 --- a/lib/get_pid.c +++ b/lib/get_pid.c @@ -14,7 +14,7 @@ #include #include "atoi/getnum.h" -#include "string/sprintf.h" +#include "string/sprintf/snprintf.h" /* diff --git a/lib/getdef.c b/lib/getdef.c index 30f54bab3..4b3dc5bb7 100644 --- a/lib/getdef.c +++ b/lib/getdef.c @@ -26,7 +26,7 @@ #include "atoi/str2i.h" #include "getdef.h" #include "shadowlog_internal.h" -#include "string/sprintf.h" +#include "string/sprintf/xasprintf.h" /* diff --git a/lib/hushed.c b/lib/hushed.c index 86c224f33..627a0595b 100644 --- a/lib/hushed.c +++ b/lib/hushed.c @@ -18,7 +18,7 @@ #include "defines.h" #include "prototypes.h" #include "getdef.h" -#include "string/sprintf.h" +#include "string/sprintf/snprintf.h" /* diff --git a/lib/idmapping.c b/lib/idmapping.c index 56c72eae8..b74fc2da9 100644 --- a/lib/idmapping.c +++ b/lib/idmapping.c @@ -16,7 +16,7 @@ #include "alloc.h" #include "atoi/str2i.h" #include "prototypes.h" -#include "string/stpeprintf.h" +#include "string/sprintf/stpeprintf.h" #include "idmapping.h" #if HAVE_SYS_CAPABILITY_H #include diff --git a/lib/mail.c b/lib/mail.c index d14bdb18a..9bbab2699 100644 --- a/lib/mail.c +++ b/lib/mail.c @@ -17,7 +17,7 @@ #include "alloc.h" #include "getdef.h" -#include "string/sprintf.h" +#include "string/sprintf/xasprintf.h" #ident "$Id$" diff --git a/lib/nss.c b/lib/nss.c index dcb8160bd..80f5e544f 100644 --- a/lib/nss.c +++ b/lib/nss.c @@ -14,7 +14,7 @@ #include "../libsubid/subid.h" #include "shadowlog_internal.h" #include "shadowlog.h" -#include "string/sprintf.h" +#include "string/sprintf/snprintf.h" #define NSSWITCH "/etc/nsswitch.conf" diff --git a/lib/prefix_flag.c b/lib/prefix_flag.c index c1245d6aa..3213febdd 100644 --- a/lib/prefix_flag.c +++ b/lib/prefix_flag.c @@ -29,7 +29,7 @@ #endif /* ENABLE_SUBIDS */ #include "getdef.h" #include "shadowlog.h" -#include "string/sprintf.h" +#include "string/sprintf/xasprintf.h" static char *passwd_db_file = NULL; diff --git a/lib/pwauth.c b/lib/pwauth.c index 0cd3412b1..bbc2d2419 100644 --- a/lib/pwauth.c +++ b/lib/pwauth.c @@ -25,7 +25,7 @@ #include "prototypes.h" #include "pwauth.h" #include "getdef.h" -#include "string/sprintf.h" +#include "string/sprintf/snprintf.h" #ifdef SKEY #include diff --git a/lib/setupenv.c b/lib/setupenv.c index c9b7f26fe..8c58ac533 100644 --- a/lib/setupenv.c +++ b/lib/setupenv.c @@ -27,7 +27,7 @@ #include #include "getdef.h" #include "shadowlog.h" -#include "string/sprintf.h" +#include "string/sprintf/xasprintf.h" #ifndef USE_PAM diff --git a/lib/shell.c b/lib/shell.c index 25ef3e30b..b4db966aa 100644 --- a/lib/shell.c +++ b/lib/shell.c @@ -15,7 +15,7 @@ #include #include "prototypes.h" #include "defines.h" -#include "string/sprintf.h" +#include "string/sprintf/snprintf.h" extern char **newenvp; diff --git a/lib/string/sprintf.c b/lib/string/sprintf.c deleted file mode 100644 index cf3c210b5..000000000 --- a/lib/string/sprintf.c +++ /dev/null @@ -1,24 +0,0 @@ -/* - * SPDX-FileCopyrightText: 2023, Alejandro Colomar - * SPDX-License-Identifier: BSD-3-Clause - */ - -#include - -#ident "$Id$" - -#include "string/sprintf.h" - -#include -#include -#include - - -extern inline int xasprintf(char **restrict s, const char *restrict fmt, ...); -extern inline int xvasprintf(char **restrict s, const char *restrict fmt, - va_list ap); - -extern inline int snprintf_(char *restrict s, size_t size, - const char *restrict fmt, ...); -extern inline int vsnprintf_(char *restrict s, size_t size, - const char *restrict fmt, va_list ap); diff --git a/lib/string/sprintf/snprintf.c b/lib/string/sprintf/snprintf.c new file mode 100644 index 000000000..3a71a697e --- /dev/null +++ b/lib/string/sprintf/snprintf.c @@ -0,0 +1,16 @@ +// SPDX-FileCopyrightText: 2023-2024, Alejandro Colomar +// SPDX-License-Identifier: BSD-3-Clause + + +#include + +#include "string/sprintf/snprintf.h" + +#include +#include + + +extern inline int snprintf_(char *restrict s, size_t size, + const char *restrict fmt, ...); +extern inline int vsnprintf_(char *restrict s, size_t size, + const char *restrict fmt, va_list ap); diff --git a/lib/string/sprintf.h b/lib/string/sprintf/snprintf.h similarity index 51% rename from lib/string/sprintf.h rename to lib/string/sprintf/snprintf.h index 748536943..d181c661a 100644 --- a/lib/string/sprintf.h +++ b/lib/string/sprintf/snprintf.h @@ -1,11 +1,9 @@ -/* - * SPDX-FileCopyrightText: 2023, Alejandro Colomar - * SPDX-License-Identifier: BSD-3-Clause - */ +// SPDX-FileCopyrightText: 2023-2024, Alejandro Colomar +// SPDX-License-Identifier: BSD-3-Clause -#ifndef SHADOW_INCLUDE_LIB_SPRINTF_H_ -#define SHADOW_INCLUDE_LIB_SPRINTF_H_ +#ifndef SHADOW_INCLUDE_LIB_STRING_SPRINTF_SNPRINTF_H_ +#define SHADOW_INCLUDE_LIB_STRING_SPRINTF_SNPRINTF_H_ #include @@ -15,19 +13,15 @@ #include #include "attr.h" -#include "defines.h" #include "sizeof.h" #define SNPRINTF(s, fmt, ...) \ - snprintf_(s, NITEMS(s), fmt __VA_OPT__(,) __VA_ARGS__) +( \ + snprintf_(s, NITEMS(s), fmt __VA_OPT__(,) __VA_ARGS__) \ +) -format_attr(printf, 2, 3) -inline int xasprintf(char **restrict s, const char *restrict fmt, ...); -format_attr(printf, 2, 0) -inline int xvasprintf(char **restrict s, const char *restrict fmt, va_list ap); - format_attr(printf, 3, 4) inline int snprintf_(char *restrict s, size_t size, const char *restrict fmt, ...); @@ -36,35 +30,6 @@ inline int vsnprintf_(char *restrict s, size_t size, const char *restrict fmt, va_list ap); -inline int -xasprintf(char **restrict s, const char *restrict fmt, ...) -{ - int len; - va_list ap; - - va_start(ap, fmt); - len = xvasprintf(s, fmt, ap); - va_end(ap); - - return len; -} - - -inline int -xvasprintf(char **restrict s, const char *restrict fmt, va_list ap) -{ - int len; - - len = vasprintf(s, fmt, ap); - if (len == -1) { - perror("asprintf"); - exit(EXIT_FAILURE); - } - - return len; -} - - inline int snprintf_(char *restrict s, size_t size, const char *restrict fmt, ...) { diff --git a/lib/string/stpeprintf.c b/lib/string/sprintf/stpeprintf.c similarity index 56% rename from lib/string/stpeprintf.c rename to lib/string/sprintf/stpeprintf.c index cecd95d7e..15148df5a 100644 --- a/lib/string/stpeprintf.c +++ b/lib/string/sprintf/stpeprintf.c @@ -1,25 +1,17 @@ -/* - * SPDX-FileCopyrightText: 2022 - 2023, Alejandro Colomar - * - * SPDX-License-Identifier: BSD-3-Clause - */ +// SPDX-FileCopyrightText: 2022-2024, Alejandro Colomar +// SPDX-License-Identifier: BSD-3-Clause #include -#if !defined(HAVE_STPEPRINTF) - -#ident "$Id$" - -#include "string/stpeprintf.h" +#include "string/sprintf/stpeprintf.h" #include +#if !defined(HAVE_STPEPRINTF) extern inline char *stpeprintf(char *dst, char *end, const char *restrict fmt, ...); extern inline char *vstpeprintf(char *dst, char *end, const char *restrict fmt, va_list ap); - - -#endif // !HAVE_STPEPRINTF +#endif diff --git a/lib/string/stpeprintf.h b/lib/string/sprintf/stpeprintf.h similarity index 88% rename from lib/string/stpeprintf.h rename to lib/string/sprintf/stpeprintf.h index 14ee7b6ee..ccd844bc2 100644 --- a/lib/string/stpeprintf.h +++ b/lib/string/sprintf/stpeprintf.h @@ -1,32 +1,27 @@ -/* - * SPDX-FileCopyrightText: 2022 - 2023, Alejandro Colomar - * - * SPDX-License-Identifier: BSD-3-Clause - */ +// SPDX-FileCopyrightText: 2022-2024, Alejandro Colomar +// SPDX-License-Identifier: BSD-3-Clause -#ifndef SHADOW_INCLUDE_LIB_STPEPRINTF_H_ -#define SHADOW_INCLUDE_LIB_STPEPRINTF_H_ +#ifndef SHADOW_INCLUDE_LIB_STRING_SPRINTF_STPEPRINTF_H_ +#define SHADOW_INCLUDE_LIB_STRING_SPRINTF_STPEPRINTF_H_ #include -#if !defined(HAVE_STPEPRINTF) - #include #include #include #include "attr.h" -#include "defines.h" +#if !defined(HAVE_STPEPRINTF) format_attr(printf, 3, 4) inline char *stpeprintf(char *dst, char *end, const char *restrict fmt, ...); - format_attr(printf, 3, 0) inline char *vstpeprintf(char *dst, char *end, const char *restrict fmt, va_list ap); +#endif /* @@ -79,6 +74,7 @@ inline char *vstpeprintf(char *dst, char *end, const char *restrict fmt, */ +#if !defined(HAVE_STPEPRINTF) inline char * stpeprintf(char *dst, char *end, const char *restrict fmt, ...) { @@ -91,8 +87,10 @@ stpeprintf(char *dst, char *end, const char *restrict fmt, ...) return p; } +#endif +#if !defined(HAVE_STPEPRINTF) inline char * vstpeprintf(char *dst, char *end, const char *restrict fmt, va_list ap) { @@ -114,7 +112,7 @@ vstpeprintf(char *dst, char *end, const char *restrict fmt, va_list ap) return dst + len; } +#endif -#endif // !HAVE_STPEPRINTF #endif // include guard diff --git a/lib/string/sprintf/xasprintf.c b/lib/string/sprintf/xasprintf.c new file mode 100644 index 000000000..2c7405651 --- /dev/null +++ b/lib/string/sprintf/xasprintf.c @@ -0,0 +1,14 @@ +// SPDX-FileCopyrightText: 2023-2024, Alejandro Colomar +// SPDX-License-Identifier: BSD-3-Clause + + +#include + +#include "string/sprintf/xasprintf.h" + +#include + + +extern inline int xasprintf(char **restrict s, const char *restrict fmt, ...); +extern inline int xvasprintf(char **restrict s, const char *restrict fmt, + va_list ap); diff --git a/lib/string/sprintf/xasprintf.h b/lib/string/sprintf/xasprintf.h new file mode 100644 index 000000000..073cb9031 --- /dev/null +++ b/lib/string/sprintf/xasprintf.h @@ -0,0 +1,54 @@ +// SPDX-FileCopyrightText: 2023-2024, Alejandro Colomar +// SPDX-License-Identifier: BSD-3-Clause + + +#ifndef SHADOW_INCLUDE_LIB_STRING_SPRINTF_XASPRINTF_H_ +#define SHADOW_INCLUDE_LIB_STRING_SPRINTF_XASPRINTF_H_ + + +#include + +#include +#include +#include +#include + +#include "attr.h" + + +format_attr(printf, 2, 3) +inline int xasprintf(char **restrict s, const char *restrict fmt, ...); +format_attr(printf, 2, 0) +inline int xvasprintf(char **restrict s, const char *restrict fmt, va_list ap); + + +inline int +xasprintf(char **restrict s, const char *restrict fmt, ...) +{ + int len; + va_list ap; + + va_start(ap, fmt); + len = xvasprintf(s, fmt, ap); + va_end(ap); + + return len; +} + + +inline int +xvasprintf(char **restrict s, const char *restrict fmt, va_list ap) +{ + int len; + + len = vasprintf(s, fmt, ap); + if (len == -1) { + perror("asprintf"); + exit(EXIT_FAILURE); + } + + return len; +} + + +#endif // include guard diff --git a/lib/subordinateio.c b/lib/subordinateio.c index b769aa2a8..a4e114de3 100644 --- a/lib/subordinateio.c +++ b/lib/subordinateio.c @@ -20,7 +20,7 @@ #include "alloc.h" #include "atoi/str2i.h" -#include "string/sprintf.h" +#include "string/sprintf/snprintf.h" #define ID_SIZE 31 diff --git a/lib/user_busy.c b/lib/user_busy.c index 0c7d5cbca..495fa535a 100644 --- a/lib/user_busy.c +++ b/lib/user_busy.c @@ -25,7 +25,7 @@ #include "subordinateio.h" #endif /* ENABLE_SUBIDS */ #include "shadowlog.h" -#include "string/sprintf.h" +#include "string/sprintf/snprintf.h" #ifdef __linux__ diff --git a/src/chage.c b/src/chage.c index 1edab47fa..57228972a 100644 --- a/src/chage.c +++ b/src/chage.c @@ -34,7 +34,7 @@ #include "pwio.h" #include "shadowio.h" #include "shadowlog.h" -#include "string/sprintf.h" +#include "string/sprintf/snprintf.h" #include "string/strftime.h" #include "string/strtcpy.h" #include "time/day_to_str.h" diff --git a/src/chfn.c b/src/chfn.c index 9043212a1..663710648 100644 --- a/src/chfn.c +++ b/src/chfn.c @@ -32,7 +32,7 @@ /*@-exitarg@*/ #include "exitcodes.h" #include "shadowlog.h" -#include "string/sprintf.h" +#include "string/sprintf/snprintf.h" #include "string/strtcpy.h" diff --git a/src/gpasswd.c b/src/gpasswd.c index de6b1c4cc..9983b314a 100644 --- a/src/gpasswd.c +++ b/src/gpasswd.c @@ -35,7 +35,7 @@ /*@-exitarg@*/ #include "exitcodes.h" #include "shadowlog.h" -#include "string/sprintf.h" +#include "string/sprintf/snprintf.h" #include "string/strtcpy.h" diff --git a/src/groupmod.c b/src/groupmod.c index d7aaf6660..5c13d066f 100644 --- a/src/groupmod.c +++ b/src/groupmod.c @@ -39,8 +39,8 @@ #include "sgroupio.h" #endif #include "shadowlog.h" +#include "string/sprintf/stpeprintf.h" #include "string/stpecpy.h" -#include "string/stpeprintf.h" /* diff --git a/src/login.c b/src/login.c index 3a302983f..0342e8e8a 100644 --- a/src/login.c +++ b/src/login.c @@ -38,7 +38,7 @@ /*@-exitarg@*/ #include "exitcodes.h" #include "shadowlog.h" -#include "string/sprintf.h" +#include "string/sprintf/snprintf.h" #include "string/strftime.h" #include "string/strtcpy.h" diff --git a/src/newgrp.c b/src/newgrp.c index 1b3d76b83..b9aec21d9 100644 --- a/src/newgrp.c +++ b/src/newgrp.c @@ -25,7 +25,7 @@ /*@-exitarg@*/ #include "exitcodes.h" #include "shadowlog.h" -#include "string/sprintf.h" +#include "string/sprintf/snprintf.h" /* diff --git a/src/newusers.c b/src/newusers.c index 47a587ec0..ad1723e54 100644 --- a/src/newusers.c +++ b/src/newusers.c @@ -52,7 +52,7 @@ #endif /* ENABLE_SUBIDS */ #include "chkname.h" #include "shadowlog.h" -#include "string/sprintf.h" +#include "string/sprintf/snprintf.h" /* diff --git a/src/su.c b/src/su.c index 80c085971..42a72247c 100644 --- a/src/su.c +++ b/src/su.c @@ -59,7 +59,7 @@ /*@-exitarg@*/ #include "exitcodes.h" #include "shadowlog.h" -#include "string/sprintf.h" +#include "string/sprintf/snprintf.h" #include "string/strtcpy.h" diff --git a/src/useradd.c b/src/useradd.c index 14ab511c9..3f0726849 100644 --- a/src/useradd.c +++ b/src/useradd.c @@ -65,7 +65,8 @@ #include "tcbfuncs.h" #endif #include "shadowlog.h" -#include "string/sprintf.h" +#include "string/sprintf/snprintf.h" +#include "string/sprintf/xasprintf.h" #ifndef SKEL_DIR diff --git a/src/userdel.c b/src/userdel.c index ff1f7ddf5..38158d443 100644 --- a/src/userdel.c +++ b/src/userdel.c @@ -52,7 +52,7 @@ #include "subordinateio.h" #endif /* ENABLE_SUBIDS */ #include "shadowlog.h" -#include "string/sprintf.h" +#include "string/sprintf/xasprintf.h" /* diff --git a/src/usermod.c b/src/usermod.c index 52d9dbb72..2cc35d754 100644 --- a/src/usermod.c +++ b/src/usermod.c @@ -61,7 +61,7 @@ #include "tcbfuncs.h" #endif #include "shadowlog.h" -#include "string/sprintf.h" +#include "string/sprintf/xasprintf.h" #include "time/day_to_str.h" diff --git a/src/vipw.c b/src/vipw.c index c30b32dee..5d8d1c2e8 100644 --- a/src/vipw.c +++ b/src/vipw.c @@ -44,7 +44,8 @@ #include "tcbfuncs.h" #endif /* WITH_TCB */ #include "shadowlog.h" -#include "string/sprintf.h" +#include "string/sprintf/snprintf.h" +#include "string/sprintf/xasprintf.h" #define MSG_WARN_EDIT_OTHER_FILE _( \ diff --git a/tests/unit/Makefile.am b/tests/unit/Makefile.am index 21490f15d..17538776a 100644 --- a/tests/unit/Makefile.am +++ b/tests/unit/Makefile.am @@ -7,7 +7,7 @@ check_PROGRAMS = \ test_adds \ test_atoi_strtoi \ test_chkname \ - test_sprintf \ + test_snprintf \ test_strncpy \ test_strtcpy \ test_typetraits \ @@ -78,16 +78,16 @@ test_logind_LDADD = \ $(LIBSYSTEMD) \ $(NULL) -test_sprintf_SOURCES = \ - ../../lib/string/sprintf.c \ - test_sprintf.c \ +test_snprintf_SOURCES = \ + ../../lib/string/sprintf/snprintf.c \ + test_snprintf.c \ $(NULL) -test_sprintf_CFLAGS = \ +test_snprintf_CFLAGS = \ $(AM_CFLAGS) \ $(NULL) -test_sprintf_LDFLAGS = \ +test_snprintf_LDFLAGS = \ $(NULL) -test_sprintf_LDADD = \ +test_snprintf_LDADD = \ $(CMOCKA_LIBS) \ $(NULL) @@ -129,7 +129,7 @@ test_typetraits_LDADD = \ $(NULL) test_xasprintf_SOURCES = \ - ../../lib/string/sprintf.c \ + ../../lib/string/sprintf/xasprintf.c \ test_xasprintf.c \ $(NULL) test_xasprintf_CFLAGS = \ diff --git a/tests/unit/test_sprintf.c b/tests/unit/test_snprintf.c similarity index 97% rename from tests/unit/test_sprintf.c rename to tests/unit/test_snprintf.c index bedcff6f4..bdef8ac9a 100644 --- a/tests/unit/test_sprintf.c +++ b/tests/unit/test_snprintf.c @@ -14,7 +14,7 @@ #include #include "sizeof.h" -#include "string/sprintf.h" +#include "string/sprintf/snprintf.h" static void test_SNPRINTF_trunc(void **state); diff --git a/tests/unit/test_xasprintf.c b/tests/unit/test_xasprintf.c index 4c27d78a8..3f3566898 100644 --- a/tests/unit/test_xasprintf.c +++ b/tests/unit/test_xasprintf.c @@ -16,7 +16,7 @@ #include // Required by #include -#include "string/sprintf.h" +#include "string/sprintf/xasprintf.h" #define assert_unreachable() assert_true(0)