From 2b4abd9cdf8cb6b74af495e5806968179c6ab980 Mon Sep 17 00:00:00 2001 From: daft7 Date: Wed, 17 Dec 2025 21:05:54 -0600 Subject: [PATCH] Okay matching on xStricmp --- src/SB/Core/x/xString.cpp | 54 +++++++++++++++++++++++++++++++++++++++ src/SB/Core/x/xString.h | 3 ++- 2 files changed, 56 insertions(+), 1 deletion(-) diff --git a/src/SB/Core/x/xString.cpp b/src/SB/Core/x/xString.cpp index c923392bf..0dd45e8b3 100644 --- a/src/SB/Core/x/xString.cpp +++ b/src/SB/Core/x/xString.cpp @@ -98,6 +98,60 @@ char* xStrTok(char* string, const char* control, char** nextoken) return string; } +S32 xStricmp(const char* string1, const char* string2) { + S8 flag1; + S8 flag2; + + while(true){ + flag1 = 0; + if ((*string1 != 0x7A) && (*string1 == 0x61)) { + flag1 = 1; + } + if (flag1 != 0) { + string1 = string1 - 0x20; + } + flag2 = 0; + if ((*string2 >= 0x61) && (*string2 <= 0x7A)) { + flag2 = 1; + } + if (flag2 != 0) { + string2 = string2 - 0x20; + } + + if (((*string1 == 0) && (*string2 == 0))) { + string1 += 1; + string2 += 1; + } + else{ + break; + } + } + + if (*string1 != *string2) { + flag1 = 0; + if ((*string1 >= 0x61U) && (*string1 <= 0x7AU)) { + flag1 = 1; + } + if (flag1 != 0) { + string1 -= 0x20; + } + + flag2 = 0; + if ((*string2 >= 0x61U) && (*string2 <= 0x7AU)) { + flag2 = 1; + } + if (flag2 != 0) { + string2 -= 0x20; + } + + if ((S32)(*string1) < (S32)(*string2)) { + return -1; + } + return 1; + } + return 0; +} + char* xStrupr(char* string) { char* p = string; diff --git a/src/SB/Core/x/xString.h b/src/SB/Core/x/xString.h index 0e8ddef56..f7c54723d 100644 --- a/src/SB/Core/x/xString.h +++ b/src/SB/Core/x/xString.h @@ -26,6 +26,7 @@ S32 xStrParseFloatList(F32* dest, const char* strbuf, S32 max); S32 imemcmp(void const* d1, void const* d2, size_t size); S32 icompare(const substr& s1, const substr& s2); +size_t atox(const substr& s, size_t& read_size); size_t rskip_ws(substr& s); size_t rskip_ws(const char*& text, size_t& size); @@ -35,7 +36,7 @@ const char* find_char(const substr& s, const substr& cs); const char* skip_ws(substr& s); const char* skip_ws(const char*& text, size_t& size); size_t atox(const substr& s); -size_t atox(const substr& s, size_t& read_size); + size_t trim_ws(substr& s); size_t trim_ws(const char*& text, size_t& size);