mirror of
https://github.com/reactos/reactos.git
synced 2026-05-31 16:31:07 +08:00
[LIBCNTPR] Implement NT versions of _stricmp and _strnicmp
This commit is contained in:
43
sdk/lib/crt/string/_stricmp_nt.c
Normal file
43
sdk/lib/crt/string/_stricmp_nt.c
Normal 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;
|
||||
}
|
||||
45
sdk/lib/crt/string/_strnicmp_nt.c
Normal file
45
sdk/lib/crt/string/_strnicmp_nt.c
Normal 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;
|
||||
}
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user