diff options
Diffstat (limited to 'lib/libc/aarch64/string/strncat.c')
-rw-r--r-- | lib/libc/aarch64/string/strncat.c | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/lib/libc/aarch64/string/strncat.c b/lib/libc/aarch64/string/strncat.c new file mode 100644 index 000000000000..2c63ab50b3c3 --- /dev/null +++ b/lib/libc/aarch64/string/strncat.c @@ -0,0 +1,31 @@ +/*- + * SPDX-License-Identifier: BSD-2-Clause + * + * Copyright (c) 2023 Robert Clausecker + */ + +#include <sys/cdefs.h> + +#include <string.h> + +#undef strncat /* _FORTIFY_SOURCE */ + +void *__memccpy(void *restrict, const void *restrict, int, size_t); + +char * +strncat(char *dest, const char *src, size_t n) +{ + size_t len; + char *endptr; + + len = strlen(dest); + endptr = __memccpy(dest + len, src, '\0', n); + + /* avoid an extra branch */ + if (endptr == NULL) + endptr = dest + len + n + 1; + + endptr[-1] = '\0'; + + return (dest); +} |