From f527aca9d02637bfd9d27e27f32b562049134903 Mon Sep 17 00:00:00 2001 From: DcraftBg Date: Fri, 17 Apr 2026 21:04:31 +0300 Subject: [PATCH] LibC: add strcasestr to string.h --- userspace/libraries/LibC/include/string.h | 1 + userspace/libraries/LibC/string.cpp | 11 +++++++++++ 2 files changed, 12 insertions(+) diff --git a/userspace/libraries/LibC/include/string.h b/userspace/libraries/LibC/include/string.h index 75bef719..cae0057c 100644 --- a/userspace/libraries/LibC/include/string.h +++ b/userspace/libraries/LibC/include/string.h @@ -46,6 +46,7 @@ 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); +char* strcasestr(const char* haystack, const char* needle); 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 s1, const char* __restrict s2, size_t n); diff --git a/userspace/libraries/LibC/string.cpp b/userspace/libraries/LibC/string.cpp index 3479d946..164183cb 100644 --- a/userspace/libraries/LibC/string.cpp +++ b/userspace/libraries/LibC/string.cpp @@ -304,6 +304,17 @@ char* strstr(const char* haystack, const char* needle) return nullptr; } +char* strcasestr(const char* haystack, const char* needle) +{ + const size_t needle_len = strlen(needle); + if (needle_len == 0) + return const_cast(haystack); + for (size_t i = 0; haystack[i]; i++) + if (strncasecmp(haystack + i, needle, needle_len) == 0) + return const_cast(haystack + i); + return nullptr; +} + #define CHAR_UCHAR(ch) \ static_cast(ch)