From: Alejandro Colomar Date: Sat, 7 Dec 2024 00:59:57 +0000 (+0100) Subject: lib/string/strtok/: xastrsep2ls(): Add function X-Git-Tag: 4.18.0-rc1~4 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=422a5e9975c3399b81d5802c229af0a9d2945e97;p=thirdparty%2Fshadow.git lib/string/strtok/: xastrsep2ls(): Add function Signed-off-by: Alejandro Colomar --- diff --git a/lib/Makefile.am b/lib/Makefile.am index aafc9fd7c..21653c5be 100644 --- a/lib/Makefile.am +++ b/lib/Makefile.am @@ -249,6 +249,8 @@ libshadow_la_SOURCES = \ string/strtok/strsep2arr.h \ string/strtok/strsep2ls.c \ string/strtok/strsep2ls.h \ + string/strtok/xastrsep2ls.c \ + string/strtok/xastrsep2ls.h \ strtoday.c \ sub.c \ subordinateio.h \ diff --git a/lib/string/strtok/xastrsep2ls.c b/lib/string/strtok/xastrsep2ls.c new file mode 100644 index 000000000..84572fd63 --- /dev/null +++ b/lib/string/strtok/xastrsep2ls.c @@ -0,0 +1,13 @@ +// SPDX-FileCopyrightText: 2024, Alejandro Colomar +// SPDX-License-Identifier: BSD-3-Clause + + +#include + +#include "string/strtok/xastrsep2ls.h" + +#include + + +extern inline char **xastrsep2ls(char *restrict s, const char *restrict delim, + size_t *restrict np); diff --git a/lib/string/strtok/xastrsep2ls.h b/lib/string/strtok/xastrsep2ls.h new file mode 100644 index 000000000..e935a9297 --- /dev/null +++ b/lib/string/strtok/xastrsep2ls.h @@ -0,0 +1,46 @@ +// SPDX-FileCopyrightText: 2024, Alejandro Colomar +// SPDX-License-Identifier: BSD-3-Clause + + +#ifndef SHADOW_INCLUDE_LIB_STRING_STRTOK_XASTRSEP2LS_H_ +#define SHADOW_INCLUDE_LIB_STRING_STRTOK_XASTRSEP2LS_H_ + + +#include + +#include +#include +#include +#include +#include + +#include "attr.h" +#include "shadowlog.h" +#include "string/strtok/astrsep2ls.h" + + +ATTR_ACCESS(read_write, 1) ATTR_ACCESS(write_only, 3) +ATTR_STRING(1) ATTR_STRING(2) +inline char **xastrsep2ls(char *restrict s, const char *restrict delim, + size_t *restrict np); + + +// exit-on-error allocate string separate to list-of-strings +inline char ** +xastrsep2ls(char *s, const char *restrict delim, size_t *restrict np) +{ + char **ls; + + ls = astrsep2ls(s, delim, np); + if (ls == NULL) + goto x; + + return ls; +x: + fprintf(log_get_logfd(), "%s: %s\n", + log_get_progname(), strerror(errno)); + exit(13); +} + + +#endif // include guard