diff options
Diffstat (limited to '')
-rw-r--r-- | libft/ft_strlcat.c | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/libft/ft_strlcat.c b/libft/ft_strlcat.c new file mode 100644 index 0000000..98fa3e8 --- /dev/null +++ b/libft/ft_strlcat.c @@ -0,0 +1,41 @@ +/* ************************************************************************** */ +/* LE - / */ +/* / */ +/* ft_strlcat.c .:: .:/ . .:: */ +/* +:+:+ +: +: +:+:+ */ +/* By: rbousset <marvin@le-101.fr> +:+ +: +: +:+ */ +/* #+# #+ #+ #+# */ +/* Created: 2019/10/09 06:44:30 by rbousset #+# ## ## #+# */ +/* Updated: 2019/10/13 08:36:04 by rbousset ### #+. /#+ ###.fr */ +/* / */ +/* / */ +/* ************************************************************************** */ + +#include "libft.h" +#include <stddef.h> + +static size_t + ft_strlen_size(const char *s, size_t size) +{ + const char *ptr = s; + + while (size > 0 && *ptr) + { + size--; + ptr++; + } + return (ptr - s); +} + +size_t + ft_strlcat(char *dst, const char *src, size_t size) +{ + size_t dst_len; + + if (!dst || !src) + return (0); + dst_len = ft_strlen_size(dst, size); + if (dst_len == size) + return (dst_len + ft_strlen(src)); + return (dst_len + ft_strlcpy(dst + dst_len, src, size - dst_len)); +} |