feat(userspace/libc): implement all <string.h> functions

Implement all string.h functions except some which require locale which is not implemented yet

Signed-off-by: EnderIce2 <enderice2@protonmail.com>
This commit is contained in:
2025-02-14 22:15:20 +02:00
parent 6dfefc90c4
commit 0f9a1915d1
2 changed files with 459 additions and 46 deletions

View File

@ -26,43 +26,43 @@ extern "C"
#include <stddef.h>
#include <locale.h>
void *memccpy(void *restrict, const void *restrict, int, size_t);
void *memchr(const void *, int, size_t);
int memcmp(const void *, const void *, size_t);
void *memccpy(void *restrict s1, const void *restrict s2, int c, size_t n);
void *memchr(const void *s, int c, size_t n);
int memcmp(const void *s1, const void *s2, size_t n);
void *memcpy(void *restrict s1, const void *restrict s2, size_t n);
void *memmem(const void *, size_t, const void *, size_t);
void *memmove(void *, const void *, size_t);
void *memset(void *, int, size_t);
char *stpcpy(char *restrict, const char *restrict);
char *stpncpy(char *restrict, const char *restrict, size_t);
char *strcat(char *restrict, const char *restrict);
void *memmem(const void *haystack, size_t haystacklen, const void *needle, size_t needlelen);
void *memmove(void *s1, const void *s2, size_t n);
void *memset(void *s, int c, size_t n);
char *stpcpy(char *restrict s1, const char *restrict s2);
char *stpncpy(char *restrict s1, const char *restrict s2, size_t n);
char *strcat(char *restrict s1, const char *restrict s2);
char *strchr(const char *s, int c);
int strcmp(const char *s1, const char *s2);
int strcoll(const char *s1, const char *s2);
int strcoll_l(const char *, const char *, locale_t);
int strcoll_l(const char *s1, const char *s2, locale_t locale);
char *strcpy(char *restrict s1, const char *restrict s2);
size_t strcspn(const char *s1, const char *s2);
char *strdup(const char *);
char *strerror(int);
char *strerror_l(int, locale_t);
int strerror_r(int, char *, size_t);
size_t strlcat(char *restrict, const char *restrict, size_t);
size_t strlcpy(char *restrict, const char *restrict, size_t);
char *strdup(const char *s);
char *strerror(int errnum);
char *strerror_l(int errnum, locale_t locale);
int strerror_r(int errnum, char *strerrbuf, size_t buflen);
size_t strlcat(char *restrict dst, const char *restrict src, size_t dstsize);
size_t strlcpy(char *restrict dst, const char *restrict src, size_t dstsize);
size_t strlen(const char *s);
char *strncat(char *restrict, const char *restrict, size_t);
char *strncat(char *restrict s1, const char *restrict s2, size_t n);
int strncmp(const char *s1, const char *s2, size_t n);
char *strncpy(char *restrict s1, const char *restrict s2, size_t n);
char *strndup(const char *, size_t);
size_t strnlen(const char *, size_t);
char *strndup(const char *s, size_t size);
size_t strnlen(const char *s, size_t maxlen);
char *strpbrk(const char *s1, const char *s2);
char *strrchr(const char *, int);
char *strrchr(const char *s, int c);
char *strsignal(int signum);
size_t strspn(const char *s1, const char *s2);
char *strstr(const char *, const char *);
char *strstr(const char *s1, const char *s2);
char *strtok(char *restrict s, const char *restrict sep);
char *strtok_r(char *restrict s, const char *restrict sep, char **restrict state);
size_t strxfrm(char *restrict, const char *restrict, size_t);
size_t strxfrm_l(char *restrict, const char *restrict, size_t, locale_t);
size_t strxfrm(char *restrict s1, const char *restrict s2, size_t n);
size_t strxfrm_l(char *restrict s1, const char *restrict s2, size_t n, locale_t locale);
#ifdef __cplusplus
}