/* The result is not NUL-terminated if the source exceeds  */
char* strncpy(char *dest, const char *src, size_t n)
/* The result is not NUL-terminated if the source exceeds  */
char* strncpy(char *dest, const char *src, size_t n)
{
	size_t len = __strnend(src, n) - src;
	__builtin_memset(dest + len, 0, n - len);
	__builtin_memcpy(dest, src, len);
	return dest;
}