summaryrefslogtreecommitdiff
path: root/lib/libc/string/strlcat.c
blob: a2c333e00542df7a0989f1471e840eebf2595db3 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <string.h>

size_t strlcat(char *restrict dst, const char *restrict src, size_t dstsize)
{
	size_t dlen = strlen(dst);
	size_t slen = strlen(src);
	size_t n = dstsize - dlen - 1;

	if (n == 0)
		return dlen + slen;

	if (n > slen)
		n = slen;

	memcpy(dst + dlen, src, n);
	dst[dlen + n] = '\0';

	return dlen + n;
}