2021-10-23 23:35:28

This commit is contained in:
marvin
2021-10-23 23:35:28 +02:00
parent e02dc43f7b
commit 6ed1cbe4b0

View File

@@ -6,7 +6,7 @@
/* By: <gbaconni@student.42lausanne.ch> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2021/10/23 16:09:04 by gbaconni #+# #+# */
/* Updated: 2021/10/23 16:38:18 by gbaconni ### lausanne.ch */
/* Updated: 2021/10/23 23:34:36 by gbaconni ### lausanne.ch */
/* */
/* ************************************************************************** */
@@ -18,57 +18,9 @@
#include <ctype.h>
#ifdef __GNU_LIBRARY__
size_t strnlen(const char *s, size_t maxlen);
size_t strlcpy(char *dst, const char *src, size_t dstsize);
size_t strlcat(char *dst, const char *src, size_t dstsize);
size_t strnlen(const char *s, size_t maxlen)
{
size_t len;
len = 0;
while (len < maxlen && *s++ != '\0')
len++;
return (len);
}
size_t strlcpy(char *dst, const char *src, size_t dstsize)
{
size_t srcsize;
srcsize = strlen(src);
if (srcsize < dstsize)
{
memcpy(dst, src, srcsize + 1);
}
else if (dstsize != 0)
{
memcpy(dst, src, dstsize - 1);
dst[dstsize - 1] = '\0';
}
return (srcsize);
}
size_t strlcat(char *dst, const char *src, size_t dstsize)
{
size_t srclen;
size_t dstlen;
size_t cpylen;
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
static char char_bs[2] = { '\b', '\0' };
@@ -477,7 +429,7 @@ static MunitResult test_ft_memchr(const MunitParameter params[], void* user_data
}
else if (str == NULL)
{
munit_assert_null(ft_str);
munit_assert_ptr_equal(ft_str, str);
}
return (MUNIT_OK);
}
@@ -503,7 +455,7 @@ static MunitResult test_ft_strchr(const MunitParameter params[], void* user_data
}
else if (str == NULL)
{
munit_assert_null(ft_str);
munit_assert_ptr_equal(ft_str, str);
}
return (MUNIT_OK);
}
@@ -529,7 +481,7 @@ static MunitResult test_ft_strrchr(const MunitParameter params[], void* user_dat
}
else if (str == NULL)
{
munit_assert_null(ft_str);
munit_assert_ptr_equal(ft_str, str);
}
return (MUNIT_OK);
}
@@ -561,9 +513,9 @@ static MunitResult test_ft_strnstr(const MunitParameter params[], void* user_dat
munit_assert_string_equal(ft_str, str);
munit_assert_memory_equal(n, ft_str, str);
}
else if (str == NULL)
else
{
munit_assert_null(ft_str);
munit_assert_ptr_equal(ft_str, str);
}
len--;
}
@@ -589,7 +541,7 @@ static MunitResult test_ft_strdup(const MunitParameter params[], void* user_data
}
else if (str == NULL)
{
munit_assert_null(ft_str);
munit_assert_ptr_equal(ft_str, str);
}
free(ft_str);
free(str);
@@ -881,3 +833,51 @@ int main(int argc, char* argv[MUNIT_ARRAY_PARAM(argc + 1)])
munit_rand_memory(sizeof(data), data);
return (munit_suite_main(&test_suite, (void *) data, argc, argv));
}
#ifdef __GNU_LIBRARY__
size_t strnlen(const char *s, size_t maxlen)
{
size_t len;
len = 0;
while (len < maxlen && *s++ != '\0')
len++;
return (len);
}
size_t strlcpy(char *dst, const char *src, size_t dstsize)
{
size_t srcsize;
srcsize = strlen(src);
if (srcsize < dstsize)
{
memcpy(dst, src, srcsize + 1);
}
else if (dstsize != 0)
{
memcpy(dst, src, dstsize - 1);
dst[dstsize - 1] = '\0';
}
return (srcsize);
}
size_t strlcat(char *dst, const char *src, size_t dstsize)
{
size_t srclen;
size_t dstlen;
size_t cpylen;
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