text: strlcpy,
  strlcat—
  #include <string.h>
  size_t
  strlcpy(char
  *dst, const char
  *src, size_t
  dstsize);
  size_t
  strlcat(char
  *dst, const char
  *src, size_t
  dstsize); practice this should not happen as it
  means that either dstsize is incorrect or that
  dst is not a proper string).
  If the src and dst strings overlap, the behavior is undefined..
  char *s, *p, buf[BUFSIZ]; ... (void)strlcpy(buf, s, sizeof(buf)); (void)strlcat(buf, p, sizeof(buf));
  To detect truncation, perhaps while building a pathname, something like the following might be used:
  char *dir, *file, pname[PATH_MAX]; ...[PATH_MAX];.
  strlcpy() and
  strlcat() first appeared in OpenBSD 2.4.
  strlcpy() and
  strlcat() were created by Todd C. Miller <millert@openbsd.org>.