summaryrefslogtreecommitdiff
path: root/lib/libc/string/strlcpy.c
blob: fcbcebabc458383399870bc4e3323458ae12bccb (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <string.h> // for size_t, memcpy, strlen, strlcpy

size_t strlcpy(char *restrict dst, const char *restrict src, size_t dstsize)
{
	size_t srclen = strlen(src);

	if (dstsize == 0) {
		return srclen;
	}

	size_t copylen = srclen < dstsize - 1 ? srclen : dstsize - 1;
	memcpy(dst, src, copylen);
	dst[copylen] = '\0';

	return srclen;
}