mirror of
https://github.com/reactos/reactos.git
synced 2024-12-27 01:24:38 +00:00
fixed some bugs to make nls functions compile
svn path=/trunk/; revision=346
This commit is contained in:
parent
fbcc7fb423
commit
03f9e7b713
8 changed files with 256 additions and 32 deletions
127
reactos/include/kernel32/cptable.h
Normal file
127
reactos/include/kernel32/cptable.h
Normal file
|
@ -0,0 +1,127 @@
|
|||
/*
|
||||
* nls/cptable.h
|
||||
*/
|
||||
|
||||
#ifndef __NLS_CPTABLE_H
|
||||
#define __NLS_CPTABLE_H
|
||||
|
||||
#undef WIN32_LEAN_AND_MEAN
|
||||
#include <windows.h>
|
||||
#include <kernel32/lctable.h>
|
||||
|
||||
|
||||
#define CODEPAGE_ANSI 1
|
||||
#define CODEPAGE_OEM 2
|
||||
#define CODEPAGE_MAC 3
|
||||
#define CODEPAGE_EBCDIC 4
|
||||
#define CODEPAGE_DBCS 0x10
|
||||
|
||||
|
||||
|
||||
typedef struct __CURRENCYFMTA
|
||||
{
|
||||
UINT NumDigits;
|
||||
UINT LeadingZero;
|
||||
UINT Grouping;
|
||||
LPSTR lpDecimalSep;
|
||||
LPSTR lpThousandSep;
|
||||
UINT NegativeOrder;
|
||||
UINT PositiveOrder;
|
||||
LPSTR lpCurrencySymbol;
|
||||
} CURRENCYFMTA, *PCURRENCYFMTA, *LPCURRENCYFMTA;
|
||||
|
||||
typedef struct __CURRENCYFMTW
|
||||
{
|
||||
UINT NumDigits;
|
||||
UINT LeadingZero;
|
||||
UINT Grouping;
|
||||
LPWSTR lpDecimalSep;
|
||||
LPWSTR lpThousandSep;
|
||||
UINT NegativeOrder;
|
||||
UINT PositiveOrder;
|
||||
LPWSTR lpCurrencySymbol;
|
||||
} CURRENCYFMTW, *PCURRENCYFMTW, *LPCURRENCYFMTW;
|
||||
|
||||
typedef struct __NUMBERFMTA
|
||||
{
|
||||
UINT NumDigits;
|
||||
UINT LeadingZero;
|
||||
UINT Grouping;
|
||||
LPSTR lpDecimalSep;
|
||||
LPSTR lpThousandSep;
|
||||
UINT NegativeOrder;
|
||||
} NUMBERFMTA, *PNUMBERFMTA, *LPNUMBERFMTA;
|
||||
|
||||
typedef struct __NUMBERFMTW
|
||||
{
|
||||
UINT NumDigits;
|
||||
UINT LeadingZero;
|
||||
UINT Grouping;
|
||||
LPWSTR lpDecimalSep;
|
||||
LPWSTR lpThousandSep;
|
||||
UINT NegativeOrder;
|
||||
} NUMBERFMTW, *PNUMBERFMTW, *LPNUMBERFMTW;
|
||||
|
||||
typedef struct __CODEPAGE
|
||||
{
|
||||
struct __CODEPAGE *Next;
|
||||
INT Id;
|
||||
DWORD Flags;
|
||||
WCHAR **ToUnicode;
|
||||
WCHAR **ToUnicodeGlyph;
|
||||
CHAR ***FromUnicode;
|
||||
LPCPINFO Info;
|
||||
} CODEPAGE, *PCODEPAGE;
|
||||
|
||||
extern PCODEPAGE __CPFirst;
|
||||
|
||||
extern CODEPAGE __CP37;
|
||||
extern CODEPAGE __CP437;
|
||||
extern CODEPAGE __CP500;
|
||||
extern CODEPAGE __CP737;
|
||||
extern CODEPAGE __CP775;
|
||||
extern CODEPAGE __CP850;
|
||||
extern CODEPAGE __CP852;
|
||||
extern CODEPAGE __CP855;
|
||||
extern CODEPAGE __CP857;
|
||||
extern CODEPAGE __CP860;
|
||||
extern CODEPAGE __CP861;
|
||||
extern CODEPAGE __CP863;
|
||||
extern CODEPAGE __CP865;
|
||||
extern CODEPAGE __CP866;
|
||||
extern CODEPAGE __CP869;
|
||||
extern CODEPAGE __CP875;
|
||||
extern CODEPAGE __CP1026;
|
||||
extern CODEPAGE __CP1250;
|
||||
extern CODEPAGE __CP1251;
|
||||
extern CODEPAGE __CP1252;
|
||||
extern CODEPAGE __CP1253;
|
||||
extern CODEPAGE __CP1254;
|
||||
extern CODEPAGE __CP1255;
|
||||
extern CODEPAGE __CP1256;
|
||||
extern CODEPAGE __CP1257;
|
||||
extern CODEPAGE __CP1258;
|
||||
extern CODEPAGE __CP10000;
|
||||
extern CODEPAGE __CP10006;
|
||||
extern CODEPAGE __CP10007;
|
||||
extern CODEPAGE __CP10029;
|
||||
extern CODEPAGE __CP10079;
|
||||
extern CODEPAGE __CP10081;
|
||||
|
||||
extern CPINFO __CPGenInfo;
|
||||
|
||||
extern WCHAR __ASCII_00[32];
|
||||
extern WCHAR __ASCII_20[32];
|
||||
extern WCHAR __ASCII_40[32];
|
||||
extern WCHAR __ASCII_60[32];
|
||||
|
||||
extern CHAR __ASCII_0000[32];
|
||||
extern CHAR __ASCII_0020[32];
|
||||
extern CHAR __ASCII_0040[32];
|
||||
extern CHAR __ASCII_0060[32];
|
||||
|
||||
extern WCHAR __NULL_00[32];
|
||||
extern CHAR __NULL_0000[32];
|
||||
extern CHAR *__NULL_00XX[32];
|
||||
|
||||
#endif
|
36
reactos/include/kernel32/lctable.h
Normal file
36
reactos/include/kernel32/lctable.h
Normal file
|
@ -0,0 +1,36 @@
|
|||
/*
|
||||
* nls/lctable.h
|
||||
*/
|
||||
|
||||
|
||||
|
||||
#ifndef __NLS_LCTABLE_H
|
||||
#define __NLS_LCTABLE_H
|
||||
|
||||
|
||||
struct __CODEPAGE;
|
||||
|
||||
#ifdef WIN32_LEAN_AND_MEAN
|
||||
typedef DWORD LCID;
|
||||
#endif
|
||||
|
||||
#define LOCALE_ARRAY 200
|
||||
typedef struct __LOCALE
|
||||
{
|
||||
LCID Id;
|
||||
LPSTR AbbrName;
|
||||
LPWSTR *Info0;
|
||||
LPWSTR *Info1;
|
||||
LPWSTR *ShortDateFormat;
|
||||
LPWSTR *LongDateFormat;
|
||||
LPWSTR *TimeFormat;
|
||||
struct __CODEPAGE *AnsiCodePage;
|
||||
struct __CODEPAGE *OemCodePage;
|
||||
} LOCALE, *PLOCALE, *LPLOCALE;
|
||||
|
||||
extern LOCALE __Locale[LOCALE_ARRAY];
|
||||
extern PLOCALE __UserLocale;
|
||||
|
||||
extern BOOL __LocaleInit(VOID);
|
||||
|
||||
#endif
|
26
reactos/include/kernel32/nls.h
Normal file
26
reactos/include/kernel32/nls.h
Normal file
|
@ -0,0 +1,26 @@
|
|||
/*
|
||||
* win32/nls.h
|
||||
*
|
||||
* National Language Support definitions
|
||||
*
|
||||
* Copyright (C) 1996 Free Software Foundation, Inc.
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Library General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2 of the License, or (at your option) any later version.
|
||||
*
|
||||
* This library is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* Library General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Library General Public
|
||||
* License along with this library; if not, write to the Free
|
||||
* Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
*/
|
||||
|
||||
|
||||
#include <kernel32/lctable.h>
|
||||
#include <kernel32/cptable.h>
|
||||
|
|
@ -22,7 +22,26 @@ FILE_OBJECTS = file/file.o file/curdir.o file/lfile.o file/dir.o \
|
|||
|
||||
MEM_OBJECTS = mem/virtual.o mem/heap.o mem/utils.o
|
||||
|
||||
NLS_OBJECTS = # nls/mbtowc.o nls/wctomb.o
|
||||
NLS_OBJECTS = nls/codepage.o nls/cpmisc.o nls/cptable.o\
|
||||
nls/cp37.o nls/cp437.o nls/cp500.o nls/cp737.o nls/cp775.o nls/cp850.o nls/cp852.o nls/cp855.o nls/cp857.o\
|
||||
nls/cp860.o nls/cp861.o nls/cp863.o nls/cp865.o nls/cp866.o nls/cp869.o nls/cp875.o nls/cp1026.o\
|
||||
nls/cp1250.o nls/cp1251.o nls/cp1252.o nls/cp1253.o nls/cp1254.o nls/cp1255.o nls/cp1256.o nls/cp1257.o\
|
||||
nls/cp10000.o nls/cp10006.o nls/cp10007.o nls/cp10029.o nls/cp10079.o nls/cp10081.o\
|
||||
nls/lctable.o\
|
||||
nls/lcAFK.o nls/lcBEL.o nls/lcBGR.o nls/lcCAT.o nls/lcCSY.o nls/lcDAN.o\
|
||||
nls/lcDEA.o nls/lcDEC.o nls/lcDEL.o nls/lcDES.o nls/lcDEU.o\
|
||||
nls/lcELL.o\
|
||||
nls/lcENA.o nls/lcENB.o nls/lcENC.o nls/lcENG.o nls/lcENI.o nls/lcENJ.o nls/lcENL.o nls/lcENS.o nls/lcENT.o\
|
||||
nls/lcENU.o nls/lcENZ.o\
|
||||
nls/lcESA.o nls/lcESB.o nls/lcESC.o nls/lcESD.o nls/lcESE.o nls/lcESF.o nls/lcESG.o nls/lcESH.o nls/lcESI.o\
|
||||
nls/lcESL.o nls/lcESM.o nls/lcESN.o nls/lcESO.o nls/lcESP.o nls/lcESR.o nls/lcESS.o nls/lcESU.o nls/lcESV.o\
|
||||
nls/lcESY.o nls/lcESZ.o\
|
||||
nls/lcETI.o nls/lcEUQ.o nls/lcFIN.o nls/lcFOS.o\
|
||||
nls/lcFRA.o nls/lcFRB.o nls/lcFRC.o nls/lcFRL.o nls/lcFRS.o\
|
||||
nls/lcHRV.o nls/lcHUN.o nls/lcIND.o nls/lcISL.o nls/lcITA.o nls/lcITS.o nls/lcLTH.o nls/lcLVI.o nls/lcNLB.o\
|
||||
nls/lcNLD.o nls/lcNON.o nls/lcNOR.o nls/lcPLK.o nls/lcPTB.o nls/lcPTG.o nls/lcROM.o nls/lcRUS.o nls/lcSKY.o\
|
||||
nls/lcSLV.o nls/lcSQI.o nls/lcSRB.o nls/lcSRL.o nls/lcSVE.o nls/lcSVF.o nls/lcTRK.o nls/lcUKR.o\
|
||||
nls/locale.o nls/mbtowc.o nls/wctomb.o
|
||||
|
||||
THREAD_OBJECTS = thread/thread.o
|
||||
|
||||
|
|
|
@ -27,19 +27,24 @@
|
|||
#include <string.h>
|
||||
|
||||
|
||||
extern PLOCALE __TebLocale;
|
||||
|
||||
#define GetTebLocale() __TebLocale
|
||||
|
||||
|
||||
UINT STDCALL GetACP(void)
|
||||
{
|
||||
//aprintf("GetACP()\n");
|
||||
|
||||
/* XXX: read from registry, take this as default */
|
||||
return GetThreadLocale()->AnsiCodePage->Id;
|
||||
return GetTebLocale()->AnsiCodePage->Id;
|
||||
}
|
||||
|
||||
UINT STDCALL GetOEMCP(void)
|
||||
{
|
||||
//aprintf("GetOEMCP()\n");
|
||||
/* XXX: read from registry, take this as default */
|
||||
return GetThreadLocale()->OemCodePage->Id;
|
||||
return GetTebLocale()->OemCodePage->Id;
|
||||
}
|
||||
|
||||
WINBOOL STDCALL IsValidCodePage(UINT codepage)
|
||||
|
|
|
@ -86,7 +86,7 @@ int OLE_GetFormatA(LCID locale,
|
|||
|
||||
PLOCALE __UserLocale;
|
||||
PLOCALE __TebLocale;
|
||||
PLOCALE __Locale;
|
||||
LOCALE __Locale[LOCALE_ARRAY];
|
||||
|
||||
WINBOOL __LocaleInit(void)
|
||||
{
|
||||
|
@ -1300,6 +1300,7 @@ int STDCALL GetDateFormatA(LCID locale,DWORD flags,
|
|||
return ret;
|
||||
}
|
||||
|
||||
|
||||
int
|
||||
STDCALL
|
||||
GetTimeFormatW(
|
||||
|
@ -1333,14 +1334,17 @@ GetTimeFormatW(
|
|||
* tt time marker (AM, PM)
|
||||
*
|
||||
*/
|
||||
INT STDCALL
|
||||
GetTimeFormatA(LCID locale, /* in */
|
||||
DWORD flags, /* in */
|
||||
LPSYSTEMTIME xtime, /* in */
|
||||
LPCSTR format, /* in */
|
||||
LPSTR timestr, /* out */
|
||||
INT timelen /* in */)
|
||||
{ char format_buf[40];
|
||||
int
|
||||
STDCALL
|
||||
GetTimeFormatA(
|
||||
LCID Locale,
|
||||
DWORD dwFlags,
|
||||
CONST SYSTEMTIME *lpTime,
|
||||
LPCSTR lpFormat,
|
||||
LPSTR lpTimeStr,
|
||||
int cchTime)
|
||||
{
|
||||
char format_buf[40];
|
||||
LPCSTR thisformat;
|
||||
SYSTEMTIME t;
|
||||
LPSYSTEMTIME thistime;
|
||||
|
@ -1348,34 +1352,35 @@ GetTimeFormatA(LCID locale, /* in */
|
|||
DWORD thisflags=LOCALE_STIMEFORMAT; /* standart timeformat */
|
||||
INT ret;
|
||||
|
||||
thislocale = OLE2NLS_CheckLocale ( locale );
|
||||
thislocale = OLE2NLS_CheckLocale ( Locale );
|
||||
|
||||
if ( flags & (TIME_NOTIMEMARKER | TIME_FORCE24HOURFORMAT ))
|
||||
{ FIXME(ole,"TIME_NOTIMEMARKER or TIME_FORCE24HOURFORMAT not implemented\n");
|
||||
if ( dwFlags & (TIME_NOTIMEMARKER | TIME_FORCE24HOURFORMAT ))
|
||||
{
|
||||
//FIXME(ole,"TIME_NOTIMEMARKER or TIME_FORCE24HOURFORMAT not implemented\n");
|
||||
}
|
||||
|
||||
flags &= (TIME_NOSECONDS | TIME_NOMINUTESORSECONDS); /* mask for OLE_GetFormatA*/
|
||||
dwFlags &= (TIME_NOSECONDS | TIME_NOMINUTESORSECONDS); /* mask for OLE_GetFormatA*/
|
||||
|
||||
if (format == NULL)
|
||||
{ if (flags & LOCALE_NOUSEROVERRIDE) /*use system default*/
|
||||
if (lpFormat == NULL)
|
||||
{ if (dwFlags & LOCALE_NOUSEROVERRIDE) /*use system default*/
|
||||
{ thislocale = GetSystemDefaultLCID();
|
||||
}
|
||||
GetLocaleInfoA(thislocale, thisflags, format_buf, sizeof(format_buf));
|
||||
thisformat = format_buf;
|
||||
}
|
||||
else
|
||||
{ thisformat = format;
|
||||
{ thisformat = lpFormat;
|
||||
}
|
||||
|
||||
if (xtime == NULL) /* NULL means use the current local time*/
|
||||
if (lpTime == NULL) /* NULL means use the current local time*/
|
||||
{ GetSystemTime(&t);
|
||||
thistime = &t;
|
||||
}
|
||||
else
|
||||
{ thistime = xtime;
|
||||
{ thistime = lpTime;
|
||||
}
|
||||
ret = OLE_GetFormatA(thislocale, thisflags, flags, thistime, thisformat,
|
||||
timestr, timelen);
|
||||
ret = OLE_GetFormatA(thislocale, thisflags, dwFlags, thistime, thisformat,
|
||||
lpTimeStr, cchTime);
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
|
|
@ -19,24 +19,27 @@
|
|||
#include <wchar.h>
|
||||
#include <string.h>
|
||||
|
||||
extern PLOCALE __TebLocale;
|
||||
|
||||
#define GetTebLocale() __TebLocale
|
||||
|
||||
INT MultiByteToWideChar(UINT cpid, DWORD flags, LPCSTR src, int srclen,
|
||||
LPWSTR dest, int destlen)
|
||||
{
|
||||
PCODEPAGE pcodepage;
|
||||
PCODEPAGE pcodepage =__CPFirst;
|
||||
INT copylen;
|
||||
INT retlen;
|
||||
WCHAR **atou;
|
||||
CHAR c;
|
||||
|
||||
aprintf("MultiByteToWideChar( %u, 0x%lX, %s, %d, 0x%lX, %d )\n",
|
||||
cpid, flags, src, srclen, (ULONG) dest, destlen);
|
||||
//aprintf("MultiByteToWideChar( %u, 0x%lX, %s, %d, 0x%lX, %d )\n",
|
||||
// cpid, flags, src, srclen, (ULONG) dest, destlen);
|
||||
|
||||
/* get codepage */
|
||||
switch(cpid)
|
||||
{
|
||||
case CP_ACP: pcodepage=GetThreadLocale()->OemCodePage; break;
|
||||
case CP_OEMCP: pcodepage=GetThreadLocale()->AnsiCodePage; break;
|
||||
case CP_ACP: pcodepage= GetTebLocale()->OemCodePage; break;
|
||||
case CP_OEMCP: pcodepage= GetTebLocale()->AnsiCodePage; break;
|
||||
case CP_MACCP: pcodepage=&__CP10000; break;
|
||||
default:
|
||||
pcodepage=__CPFirst;
|
||||
|
|
|
@ -20,12 +20,15 @@
|
|||
#include <kernel32/thread.h>
|
||||
#include <wchar.h>
|
||||
|
||||
extern PLOCALE __TebLocale;
|
||||
|
||||
#define GetTebLocale() __TebLocale
|
||||
|
||||
INT WideCharToMultiByte(UINT cpid, DWORD flags, LPCWSTR src, int srclen,
|
||||
LPSTR dest, int destlen, LPCSTR pdefchar,
|
||||
LPBOOL pdefused )
|
||||
{
|
||||
PCODEPAGE pcodepage;
|
||||
PCODEPAGE pcodepage = __CPFirst;
|
||||
BOOL defused=FALSE;
|
||||
INT copylen;
|
||||
INT retlen;
|
||||
|
@ -34,13 +37,13 @@ INT WideCharToMultiByte(UINT cpid, DWORD flags, LPCWSTR src, int srclen,
|
|||
CHAR d;
|
||||
WCHAR c;
|
||||
|
||||
aprintf("WideCharToMultiByte()\n");
|
||||
// aprintf("WideCharToMultiByte()\n");
|
||||
|
||||
/* get codepage */
|
||||
switch(cpid)
|
||||
{
|
||||
case CP_ACP: pcodepage=GetThreadLocale()->OemCodePage; break;
|
||||
case CP_OEMCP: pcodepage=GetThreadLocale()->AnsiCodePage; break;
|
||||
case CP_ACP: pcodepage=GetTebLocale()->OemCodePage; break;
|
||||
case CP_OEMCP: pcodepage=GetTebLocale()->AnsiCodePage; break;
|
||||
case CP_MACCP: pcodepage=&__CP10000; break;
|
||||
default:
|
||||
pcodepage=__CPFirst;
|
||||
|
|
Loading…
Reference in a new issue