[LIBCNTPR] Implement NT versions of _strlwr, _strupr, _wcslwr, _wcsupr

This commit is contained in:
Timo Kreuzer
2025-08-04 20:33:58 +03:00
parent c108de8094
commit f20c09fcd6
6 changed files with 128 additions and 4 deletions

View File

@@ -0,0 +1,27 @@
/*
* PROJECT: ReactOS NT CRT library
* LICENSE: MIT (https://spdx.org/licenses/MIT)
* PURPOSE: Implementation of _strlwr
* COPYRIGHT: Copyright 2025 Timo Kreuzer <timo.kreuzer@reactos.org>
*/
#include <string.h>
char*
__cdecl
_strlwr(
_Inout_z_ char* _String)
{
char ch, *p;
for (p = _String; *p; p++)
{
ch = *p;
if ((ch >= 'A') && (ch <= 'Z'))
{
*p += 'a' - 'A';
}
}
return _String;
}

View File

@@ -0,0 +1,33 @@
/*
* PROJECT: ReactOS NT CRT library
* LICENSE: MIT (https://spdx.org/licenses/MIT)
* PURPOSE: Implementation of _strupr
* COPYRIGHT: Copyright 2025 Timo Kreuzer <timo.kreuzer@reactos.org>
*/
#include "precomp.h"
char*
__cdecl
_strupr(
_Inout_z_ char* _String)
{
char ch, *p;
if (_String == NULL)
{
_invalid_parameter(NULL, L"_strupr", _CRT_WIDE(__FILE__), __LINE__, 0);
return NULL;
}
for (p = _String; *p; p++)
{
ch = *p;
if ((ch >= 'a') && (ch <= 'z'))
{
*p += 'A' - 'a';
}
}
return _String;
}

View File

@@ -6,11 +6,9 @@ list(APPEND LIBCNTPR_STRING_SOURCE
string/is_wctype.c
string/scanf.c
string/strcspn.c
string/strlwr.c
string/strrev.c
string/strset.c
string/strstr.c
string/strupr.c
string/strpbrk.c
string/strspn.c
string/atoi64.c
@@ -95,12 +93,14 @@ list(APPEND CRT_STRING_SOURCE
string/strerror.c
string/stricmp.c
string/string.c
string/strlwr.c
string/strncoll.c
string/strnicmp.c
string/strtod.c
string/strtok.c
string/strtok_s.c
string/strtoul.c
string/strupr.c
string/strxfrm.c
string/wcstombs_s.c
string/wtof.c
@@ -112,7 +112,9 @@ list(APPEND CRT_STRING_ASM_SOURCE
list(APPEND LIBCNTPR_STRING_SOURCE
string/_stricmp_nt.c
string/_strlwr_nt.c
string/_strnicmp_nt.c
string/_strupr_nt.c
string/iswctype_nt.c
string/mbstowcs_nt.c
string/tolower_nt.c

View File

@@ -0,0 +1,33 @@
/*
* PROJECT: ReactOS NT CRT library
* LICENSE: MIT (https://spdx.org/licenses/MIT)
* PURPOSE: Implementation of _wcslwr
* COPYRIGHT: Copyright 2025 Timo Kreuzer <timo.kreuzer@reactos.org>
*/
#include "precomp.h"
wchar_t*
__cdecl
_wcslwr(
_Inout_z_ wchar_t* _String)
{
wchar_t ch, *p;
if (_String == NULL)
{
_invalid_parameter(NULL, L"_wcslwr", _CRT_WIDE(__FILE__), __LINE__, 0);
return NULL;
}
for (p = _String; *p; p++)
{
ch = *p;
if ((ch >= 'A') && (ch <= 'Z'))
{
*p += 'a' - 'A';
}
}
return _String;
}

View File

@@ -0,0 +1,27 @@
/*
* PROJECT: ReactOS NT CRT library
* LICENSE: MIT (https://spdx.org/licenses/MIT)
* PURPOSE: Implementation of _wcsupr
* COPYRIGHT: Copyright 2025 Timo Kreuzer <timo.kreuzer@reactos.org>
*/
#include <string.h>
wchar_t*
__cdecl
_wcsupr(
_Inout_z_ wchar_t* _String)
{
wchar_t ch, *p;
for (p = _String; *p; p++)
{
ch = *p;
if ((ch >= 'a') && (ch <= 'z'))
{
*p += 'A' - 'a';
}
}
return _String;
}

View File

@@ -1,7 +1,5 @@
list(APPEND LIBCNTPR_WSTRING_SOURCE
wstring/wcslwr.c
wstring/wcsupr.c
wstring/wcscspn.c
wstring/wcsspn.c
wstring/wcsstr.c
@@ -13,12 +11,16 @@ list(APPEND CRT_WSTRING_SOURCE
wstring/wcrtomb.c
wstring/wcscoll.c
wstring/wcsicmp.c
wstring/wcslwr.c
wstring/wcsnicmp.c
wstring/wcstok.c
wstring/wcsupr.c
wstring/wcsxfrm.c
)
list(APPEND LIBCNTPR_WSTRING_SOURCE
wstring/_wcsicmp_nt.c
wstring/_wcslwr_nt.c
wstring/_wcsnicmp_nt.c
wstring/_wcsupr_nt.c
)