Skip to content

Commit f20c09f

Browse files
committed
[LIBCNTPR] Implement NT versions of _strlwr, _strupr, _wcslwr, _wcsupr
1 parent c108de8 commit f20c09f

File tree

6 files changed

+128
-4
lines changed

6 files changed

+128
-4
lines changed

sdk/lib/crt/string/_strlwr_nt.c

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
/*
2+
* PROJECT: ReactOS NT CRT library
3+
* LICENSE: MIT (https://spdx.org/licenses/MIT)
4+
* PURPOSE: Implementation of _strlwr
5+
* COPYRIGHT: Copyright 2025 Timo Kreuzer <[email protected]>
6+
*/
7+
8+
#include <string.h>
9+
10+
char*
11+
__cdecl
12+
_strlwr(
13+
_Inout_z_ char* _String)
14+
{
15+
char ch, *p;
16+
17+
for (p = _String; *p; p++)
18+
{
19+
ch = *p;
20+
if ((ch >= 'A') && (ch <= 'Z'))
21+
{
22+
*p += 'a' - 'A';
23+
}
24+
}
25+
26+
return _String;
27+
}

sdk/lib/crt/string/_strupr_nt.c

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
/*
2+
* PROJECT: ReactOS NT CRT library
3+
* LICENSE: MIT (https://spdx.org/licenses/MIT)
4+
* PURPOSE: Implementation of _strupr
5+
* COPYRIGHT: Copyright 2025 Timo Kreuzer <[email protected]>
6+
*/
7+
8+
#include "precomp.h"
9+
10+
char*
11+
__cdecl
12+
_strupr(
13+
_Inout_z_ char* _String)
14+
{
15+
char ch, *p;
16+
17+
if (_String == NULL)
18+
{
19+
_invalid_parameter(NULL, L"_strupr", _CRT_WIDE(__FILE__), __LINE__, 0);
20+
return NULL;
21+
}
22+
23+
for (p = _String; *p; p++)
24+
{
25+
ch = *p;
26+
if ((ch >= 'a') && (ch <= 'z'))
27+
{
28+
*p += 'A' - 'a';
29+
}
30+
}
31+
32+
return _String;
33+
}

sdk/lib/crt/string/string.cmake

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,11 +6,9 @@ list(APPEND LIBCNTPR_STRING_SOURCE
66
string/is_wctype.c
77
string/scanf.c
88
string/strcspn.c
9-
string/strlwr.c
109
string/strrev.c
1110
string/strset.c
1211
string/strstr.c
13-
string/strupr.c
1412
string/strpbrk.c
1513
string/strspn.c
1614
string/atoi64.c
@@ -95,12 +93,14 @@ list(APPEND CRT_STRING_SOURCE
9593
string/strerror.c
9694
string/stricmp.c
9795
string/string.c
96+
string/strlwr.c
9897
string/strncoll.c
9998
string/strnicmp.c
10099
string/strtod.c
101100
string/strtok.c
102101
string/strtok_s.c
103102
string/strtoul.c
103+
string/strupr.c
104104
string/strxfrm.c
105105
string/wcstombs_s.c
106106
string/wtof.c
@@ -112,7 +112,9 @@ list(APPEND CRT_STRING_ASM_SOURCE
112112

113113
list(APPEND LIBCNTPR_STRING_SOURCE
114114
string/_stricmp_nt.c
115+
string/_strlwr_nt.c
115116
string/_strnicmp_nt.c
117+
string/_strupr_nt.c
116118
string/iswctype_nt.c
117119
string/mbstowcs_nt.c
118120
string/tolower_nt.c

sdk/lib/crt/wstring/_wcslwr_nt.c

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
/*
2+
* PROJECT: ReactOS NT CRT library
3+
* LICENSE: MIT (https://spdx.org/licenses/MIT)
4+
* PURPOSE: Implementation of _wcslwr
5+
* COPYRIGHT: Copyright 2025 Timo Kreuzer <[email protected]>
6+
*/
7+
8+
#include "precomp.h"
9+
10+
wchar_t*
11+
__cdecl
12+
_wcslwr(
13+
_Inout_z_ wchar_t* _String)
14+
{
15+
wchar_t ch, *p;
16+
17+
if (_String == NULL)
18+
{
19+
_invalid_parameter(NULL, L"_wcslwr", _CRT_WIDE(__FILE__), __LINE__, 0);
20+
return NULL;
21+
}
22+
23+
for (p = _String; *p; p++)
24+
{
25+
ch = *p;
26+
if ((ch >= 'A') && (ch <= 'Z'))
27+
{
28+
*p += 'a' - 'A';
29+
}
30+
}
31+
32+
return _String;
33+
}

sdk/lib/crt/wstring/_wcsupr_nt.c

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
/*
2+
* PROJECT: ReactOS NT CRT library
3+
* LICENSE: MIT (https://spdx.org/licenses/MIT)
4+
* PURPOSE: Implementation of _wcsupr
5+
* COPYRIGHT: Copyright 2025 Timo Kreuzer <[email protected]>
6+
*/
7+
8+
#include <string.h>
9+
10+
wchar_t*
11+
__cdecl
12+
_wcsupr(
13+
_Inout_z_ wchar_t* _String)
14+
{
15+
wchar_t ch, *p;
16+
17+
for (p = _String; *p; p++)
18+
{
19+
ch = *p;
20+
if ((ch >= 'a') && (ch <= 'z'))
21+
{
22+
*p += 'A' - 'a';
23+
}
24+
}
25+
26+
return _String;
27+
}

sdk/lib/crt/wstring/wstring.cmake

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,5 @@
11

22
list(APPEND LIBCNTPR_WSTRING_SOURCE
3-
wstring/wcslwr.c
4-
wstring/wcsupr.c
53
wstring/wcscspn.c
64
wstring/wcsspn.c
75
wstring/wcsstr.c
@@ -13,12 +11,16 @@ list(APPEND CRT_WSTRING_SOURCE
1311
wstring/wcrtomb.c
1412
wstring/wcscoll.c
1513
wstring/wcsicmp.c
14+
wstring/wcslwr.c
1615
wstring/wcsnicmp.c
1716
wstring/wcstok.c
17+
wstring/wcsupr.c
1818
wstring/wcsxfrm.c
1919
)
2020

2121
list(APPEND LIBCNTPR_WSTRING_SOURCE
2222
wstring/_wcsicmp_nt.c
23+
wstring/_wcslwr_nt.c
2324
wstring/_wcsnicmp_nt.c
25+
wstring/_wcsupr_nt.c
2426
)

0 commit comments

Comments
 (0)