aboutsummaryrefslogtreecommitdiffstats
path: root/ft_strlcat.c
diff options
context:
space:
mode:
Diffstat (limited to 'ft_strlcat.c')
-rw-r--r--ft_strlcat.c23
1 files changed, 23 insertions, 0 deletions
diff --git a/ft_strlcat.c b/ft_strlcat.c
new file mode 100644
index 0000000..1274ba5
--- /dev/null
+++ b/ft_strlcat.c
@@ -0,0 +1,23 @@
+#include "libft.h"
+
+size_t
+ft_strlcat (char *dst, const char *src, size_t size)
+{
+ size_t dst_len;
+ size_t src_len;
+ size_t avail;
+
+ dst_len = ft_strlen (dst);
+ src_len = ft_strlen (src);
+ if (dst_len >= size)
+ return (size + src_len);
+ avail = size - dst_len - 1;
+ if (src_len < avail)
+ ft_memcpy (dst + dst_len, src, src_len + 1);
+ else
+ {
+ ft_memcpy (dst + dst_len, src, avail);
+ dst[size - 1] = '\0';
+ }
+ return (dst_len + src_len);
+}