summaryrefslogtreecommitdiff
path: root/src/ulib/string.c
diff options
context:
space:
mode:
authorRichard Qin <richard.qin.x@gmail.com>2026-07-10 11:31:46 +0800
committerRichard Qin <richard.qin.x@gmail.com>2026-07-10 11:31:46 +0800
commite90b72ec3082588b296956730bd2930cf8d5d671 (patch)
tree36ff6916af9b4176ea5a9662219d11e721f0b691 /src/ulib/string.c
parent1767d390fbf3d0c65389de46caf0b6d43ef3b6ad (diff)
downloadlume-e90b72ec3082588b296956730bd2930cf8d5d671.tar.gz
lume-e90b72ec3082588b296956730bd2930cf8d5d671.tar.xz
refactor: promote new architecture to repository root
Archive the deprecated implementation under lume-legacy, make the new kernel the default root-level build, and update repository entry points without changing kernel behavior.
Diffstat (limited to 'src/ulib/string.c')
-rw-r--r--src/ulib/string.c335
1 files changed, 0 insertions, 335 deletions
diff --git a/src/ulib/string.c b/src/ulib/string.c
deleted file mode 100644
index c3dbe9a..0000000
--- a/src/ulib/string.c
+++ /dev/null
@@ -1,335 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0-or-later
-/*
- * Copyright (C) 2026 Richard QIn
- */
-#include "ulib/string.h"
-#include "ulib/stdlib.h"
-
-
-/* Memory Manipulation Functions */
-
-void *memset(void *dst, int c, size_t n)
-{
- char *cdst = (char *)dst;
- for (size_t i = 0; i < n; i++)
- cdst[i] = (char)c;
- return dst;
-}
-
-void *memmove(void *vdst, const void *vsrc, size_t n)
-{
- char *dst = (char *)vdst;
- const char *src = (const char *)vsrc;
- if (dst == src)
- return vdst;
-
- if (src > dst)
- {
- while (n--)
- *dst++ = *src++;
- }
- else
- {
- dst += n;
- src += n;
- while (n-- > 0)
- *--dst = *--src;
- }
- return vdst;
-}
-
-void *memcpy(void *vdst, const void *vsrc, size_t n)
-{
- return memmove(vdst, vsrc, n);
-}
-
-int memcmp(const void *s1, const void *s2, size_t n)
-{
- const unsigned char *p1 = (const unsigned char *)s1;
- const unsigned char *p2 = (const unsigned char *)s2;
- while (n--)
- {
- if (*p1 != *p2)
- return *p1 - *p2;
- p1++;
- p2++;
- }
- return 0;
-}
-
-void *memchr(const void *s, int c, size_t n)
-{
- const unsigned char *p = (const unsigned char *)s;
- while (n--)
- {
- if (*p == (unsigned char)c)
- return (void *)p;
- p++;
- }
- return NULL;
-}
-
-/* String Manipulation Functions */
-
-size_t strlen(const char *s)
-{
- const char *p = s;
- while (*p)
- p++;
- return (size_t)(p - s);
-}
-
-char *strcpy(char *dst, const char *src)
-{
- char *os = dst;
- while ((*dst++ = *src++) != 0)
- ;
- return os;
-}
-
-char *strncpy(char *dst, const char *src, size_t n)
-{
- char *os = dst;
- size_t i;
-
- for (i = 0; i < n && src[i] != '\0'; i++)
- dst[i] = src[i];
-
- for (; i < n; i++)
- dst[i] = '\0';
-
- return os;
-}
-
-char *strcat(char *dst, const char *src)
-{
- char *os = dst;
- while (*dst)
- dst++;
- while ((*dst++ = *src++) != 0)
- ;
- return os;
-}
-
-char *strncat(char *dst, const char *src, size_t n)
-{
- char *os = dst;
- size_t dest_len = strlen(dst);
- size_t i;
-
- dst += dest_len;
-
- for (i = 0; i < n && src[i] != '\0'; i++)
- dst[i] = src[i];
-
- dst[i] = '\0';
-
- return os;
-}
-
-int strcmp(const char *p, const char *q)
-{
- while (*p && *p == *q)
- {
- p++;
- q++;
- }
- return (int)((unsigned char)*p - (unsigned char)*q);
-}
-
-int strncmp(const char *s1, const char *s2, size_t n)
-{
- if (n == 0)
- return 0;
-
- while (n-- > 0 && *s1 && *s1 == *s2)
- {
- if (n == 0 || *s1 == '\0')
- break;
- s1++;
- s2++;
- }
- return (int)((unsigned char)*s1 - (unsigned char)*s2);
-}
-
-char *strchr(const char *s, int c)
-{
- while (*s != (char)c)
- {
- if (!*s++)
- return NULL;
- }
- return (char *)s;
-}
-
-char *strrchr(const char *s, int c)
-{
- const char *last = NULL;
- do
- {
- if (*s == (char)c)
- last = s;
- } while (*s++);
-
- return (char *)last;
-}
-
-
-char *strstr(const char *haystack, const char *needle)
-{
- size_t n_len = strlen(needle);
- if (n_len == 0)
- return (char *)haystack;
-
- for (; *haystack; haystack++)
- {
- if (*haystack != *needle)
- continue;
-
- if (strncmp(haystack, needle, n_len) == 0)
- return (char *)haystack;
- }
- return NULL;
-}
-
-char *strdup(const char *s)
-{
- size_t len = strlen(s) + 1;
- char *new_str = (char *)malloc(len);
- if (new_str == NULL)
- return NULL;
-
- return (char *)memcpy(new_str, s, len);
-}
-
-size_t strlcpy(char *dst, const char *src, size_t size)
-{
- size_t src_len = strlen(src);
-
- if (size > 0)
- {
- size_t copy_len = (src_len >= size) ? size - 1 : src_len;
- memcpy(dst, src, copy_len);
- dst[copy_len] = '\0';
- }
-
- return src_len;
-}
-
-size_t strlcat(char *dst, const char *src, size_t size)
-{
- size_t dst_len = 0;
- size_t src_len = strlen(src);
-
- while (dst_len < size && dst[dst_len] != '\0')
- dst_len++;
-
- if (dst_len == size)
- return size + src_len;
-
- size_t space_left = size - dst_len;
- size_t copy_len = (src_len >= space_left) ? space_left - 1 : src_len;
-
- memcpy(dst + dst_len, src, copy_len);
- dst[dst_len + copy_len] = '\0';
-
- return dst_len + src_len;
-}
-
-
-size_t strspn(const char *s, const char *accept)
-{
- const char *p = s;
- const char *a;
-
- while (*p)
- {
- for (a = accept; *a; a++)
- {
- if (*p == *a)
- break;
- }
- if (*a == '\0')
- return (size_t)(p - s);
- p++;
- }
- return (size_t)(p - s);
-}
-
-size_t strcspn(const char *s, const char *reject)
-{
- const char *p = s;
- const char *r;
-
- while (*p)
- {
- for (r = reject; *r; r++)
- {
- if (*p == *r)
- return (size_t)(p - s);
- }
- p++;
- }
- return (size_t)(p - s);
-}
-
-char *strpbrk(const char *s, const char *accept)
-{
- const char *a;
- while (*s)
- {
- for (a = accept; *a; a++)
- {
- if (*s == *a)
- return (char *)s;
- }
- s++;
- }
- return NULL;
-}
-
-char *strtok(char *str, const char *delim)
-{
- static char *olds;
- char *token;
-
- if (str == NULL)
- str = olds;
-
- str += strspn(str, delim);
- if (*str == '\0')
- {
- olds = str;
- return NULL;
- }
-
- token = str;
- str = strpbrk(token, delim);
-
- if (str == NULL)
- {
- olds = strchr(token, '\0');
- }
- else
- {
- *str = '\0';
- olds = str + 1;
- }
-
- return token;
-}
-
-char *strerror(int errnum)
-{
-
- switch (errnum)
- {
- case 0:
- return "Success";
- // case EINVAL: return "Invalid argument";
- case ENOMEM: return "Out of memory";
-
- default:
- return "Unknown error";
- }
-} \ No newline at end of file