blob: 94fdc0963dc3f8ba652b6edc9267d994efeba444 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
|
/*-
* SPDX-License-Identifier: BSD-2-Clause
*
* Copyright (c) 2023 Robert Clausecker
*/
#include <sys/cdefs.h>
#include <string.h>
#undef strlcat /* FORTIFY_SOURCE */
void *__memchr(const void *, int, size_t);
size_t __strlcpy(char *restrict, const char *restrict, size_t);
size_t
strlcat(char *restrict dst, const char *restrict src, size_t dstsize)
{
char *loc = __memchr(dst, '\0', dstsize);
if (loc != NULL) {
size_t dstlen = (size_t)(loc - dst);
return (dstlen + __strlcpy(loc, src, dstsize - dstlen));
} else
return (dstsize + strlen(src));
}
|