X-Git-Url: https://git.octo.it/?a=blobdiff_plain;f=common.c;fp=common.c;h=ec267af957a80ea15ff5707a671d3ee9903512cf;hb=4bd1536081d134fdb0d21067d0c7ddcdc422e6c9;hp=a2bfd090f612a255104874b770e7b2dec60a2215;hpb=7758a9edc32335f94c9b93ead8e7cf4d153699de;p=collection4.git diff --git a/common.c b/common.c index a2bfd09..ec267af 100644 --- a/common.c +++ b/common.c @@ -6,6 +6,7 @@ #include #include #include +#include #include "common.h" @@ -142,4 +143,33 @@ int foreach_host (callback_host_t callback, /* {{{ */ return (foreach_dir (DATA_DIR, callback, user_data)); } /* }}} int foreach_host */ +size_t c_strlcat (char *dst, const char *src, size_t size) /* {{{ */ +{ + size_t retval; + size_t dst_len; + size_t src_len; + + dst_len = strlen (dst); + src_len = strlen (src); + retval = dst_len + src_len; + + if ((dst_len + 1) >= size) + return (retval); + + dst += dst_len; + size -= dst_len; + assert (size >= 2); + + /* Result will be truncated. */ + if (src_len >= size) + src_len = size - 1; + + memcpy (dst, src, src_len); + dst[src_len] = 0; + + return (retval); +} /* }}} size_t c_strlcat */ + + + /* vim: set sw=2 sts=2 et fdm=marker : */