diff --git a/reactos/dll/win32/msvcrt/msvcrt.spec b/reactos/dll/win32/msvcrt/msvcrt.spec index db1d101a047..7a20ce62d7c 100644 --- a/reactos/dll/win32/msvcrt/msvcrt.spec +++ b/reactos/dll/win32/msvcrt/msvcrt.spec @@ -1026,7 +1026,7 @@ # stub _wcsicoll_l @ cdecl _wcslwr(wstr) # stub _wcslwr_l -# stub _wcslwr_s +@ cdecl _wcslwr_s(wstr long) # stub _wcslwr_s_l @ cdecl _wcsncoll(wstr wstr long) # stub _wcsncoll_l diff --git a/reactos/lib/sdk/crt/crt.cmake b/reactos/lib/sdk/crt/crt.cmake index c01e1756c90..eae70e5d520 100644 --- a/reactos/lib/sdk/crt/crt.cmake +++ b/reactos/lib/sdk/crt/crt.cmake @@ -262,6 +262,7 @@ list(APPEND CRT_SOURCE string/_mbstrnlen.c string/_splitpath.c string/_splitpath_s.c + string/_wcslwr_s.c string/_wsplitpath.c string/_wsplitpath_s.c string/atof.c diff --git a/reactos/lib/sdk/crt/string/_wcslwr_s.c b/reactos/lib/sdk/crt/string/_wcslwr_s.c new file mode 100644 index 00000000000..b760cc9d075 --- /dev/null +++ b/reactos/lib/sdk/crt/string/_wcslwr_s.c @@ -0,0 +1,38 @@ +/* + * The C RunTime DLL + * + * Implements C run-time functionality as known from UNIX. + * + * Copyright 1996,1998 Marcus Meissner + * Copyright 1996 Jukka Iivonen + * Copyright 1997 Uwe Bonnes + */ + +#include + +/* + * @implemented + */ +int _wcslwr_s(wchar_t* str, size_t n) +{ + wchar_t *ptr=str; + if (!str || !n) + { + if (str) *str = '\0'; + *_errno() = EINVAL; + return EINVAL; + } + + while (n--) + { + if (!*ptr) return 0; + *ptr = towlower(*ptr); + ptr++; + } + + /* MSDN claims that the function should return and set errno to + * ERANGE, which doesn't seem to be true based on the tests. */ + *str = '\0'; + *_errno() = EINVAL; + return EINVAL; +}