/* Note that in contrast to strncpy, strncat ensures the result is terminated.  */
char* strncat(char *dest, const char *src, size_t n)
/* Note that in contrast to strncpy, strncat ensures the result is terminated.  */
char* strncat(char *dest, const char *src, size_t n)
{
	size_t len = __strnend(src, n) - src;
	char *p = __strend(dest);
	p[len] = '\0';
	__builtin_memcpy(p, src, len);
	return dest;
}