From 7e6b8c93b4904d9cab50319ac3434b7d8b4107ba Mon Sep 17 00:00:00 2001 From: Bananymous Date: Thu, 2 Apr 2026 15:40:23 +0300 Subject: [PATCH] LibC: Implement strsep --- userspace/libraries/LibC/include/string.h | 1 + userspace/libraries/LibC/string.cpp | 19 +++++++++++++++++++ 2 files changed, 20 insertions(+) diff --git a/userspace/libraries/LibC/include/string.h b/userspace/libraries/LibC/include/string.h index 3a6575f1..75bef719 100644 --- a/userspace/libraries/LibC/include/string.h +++ b/userspace/libraries/LibC/include/string.h @@ -42,6 +42,7 @@ char* strndup(const char* s, size_t n); size_t strnlen(const char* s, size_t maxlen); char* strpbrk(const char* s1, const char* s2); char* strrchr(const char* s, int c); +char* strsep(char** __restrict stringp, const char* __restrict delim); char* strsignal(int signum); size_t strspn(const char* s1, const char* s2); char* strstr(const char* s1, const char* s2); diff --git a/userspace/libraries/LibC/string.cpp b/userspace/libraries/LibC/string.cpp index 96d0acd8..3479d946 100644 --- a/userspace/libraries/LibC/string.cpp +++ b/userspace/libraries/LibC/string.cpp @@ -274,6 +274,25 @@ char* strrchr(const char* str, int c) return (*str == c) ? (char*)str : nullptr; } +char* strsep(char** __restrict stringp, const char* __restrict delim) +{ + if (*stringp == nullptr) + return nullptr; + + char* original = *stringp; + + char* match = strpbrk(*stringp, delim); + if (match == nullptr) + *stringp = nullptr; + else + { + *stringp = match + 1; + *match = '\0'; + } + + return original; +} + char* strstr(const char* haystack, const char* needle) { const size_t needle_len = strlen(needle);