From 5a3596170cee8d9bf62dd5805d7e330a63d91fd1 Mon Sep 17 00:00:00 2001 From: Bananymous Date: Sat, 12 Nov 2022 23:47:06 +0200 Subject: [PATCH] Add strcpy and strncpy --- libc/Makefile | 2 ++ libc/include/string.h | 3 +++ libc/string/strcpy.c | 10 ++++++++++ libc/string/strncpy.c | 11 +++++++++++ 4 files changed, 26 insertions(+) create mode 100644 libc/string/strcpy.c create mode 100644 libc/string/strncpy.c diff --git a/libc/Makefile b/libc/Makefile index 8d41f743..ae2c2fc7 100644 --- a/libc/Makefile +++ b/libc/Makefile @@ -37,7 +37,9 @@ string/memcmp.o \ string/memcpy.o \ string/memmove.o \ string/memset.o \ +string/strcpy.o \ string/strlen.o \ +string/strncpy.o \ HOSTEDOBJS=\ $(ARCH_HOSTEDOBJS) \ diff --git a/libc/include/string.h b/libc/include/string.h index 5b228b5a..d05a5b9e 100644 --- a/libc/include/string.h +++ b/libc/include/string.h @@ -13,6 +13,9 @@ void* memmove(void*, const void*, size_t); void* memset(void*, int, size_t); size_t strlen(const char*); +char* strcpy(char* __restrict, const char* __restrict); +char* strncpy(char* __restrict, const char* __restrict, size_t); + #ifdef __cplusplus } #endif \ No newline at end of file diff --git a/libc/string/strcpy.c b/libc/string/strcpy.c new file mode 100644 index 00000000..4468d173 --- /dev/null +++ b/libc/string/strcpy.c @@ -0,0 +1,10 @@ +#include + +char* strcpy(char* restrict dest, const char* restrict src) +{ + size_t i; + for (i = 0; src[i]; i++) + dest[i] = src[i]; + dest[i] = '\0'; + return dest; +} \ No newline at end of file diff --git a/libc/string/strncpy.c b/libc/string/strncpy.c new file mode 100644 index 00000000..ae52cb95 --- /dev/null +++ b/libc/string/strncpy.c @@ -0,0 +1,11 @@ +#include + +char* strncpy(char* restrict dest, const char* restrict src, size_t n) +{ + size_t i; + for (i = 0; src[i] && i < n; i++) + dest[i] = src[i]; + for (; i < n; i++) + dest[i] = '\0'; + return dest; +} \ No newline at end of file