msvcrt: Added _tolower_l implementation.
This commit is contained in:
parent
1e981e5e9c
commit
0ea4e668f5
|
@ -379,6 +379,49 @@ int CDECL MSVCRT__toupper(int c)
|
|||
return c - 0x20; /* sic */
|
||||
}
|
||||
|
||||
/*********************************************************************
|
||||
* _tolower_l (MSVCRT.@)
|
||||
*/
|
||||
int CDECL MSVCRT__tolower_l(int c, MSVCRT__locale_t locale)
|
||||
{
|
||||
if(!locale)
|
||||
locale = get_locale();
|
||||
|
||||
if(c < 256)
|
||||
return locale->locinfo->pclmap[c];
|
||||
|
||||
if(locale->locinfo->pctype[(c>>8)&255] & MSVCRT__LEADBYTE)
|
||||
{
|
||||
WCHAR wide, upper;
|
||||
char str[2], *p = str;
|
||||
*p++ = (c>>8) & 255;
|
||||
*p++ = c & 255;
|
||||
|
||||
if(!MultiByteToWideChar(locale->locinfo->lc_codepage,
|
||||
MB_ERR_INVALID_CHARS, str, 2, &wide, 1))
|
||||
return c;
|
||||
|
||||
upper = tolowerW(wide);
|
||||
if(upper == wide)
|
||||
return c;
|
||||
|
||||
WideCharToMultiByte(locale->locinfo->lc_codepage, 0,
|
||||
&upper, 1, str, 2, NULL, NULL);
|
||||
|
||||
return str[0] + (str[1]<<8);
|
||||
}
|
||||
|
||||
return c;
|
||||
}
|
||||
|
||||
/*********************************************************************
|
||||
* tolower (MSVCRT.@)
|
||||
*/
|
||||
int CDECL MSVCRT_tolower(int c)
|
||||
{
|
||||
return MSVCRT__tolower_l(c, NULL);
|
||||
}
|
||||
|
||||
/*********************************************************************
|
||||
* _tolower (MSVCRT.@)
|
||||
*/
|
||||
|
|
|
@ -977,7 +977,7 @@
|
|||
@ cdecl _time64(ptr) MSVCRT__time64
|
||||
@ extern _timezone MSVCRT___timezone
|
||||
@ cdecl _tolower(long) MSVCRT__tolower
|
||||
# stub _tolower_l(long ptr)
|
||||
@ cdecl _tolower_l(long ptr) MSVCRT__tolower_l
|
||||
@ cdecl _toupper(long) MSVCRT__toupper
|
||||
@ cdecl _toupper_l(long ptr) MSVCRT__toupper_l
|
||||
@ cdecl _towlower_l(long ptr) MSVCRT__towlower_l
|
||||
|
@ -1425,7 +1425,7 @@
|
|||
# stub tmpfile_s(ptr)
|
||||
@ cdecl tmpnam(ptr) MSVCRT_tmpnam
|
||||
# stub tmpnam_s(ptr long)
|
||||
@ cdecl tolower(long) ntdll.tolower
|
||||
@ cdecl tolower(long) MSVCRT_tolower
|
||||
@ cdecl toupper(long) MSVCRT_toupper
|
||||
@ cdecl towlower(long) ntdll.towlower
|
||||
@ cdecl towupper(long) ntdll.towupper
|
||||
|
|
Loading…
Reference in New Issue