0.5.1_alpha ICU support

git-svn-id: svn://db.shs.com.ru/pip@91 12ceb7fc-bf1f-11e4-8940-5bc7170c53b5
This commit is contained in:
2015-04-14 10:23:13 +00:00
parent 493d8ba0c7
commit 30c1e62558
9 changed files with 196 additions and 50 deletions

View File

@@ -40,6 +40,9 @@
//# include <crt_externs.h>
extern clock_serv_t __pi_mac_clock;
#endif
#ifdef PIP_ICU
# include <unicode/ucnv.h>
#endif
/*
#ifdef WINDOWS
# include <conio.h>
@@ -125,6 +128,37 @@ PIInit::PIInit() {
setlocale(LC_NUMERIC, "C");
# endif
#endif
#ifdef PIP_ICU
__syslocname__ = new char[256];
memset(__syslocname__, 0, 256);
# ifdef WINDOWS
CPINFOEX cpinfo;
GetCPInfoEx(CP_ACP, 0, &cpinfo);
int l = 0;
for (l = 0; l < MAX_PATH; ++l)
if (cpinfo.CodePageName[l] == '\0' || cpinfo.CodePageName[l] == ' ')
break;
memcpy(__syslocname__, "windows-", 8);
memcpy(&(__syslocname__[8]), cpinfo.CodePageName, l);
GetCPInfoEx(CP_OEMCP, 0, &cpinfo);
for (l = 0; l < MAX_PATH; ++l)
if (cpinfo.CodePageName[l] == '\0' || cpinfo.CodePageName[l] == ' ')
break;
__sysoemname__ = new char[256];
memset(__sysoemname__, 0, 256);
memcpy(__sysoemname__, "ibm-", 4);
memcpy(&(__sysoemname__[4]), cpinfo.CodePageName, l);
//piCout << cpinfo.CodePageName;
# else
PIString en(getenv("LANG"));
if (!en.isEmpty())
en = en.mid(en.find(".") + 1);
PIByteArray enba = en.toByteArray();
memcpy(__syslocname__, enba.data(), enba.size_s());
# endif
piCout << __syslocname__;
piCout << __sysoemname__;
#endif
#ifdef MAC_OS
host_get_clock_service(mach_host_self(), CALENDAR_CLOCK, &__pi_mac_clock);
#endif
@@ -200,6 +234,10 @@ PIInit::~PIInit() {
#endif
#ifdef MAC_OS
mach_port_deallocate(mach_task_self(), __pi_mac_clock);
#endif
#ifdef PIP_ICU
if (__syslocname__) delete __syslocname__;
if (__sysoemname__) delete __sysoemname__;
#endif
//if (currentLocale_t != 0) freelocale(currentLocale_t);
}