summaryrefslogtreecommitdiff
path: root/libk/string.c
diff options
context:
space:
mode:
authorDanny Holman <dholman@gymli.org>2024-05-27 13:53:52 -0500
committerDanny Holman <dholman@gymli.org>2024-05-27 13:53:52 -0500
commitaaf7355c5ededfcdc877c7f2989fb1ba02dfb848 (patch)
tree0c4588650fe1fc1fa1af2972353a2bc920cf1e68 /libk/string.c
parentkernel: sched: add a flag that is set on init (diff)
downloadbox-aaf7355c5ededfcdc877c7f2989fb1ba02dfb848.tar.gz
box-aaf7355c5ededfcdc877c7f2989fb1ba02dfb848.tar.zst
box-aaf7355c5ededfcdc877c7f2989fb1ba02dfb848.zip
libk: create a subset libc for kernel use
Create a subset of the C library for use inside the kernel. Signed-off-by: Danny Holman <dholman@gymli.org>
Diffstat (limited to '')
-rw-r--r--libk/string.c (renamed from kernel/string.c)11
1 files changed, 7 insertions, 4 deletions
diff --git a/kernel/string.c b/libk/string.c
index fa0fd3f..be59397 100644
--- a/kernel/string.c
+++ b/libk/string.c
@@ -1,4 +1,4 @@
-#include <kernel/string.h>
+#include <libk/string.h>
int memcmp(const void *str1, const void *str2, size_t n) {
unsigned char const *p1 = str1;
@@ -32,16 +32,15 @@ void* memcpy(void* __restrict dest, const void* __restrict src, size_t n) {
}
char* strncpy(char* __restrict dest, const char* __restrict src, size_t n) {
- for (int i = 0; i < n; i++) {
+ for (size_t i = 0; i < n; i++) {
if (src[i] == '\0')
break;
dest[i] = src[i];
}
+ return dest;
}
char* strcpy(char* __restrict dest, const char* __restrict src) {
- if (strlen(src) > strlen(dest))
- return NULL;
return (char*)memcpy(dest, src, strlen(src));
}
@@ -49,6 +48,10 @@ char* strcat(char* __restrict dest, const char* __restrict src) {
return (char*)memcpy(&dest[strlen(dest)], src, strlen(src));
}
+char* strncat(char* __restrict dest, const char* __restrict src, size_t n) {
+ return (char*)memcpy(&dest[strlen(dest)], src, n);
+}
+
void* memmove(void* __restrict dest, const void* __restrict src, size_t n) {
if (dest == src)
return dest;