msvcrt: Add _mbslwr_l implementation.

This commit is contained in:
Bartosz Kosiorek 2023-10-30 20:21:13 +01:00 committed by Alexandre Julliard
parent fce3311843
commit 3c9419622a
8 changed files with 49 additions and 29 deletions

View file

@ -1120,7 +1120,7 @@
@ cdecl _mbslen(str)
@ cdecl _mbslen_l(str ptr)
@ cdecl _mbslwr(str)
@ stub _mbslwr_l
@ cdecl _mbslwr_l(str ptr)
@ cdecl _mbslwr_s(str long)
@ cdecl _mbslwr_s_l(str long ptr)
@ cdecl _mbsnbcat(str str long)

View file

@ -1477,7 +1477,7 @@
@ cdecl _mbslen(str)
@ cdecl _mbslen_l(str ptr)
@ cdecl _mbslwr(str)
@ stub _mbslwr_l
@ cdecl _mbslwr_l(str ptr)
@ cdecl _mbslwr_s(str long)
@ cdecl _mbslwr_s_l(str long ptr)
@ cdecl _mbsnbcat(str str long)

View file

@ -1488,7 +1488,7 @@
@ cdecl _mbslen(str)
@ cdecl _mbslen_l(str ptr)
@ cdecl _mbslwr(str)
@ stub _mbslwr_l
@ cdecl _mbslwr_l(str ptr)
@ cdecl _mbslwr_s(str long)
@ cdecl _mbslwr_s_l(str long ptr)
@ cdecl _mbsnbcat(str str long)

View file

@ -792,7 +792,7 @@
@ cdecl _mbslen(str)
@ cdecl _mbslen_l(str ptr)
@ cdecl _mbslwr(str)
@ stub _mbslwr_l
@ cdecl _mbslwr_l(str ptr)
@ cdecl _mbslwr_s(str long)
@ cdecl _mbslwr_s_l(str long ptr)
@ cdecl _mbsnbcat(str str long)

View file

@ -770,7 +770,7 @@
@ cdecl _mbslen(str)
@ cdecl _mbslen_l(str ptr)
@ cdecl _mbslwr(str)
@ stub _mbslwr_l
@ cdecl _mbslwr_l(str ptr)
@ cdecl _mbslwr_s(str long)
@ cdecl _mbslwr_s_l(str long ptr)
@ cdecl _mbsnbcat(str str long)

View file

@ -2270,31 +2270,51 @@ unsigned char* CDECL _mbsncat(unsigned char* dst, const unsigned char* src, size
}
/*********************************************************************
* _mbslwr_l(MSVCRT.@)
*/
unsigned char* CDECL _mbslwr_l(unsigned char *s, _locale_t locale)
{
pthreadmbcinfo mbcinfo;
unsigned char *ret = s;
if (!s)
return NULL;
if (locale)
mbcinfo = locale->mbcinfo;
else
mbcinfo = get_mbcinfo();
if (mbcinfo->ismbcodepage)
{
unsigned int c;
while (*s)
{
c = _mbctolower_l(_mbsnextc_l(s, locale), locale);
/* Note that I assume that the size of the character is unchanged */
if (c > 255)
{
*s++ = (c >> 8);
c = c & 0xff;
}
*s++ = c;
}
}
else
{
for ( ; *s; s++) *s = _tolower_l(*s, locale);
}
return ret;
}
/*********************************************************************
* _mbslwr(MSVCRT.@)
*/
unsigned char* CDECL _mbslwr(unsigned char* s)
unsigned char* CDECL _mbslwr(unsigned char *s)
{
unsigned char *ret = s;
if (!s)
return NULL;
if (get_mbcinfo()->ismbcodepage)
{
unsigned int c;
while (*s)
{
c = _mbctolower(_mbsnextc(s));
/* Note that I assume that the size of the character is unchanged */
if (c > 255)
{
*s++=(c>>8);
c=c & 0xff;
}
*s++=c;
}
}
else for ( ; *s; s++) *s = _tolower_l(*s, NULL);
return ret;
return _mbslwr_l(s, NULL);
}
/*********************************************************************

View file

@ -741,7 +741,7 @@
@ cdecl _mbslen(str)
@ cdecl _mbslen_l(str ptr)
@ cdecl _mbslwr(str)
# stub _mbslwr_l(str ptr)
@ cdecl _mbslwr_l(str ptr)
@ cdecl _mbslwr_s(str long)
@ cdecl _mbslwr_s_l(str long ptr)
@ cdecl _mbsnbcat(str str long)

View file

@ -636,7 +636,7 @@
@ cdecl _mbslen(str)
@ cdecl _mbslen_l(str ptr)
@ cdecl _mbslwr(str)
@ stub _mbslwr_l
@ cdecl _mbslwr_l(str ptr)
@ cdecl _mbslwr_s(str long)
@ cdecl _mbslwr_s_l(str long ptr)
@ cdecl _mbsnbcat(str str long)
@ -1205,7 +1205,7 @@
@ cdecl _o__mbslen(str) _mbslen
@ cdecl _o__mbslen_l(str ptr) _mbslen_l
@ cdecl _o__mbslwr(str) _mbslwr
@ stub _o__mbslwr_l
@ cdecl _o__mbslwr_l(str ptr) _mbslwr_l
@ cdecl _o__mbslwr_s(str long) _mbslwr_s
@ cdecl _o__mbslwr_s_l(str long ptr) _mbslwr_s_l
@ cdecl _o__mbsnbcat(str str long) _mbsnbcat