54 const char format[] =
".%d";
94 mbcinfo->mblcid = lcid;
97 if(mbcinfo->mblcid == -1)
99 WARN(
"Can't assign LCID to codepage (%d)\n", mbcinfo->mblcid);
105 WARN(
"Codepage %d not found\n", newcp);
111 memset(mbcinfo->mbctype, 0,
sizeof(
unsigned char[257]));
112 memset(mbcinfo->mbcasemap, 0,
sizeof(
unsigned char[256]));
118 mbcinfo->mbctype[
i + 1] |=
_M1;
127 mbcinfo->ismbcodepage = 1;
130 if (cpextra->
cp == 0 || cpextra->
cp == newcp)
132 if (cpextra->
cp == 0)
133 FIXME(
"trail bytes data not available for DBCS codepage %d - assuming all bytes\n", newcp);
139 mbcinfo->mbctype[
i + 1] |=
_M2;
148 mbcinfo->ismbcodepage = 0;
153 for (
i = 0;
i < 256;
i++)
154 if (!(mbcinfo->mbctype[
i + 1] &
_M1))
155 bufA[charcount++] =
i;
158 if (
ret != charcount)
159 ERR(
"MultiByteToWideChar of chars failed for cp %d, ret=%d (exp %d), error=%d\n", newcp,
ret, charcount,
GetLastError());
164 for (
i = 0;
i < 256;
i++)
165 if (!(mbcinfo->mbctype[
i + 1] &
_M1))
167 if (chartypes[charcount] &
C1_UPPER)
169 mbcinfo->mbctype[
i + 1] |=
_SBUP;
170 bufW[charcount] =
tolowerW(bufW[charcount]);
172 else if (chartypes[charcount] &
C1_LOWER)
174 mbcinfo->mbctype[
i + 1] |=
_SBLOW;
175 bufW[charcount] =
toupperW(bufW[charcount]);
181 if (
ret != charcount)
182 ERR(
"WideCharToMultiByte failed for cp %d, ret=%d (exp %d), error=%d\n", newcp,
ret, charcount,
GetLastError());
185 for (
i = 0;
i < 256;
i++)
187 if(!(mbcinfo->mbctype[
i + 1] &
_M1))
190 mbcinfo->mbcasemap[
i] = bufA[charcount];
202 for (
i = 161;
i <= 165;
i++)
203 mbcinfo->mbctype[
i + 1] |=
_MP;
204 for (
i = 166;
i <= 223;
i++)
205 mbcinfo->mbctype[
i + 1] |=
_MS;
208 mbcinfo->mbcodepage = newcp;
BOOL WINAPI GetCPInfo(UINT CodePage, LPCPINFO CodePageInfo)
_CRTIMP unsigned char _mbctype[257]
LCID MSVCRT_locale_to_LCID(const char *)
#define WideCharToMultiByte
DWORD WINAPI GetLastError(VOID)
GLint GLint GLsizei GLsizei GLsizei GLint GLenum format
#define sprintf(buf, format,...)
static unsigned char bytes[4]
WINE_UNICODE_INLINE WCHAR toupperW(WCHAR ch)
BYTE LeadByte[MAX_LEADBYTES]
BOOL WINAPI GetStringTypeW(DWORD type, LPCWSTR src, INT count, LPWORD chartype)
WINE_UNICODE_INLINE WCHAR tolowerW(WCHAR ch)
_CRTIMP int *__cdecl _errno(void)
MSVCRT__locale_t global_locale
#define memcpy(s1, s2, n)
MSVCRT_pthreadmbcinfo get_mbcinfo(void)
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
#define MultiByteToWideChar
static struct cp_extra_info_t g_cpextrainfo[]
UINT WINAPI GetOEMCP(VOID)