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
11void *__memchr(const void *, int, size_t);
12size_t __strlcpy(char *restrict, const char *restrict, size_t);
13
14size_t
15strlcat(char *restrict dst, const char *restrict src, size_t dstsize)
16{
17	char *loc = __memchr(dst, '\0', dstsize);
18
19	if (loc != NULL) {
20		size_t dstlen = (size_t)(loc - dst);
21
22		return (dstlen + __strlcpy(loc, src, dstsize - dstlen));
23	} else
24		return (dstsize + strlen(src));
25}
26