// SPDX-FileCopyrightText: 2024, Alejandro Colomar // SPDX-License-Identifier: BSD-3-Clause #ifndef SHADOW_INCLUDE_LIB_STRING_STRDUP_STRNDUPA_H_ #define SHADOW_INCLUDE_LIB_STRING_STRDUP_STRNDUPA_H_ #include #include #include #include "sizeof.h" #include "string/strcpy/strncat.h" // Similar to strndupa(3), but ensure that 's' is an array. #define STRNDUPA(s) \ ( \ STRNCAT(strcpy(alloca(strnlen(s, NITEMS(s)) + 1), ""), s) \ ) #endif // include guard