string/strcpy/strncpy.h \
string/strcpy/strtcpy.c \
string/strcpy/strtcpy.h \
- string/strcpy/zustr2stp.c \
- string/strcpy/zustr2stp.h \
string/strdup/strndupa.c \
string/strdup/strndupa.h \
string/strdup/xstrndup.c \
+++ /dev/null
-// SPDX-FileCopyrightText: 2022-2024, Alejandro Colomar <alx@kernel.org>
-// SPDX-License-Identifier: BSD-3-Clause
-
-
-#include <config.h>
-
-#include "string/strcpy/zustr2stp.h"
+++ /dev/null
-// SPDX-FileCopyrightText: 2022-2024, Alejandro Colomar <alx@kernel.org>
-// SPDX-License-Identifier: BSD-3-Clause
-
-
-#ifndef SHADOW_INCLUDE_LIB_STRING_STRCPY_ZUSTR2STP_H_
-#define SHADOW_INCLUDE_LIB_STRING_STRCPY_ZUSTR2STP_H_
-
-
-#include <config.h>
-
-#include <assert.h>
-#include <string.h>
-
-#include "must_be.h"
-#include "sizeof.h"
-
-
-/*
- * SYNOPSIS
- * char *ZUSTR2STP(char *restrict dst, const char src[restrict]);
- *
- * ARGUMENTS
- * dst Destination buffer.
- * src Source null-padded character sequence.
- *
- * DESCRIPTION
- * This macro copies at most NITEMS(src) non-null bytes from the
- * array pointed to by src, followed by a null character, to the
- * buffer pointed to by dst.
- *
- * RETURN VALUE
- * dst + strlen(dst)
- * This function returns a pointer to the terminating NUL
- * byte.
- *
- * CAVEATS
- * This function doesn't know the size of the destination buffer.
- * It assumes it will always be large enough. Since the size of
- * the source buffer is known to the caller, it should make sure to
- * allocate a destination buffer of at least `NITEMS(src) + 1`.
- *
- * EXAMPLES
- * char hostname[NITEMS(utmp->ut_host) + 1];
- *
- * len = ZUSTR2STP(hostname, utmp->ut_host) - hostname;
- * puts(hostname);
- */
-
-
-#define ZUSTR2STP(dst, src) \
-({ \
- static_assert(!is_array(dst) || sizeof(dst) > SIZEOF_ARRAY(src), ""); \
- \
- stpcpy(mempcpy(dst, src, strnlen(src, NITEMS(src))), ""); \
-})
-
-
-#endif // include guard
test_strncpy \
test_strtcpy \
test_typetraits \
- test_xasprintf \
- test_zustr2stp
+ test_xasprintf
if ENABLE_LOGIND
check_PROGRAMS += \
$(CMOCKA_LIBS) \
$(NULL)
-test_zustr2stp_SOURCES = \
- test_zustr2stp.c \
- $(NULL)
-test_zustr2stp_CFLAGS = \
- $(AM_CFLAGS) \
- $(NULL)
-test_zustr2stp_LDFLAGS = \
- $(NULL)
-test_zustr2stp_LDADD = \
- $(CMOCKA_LIBS) \
- $(NULL)
-
endif # HAVE_CMOCKA
+++ /dev/null
-// SPDX-FileCopyrightText: 2024, Alejandro Colomar <alx@kernel.org>
-// SPDX-License-Identifier: BSD-3-Clause
-
-
-#include <config.h>
-
-#include <stddef.h>
-#include <string.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 "string/strcpy/zustr2stp.h"
-
-
-static void test_ZUSTR2STP(void **state);
-
-
-int
-main(void)
-{
- const struct CMUnitTest tests[] = {
- cmocka_unit_test(test_ZUSTR2STP),
- };
-
- return cmocka_run_group_tests(tests, NULL, NULL);
-}
-
-
-static void
-test_ZUSTR2STP(void **state)
-{
- char src[3] = {'1', '2', '3'};
- char dst[4];
-
- assert_true(ZUSTR2STP(&dst, src) == dst + strlen("123"));
- assert_true(strcmp("123", dst) == 0);
-
- src[2] = '\0';
- assert_true(ZUSTR2STP(&dst, src) == dst + strlen("12"));
- assert_true(strcmp("12", dst) == 0);
-
- src[1] = '\0';
- assert_true(ZUSTR2STP(&dst, src) == dst + strlen("1"));
- assert_true(strcmp("1", dst) == 0);
-
- src[0] = '\0';
- assert_true(ZUSTR2STP(&dst, src) == dst + strlen(""));
- assert_true(strcmp("", dst) == 0);
-}