[LIBCNTPR] Implement NT versions of _stricmp and _strnicmp

This commit is contained in:
Timo Kreuzer
2025-08-04 23:37:09 +03:00
parent ac63cef38b
commit 7872c0d391
3 changed files with 92 additions and 2 deletions

View File

@@ -0,0 +1,43 @@
/*
* PROJECT: ReactOS NT CRT library
* LICENSE: MIT (https://spdx.org/licenses/MIT)
* PURPOSE: Implementation of _stricmp
* COPYRIGHT: Copyright 2025 Timo Kreuzer <timo.kreuzer@reactos.org>
*/
#include <string.h>
_Check_return_
int
__cdecl
_stricmp(
_In_z_ char const* _String1,
_In_z_ char const* _String2)
{
char const* p1 = _String1;
char const* p2 = _String2;
char chr1, chr2;
while (1)
{
chr1 = *p1++;
chr2 = *p2++;
if (chr1 != chr2)
{
if ((chr1 >= 'A') && (chr1 <= 'Z'))
chr1 += ('a' - 'A');
if ((chr2 >= 'A') && (chr2 <= 'Z'))
chr2 += ('a' - 'A');
if (chr1 != chr2)
return chr1 - chr2;
}
else if (chr1 == 0)
{
break;
}
}
return 0;
}

View File

@@ -0,0 +1,45 @@
/*
* PROJECT: ReactOS NT CRT library
* LICENSE: MIT (https://spdx.org/licenses/MIT)
* PURPOSE: Implementation of _strnicmp
* COPYRIGHT: Copyright 2025 Timo Kreuzer <timo.kreuzer@reactos.org>
*/
#include <string.h>
_Check_return_
int
__cdecl
_strnicmp(
_In_reads_or_z_(_MaxCount) char const* _String1,
_In_reads_or_z_(_MaxCount) char const* _String2,
_In_ size_t _MaxCount)
{
char const* p1 = _String1;
char const* p2 = _String2;
size_t remaining = _MaxCount;
char chr1, chr2;
while (remaining-- != 0)
{
chr1 = *p1++;
chr2 = *p2++;
if (chr1 != chr2)
{
if ((chr1 >= 'A') && (chr1 <= 'Z'))
chr1 += ('a' - 'A');
if ((chr2 >= 'A') && (chr2 <= 'Z'))
chr2 += ('a' - 'A');
if (chr1 != chr2)
return chr1 - chr2;
}
else if (chr1 == 0)
{
break;
}
}
return 0;
}

View File

@@ -6,8 +6,6 @@ list(APPEND LIBCNTPR_STRING_SOURCE
string/is_wctype.c
string/scanf.c
string/strcspn.c
string/stricmp.c
string/strnicmp.c
string/strlwr.c
string/strrev.c
string/strset.c
@@ -95,8 +93,10 @@ list(APPEND CRT_STRING_SOURCE
string/strcoll.c
string/strdup.c
string/strerror.c
string/stricmp.c
string/string.c
string/strncoll.c
string/strnicmp.c
string/strtod.c
string/strtok.c
string/strtok_s.c
@@ -111,6 +111,8 @@ list(APPEND CRT_STRING_ASM_SOURCE
)
list(APPEND LIBCNTPR_STRING_SOURCE
string/_stricmp_nt.c
string/_strnicmp_nt.c
string/iswctype_nt.c
string/mbstowcs_nt.c
string/tolower_nt.c