aboutsummaryrefslogtreecommitdiffstats
path: root/ft_strlcat.c
blob: 1274ba5537c23603f9849e2988c89f0c1822b832 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
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);
}