aboutsummaryrefslogtreecommitdiff
path: root/libc/string.c
diff options
context:
space:
mode:
authorFranklin Wei <frankhwei536@gmail.com>2015-03-02 21:37:44 -0500
committerFranklin Wei <frankhwei536@gmail.com>2015-03-02 21:37:44 -0500
commita0721b4caa79b81e021678089fde0b8467daa1cd (patch)
tree56af15c29704cc4c6738345ccd6c9db3782fd8d1 /libc/string.c
parent46e94578765d3d2f03b83421d752e5dfc3e56d34 (diff)
downloadkappa-master.zip
kappa-master.tar.gz
kappa-master.tar.bz2
kappa-master.tar.xz
Virtual filesystem WIP!HEADmaster
Diffstat (limited to '')
-rw-r--r--libc/string.c22
1 files changed, 21 insertions, 1 deletions
diff --git a/libc/string.c b/libc/string.c
index 11d398f..290aec4 100644
--- a/libc/string.c
+++ b/libc/string.c
@@ -2,7 +2,7 @@
#include <stddef.h>
#include "string.h"
-int strlen(const char *str)
+size_t strlen(const char *str)
{
int len = 0;
while(*str++)
@@ -25,3 +25,23 @@ void* memcpy(void *dest, void *src, size_t sz)
*(char*)dest++ = *(char*)src++;
return dest;
}
+
+char* strdup(const char *str)
+{
+ int len = strlen(str);
+ /* allocate room for the string and it's NULL terminator */
+ char *ret = malloc(len + 1);
+ memcpy(ret, str, len + 1);
+ return ret;
+}
+
+char* strncat(char *dest, const char *src, size_t n)
+{
+ /* save this for the return */
+ char *d = dest;
+ while(*dest++);
+ while(n && (*dest++ = *src++)) --n;
+ if(*dest)
+ *dest = '\0';
+ return d;
+}