You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@apr.apache.org by wr...@apache.org on 2007/06/01 01:45:52 UTC
svn commit: r543313 - /apr/apr/trunk/misc/win32/charset.c
Author: wrowe
Date: Thu May 31 16:45:51 2007
New Revision: 543313
URL: http://svn.apache.org/viewvc?view=rev&rev=543313
Log:
WinCE exception to deal with local code page (in unicode, no less)
PR: 39852
Submitted by: Curt Arnold <carnold apache.org>
Modified:
apr/apr/trunk/misc/win32/charset.c
Modified: apr/apr/trunk/misc/win32/charset.c
URL: http://svn.apache.org/viewvc/apr/apr/trunk/misc/win32/charset.c?view=diff&rev=543313&r1=543312&r2=543313
==============================================================================
--- apr/apr/trunk/misc/win32/charset.c (original)
+++ apr/apr/trunk/misc/win32/charset.c Thu May 31 16:45:51 2007
@@ -27,15 +27,27 @@
APR_DECLARE(const char*) apr_os_locale_encoding (apr_pool_t *pool)
{
+#ifdef _UNICODE
+ int i;
+#endif
+#if defined(_WIN32_WCE)
+ LCID locale = GetUserDefaultLCID();
+#else
LCID locale = GetThreadLocale();
+#endif
int len = GetLocaleInfo(locale, LOCALE_IDEFAULTANSICODEPAGE, NULL, 0);
- char *cp = apr_palloc(pool, len + 2);
- if (0 < GetLocaleInfo(locale, LOCALE_IDEFAULTANSICODEPAGE, cp + 2, len))
+ char *cp = apr_palloc(pool, (len * sizeof(TCHAR)) + 2);
+ if (0 < GetLocaleInfo(locale, LOCALE_IDEFAULTANSICODEPAGE, (TCHAR*) (cp + 2), len))
{
/* Fix up the returned number to make a valid codepage name of
the form "CPnnnn". */
cp[0] = 'C';
cp[1] = 'P';
+#ifdef _UNICODE
+ for(i = 0; i < len; i++) {
+ cp[i + 2] = (char) ((TCHAR*) (cp + 2))[i];
+ }
+#endif
return cp;
}