Skip to content
Snippets Groups Projects
Commit 833ce37c authored by Daniel Stenberg's avatar Daniel Stenberg
Browse files

new openbsd inspired implementation of strlcat()

parent 07e70185
No related branches found
No related tags found
No related merge requests found
......@@ -77,18 +77,33 @@ int Curl_strnequal(const char *first, const char *second, size_t max)
* For strlcat() that means the initial length of dst plus the length of
* src. While this may seem somewhat confusing it was done to make trunca-
* tion detection simple.
*
*
*/
size_t strlcat(char *dst, const char *src, size_t size)
{
size_t len = strlen(dst);
size_t orglen = len;
int index=0;
while(src[index] && (len < (size-1)) ) {
dst[len++] = src[index++];
char *d = dst;
const char *s = src;
size_t n = siz;
size_t dlen;
/* Find the end of dst and adjust bytes left but don't go past end */
while (n-- != 0 && *d != '\0')
d++;
dlen = d - dst;
n = siz - dlen;
if (n == 0)
return(dlen + strlen(s));
while (*s != '\0') {
if (n != 1) {
*d++ = *s;
n--;
}
s++;
}
dst[len]=0;
*d = '\0';
return orglen + strlen(src);
return(dlen + (s - src)); /* count does not include NUL */
}
#endif
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment