2021-10-23 23:35:28
This commit is contained in:
110
libft/munit.c
110
libft/munit.c
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user