···1616 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
1717 */
18181919-#include <string.h>
1919+#include "string-extra.h"
20202121/*
2222 * Appends src to string dst of size siz (unlike strncat, siz is the
···2929strlcat(char *dst, const char *src, size_t siz)
3030{
3131 char *d = dst;
3232- const char *s = src;
3333- size_t n = siz;
3434- size_t dlen;
3232+ size_t dlen, n = siz;
35333634 /* Find the end of dst and adjust bytes left but don't go past end */
3735 while (n-- != 0 && *d != '\0')
···3937 dlen = d - dst;
4038 n = siz - dlen;
41394242- if (n == 0)
4343- return(dlen + strlen(s));
4444- while (*s != '\0') {
4545- if (n != 1) {
4646- *d++ = *s;
4747- n--;
4848- }
4949- s++;
5050- }
5151- *d = '\0';
5252-5353- return(dlen + (s - src)); /* count does not include NUL */
4040+ return strlcpy(dst + dlen, src, n) + dlen;
5441}
5542