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