Commit 1e981e5e authored by Piotr Caban's avatar Piotr Caban Committed by Alexandre Julliard

msvcrt: Added _toupper_l implementation.

parent 52c2976f
......@@ -20,6 +20,7 @@
#include "msvcrt.h"
#include "winnls.h"
#include "wine/unicode.h"
/* Some abbreviations to make the following table readable */
#define _C_ MSVCRT__CONTROL
......@@ -328,6 +329,49 @@ int CDECL MSVCRT___iscsymf(int c)
}
/*********************************************************************
* _toupper_l (MSVCRT.@)
*/
int CDECL MSVCRT__toupper_l(int c, MSVCRT__locale_t locale)
{
if(!locale)
locale = get_locale();
if(c < 256)
return locale->locinfo->pcumap[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 = toupperW(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;
}
/*********************************************************************
* toupper (MSVCRT.@)
*/
int CDECL MSVCRT_toupper(int c)
{
return MSVCRT__toupper_l(c, NULL);
}
/*********************************************************************
* _toupper (MSVCRT.@)
*/
int CDECL MSVCRT__toupper(int c)
......
......@@ -979,7 +979,7 @@
@ cdecl _tolower(long) MSVCRT__tolower
# stub _tolower_l(long ptr)
@ cdecl _toupper(long) MSVCRT__toupper
# stub _toupper_l(long ptr)
@ cdecl _toupper_l(long ptr) MSVCRT__toupper_l
@ cdecl _towlower_l(long ptr) MSVCRT__towlower_l
@ cdecl _towupper_l(long ptr) MSVCRT__towupper_l
@ extern _tzname MSVCRT__tzname
......@@ -1426,7 +1426,7 @@
@ cdecl tmpnam(ptr) MSVCRT_tmpnam
# stub tmpnam_s(ptr long)
@ cdecl tolower(long) ntdll.tolower
@ cdecl toupper(long) ntdll.toupper
@ cdecl toupper(long) MSVCRT_toupper
@ cdecl towlower(long) ntdll.towlower
@ cdecl towupper(long) ntdll.towupper
@ cdecl ungetc(long ptr) MSVCRT_ungetc
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment