From dbc3cc2d0e65a962e29b69913968965414453d14 Mon Sep 17 00:00:00 2001 From: marvin Date: Fri, 22 Oct 2021 11:56:40 +0200 Subject: [PATCH] 2021-10-22 11:56:40 --- libft/munit.c | 28 ++++++++++++++++------------ 1 file changed, 16 insertions(+), 12 deletions(-) diff --git a/libft/munit.c b/libft/munit.c index 7d6da20..963d4fc 100644 --- a/libft/munit.c +++ b/libft/munit.c @@ -6,7 +6,7 @@ /* By: gbaconni +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2021/10/14 09:22:30 by gbaconni #+# #+# */ -/* Updated: 2021/10/20 09:31:27 by gbaconni ### ########.fr */ +/* Updated: 2021/10/22 11:56:11 by gbaconni ### ########.fr */ /* */ /* ************************************************************************** */ @@ -28,7 +28,7 @@ size_t strnlen(const char *s, size_t maxlen) size_t len; len = 0; - while (s[len] != '\0' && --maxlen != 0) + while (len < maxlen && *s++ != '\0') len++; return (len); } @@ -52,17 +52,21 @@ size_t strlcpy(char *dst, const char *src, size_t dstsize) size_t strlcat(char *dst, const char *src, size_t dstsize) { - char *d; - const char *s; - size_t n; + size_t srclen; + size_t dstlen; + size_t cpylen; - d = dst; - d += strlen(d); - s = src; - n = strnlen(s, dstsize); - d[n] = '\0'; - memcpy(d, s, n); - return ((d - dst) + n); + srclen = strlen(src); + dstlen = strnlen(dst, dstsize); + if (dstlen == dstsize) + return (dstsize + srclen); + if (srclen < dstsize - dstlen) + cpylen = srclen + 1; + else + cpylen = dstsize - dstlen - 1; + memcpy(dst + dstlen, src, cpylen); + dst[dstsize - 1] = '\0'; + return (dstlen + srclen); } #endif