diff options
Diffstat (limited to 'usr/klibc/strlcat.c')
-rw-r--r-- | usr/klibc/strlcat.c | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/usr/klibc/strlcat.c b/usr/klibc/strlcat.c new file mode 100644 index 0000000..80c3375 --- /dev/null +++ b/usr/klibc/strlcat.c @@ -0,0 +1,31 @@ +/* + * strlcat.c + */ + +#include <string.h> +#include <klibc/compiler.h> + +size_t strlcat(char *dst, const char *src, size_t size) +{ + size_t bytes = 0; + char *q = dst; + const char *p = src; + char ch; + + while (bytes < size && *q) { + q++; + bytes++; + } + if (bytes == size) + return (bytes + strlen(src)); + + while ((ch = *p++)) { + if (bytes + 1 < size) + *q++ = ch; + + bytes++; + } + + *q = '\0'; + return bytes; +} |