1/*-
2 * SPDX-License-Identifier: BSD-2-Clause
3 *
4 * Copyright (c) 2023 Robert Clausecker
5 */
6
7#include <sys/cdefs.h>
8
9#include <string.h>
10
11#undef strncat	/* _FORTIFY_SOURCE */
12
13void *__memccpy(void *restrict, const void *restrict, int, size_t);
14
15char *
16strncat(char *dest, const char *src, size_t n)
17{
18	size_t len;
19	char *endptr;
20
21	len = strlen(dest);
22	endptr = __memccpy(dest + len, src, '\0', n);
23
24	/* avoid an extra branch */
25	if (endptr == NULL)
26		endptr = dest + len + n + 1;
27
28	endptr[-1] = '\0';
29
30	return (dest);
31}
32