svn commit: r1934303 - apr/apr/trunk/misc/win32

[email protected] Sun, 17 May 2026 15:27:36 -0000
Newsgroups gmane.comp.apache.apr.cvs
Message-ID <177903165667.4038255.3164164082666605770@svn03-he-fi>
Author: ivan
Date: Sun May 17 15:27:36 2026
New Revision: 1934303

Log:
windows: Simplify code by using LOCALE_RETURN_NUMBER flag for GetLocaleInfo().

* misc/win32/charset.c
  (apr_os_locale_encoding): Use GetLocaleInfo(LOCALE_RETURN_NUMBER |
   LOCALE_IDEFAULTANSICODEPAGE) to get locale information as DWORD instead of
   string.

Modified:
   apr/apr/trunk/misc/win32/charset.c

Modified: apr/apr/trunk/misc/win32/charset.c
==============================================================================
--- apr/apr/trunk/misc/win32/charset.c	Sun May 17 15:05:56 2026	(r1934302)
+++ apr/apr/trunk/misc/win32/charset.c	Sun May 17 15:27:36 2026	(r1934303)
@@ -27,24 +27,15 @@ APR_DECLARE(const char*) apr_os_default_
 
 APR_DECLARE(const char*) apr_os_locale_encoding (apr_pool_t *pool)
 {
-#ifdef _UNICODE
-    int i;
-#endif
     LCID locale = GetThreadLocale();
-    int len = GetLocaleInfo(locale, LOCALE_IDEFAULTANSICODEPAGE, NULL, 0);
-    char *cp = apr_palloc(pool, (len * sizeof(TCHAR)) + 2);
-    if (0 < GetLocaleInfo(locale, LOCALE_IDEFAULTANSICODEPAGE, (TCHAR*) (cp + 2), len))
+
+    DWORD codepage;
+    if (0 < GetLocaleInfo(locale,
+                          LOCALE_RETURN_NUMBER | LOCALE_IDEFAULTANSICODEPAGE,
+                          (LPTSTR)&codepage,
+                          sizeof(codepage) / sizeof(TCHAR)))
     {
-        /* 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;
+        return apr_psprintf(pool, "CP%u", codepage);
     }
 
     return apr_os_default_encoding(pool);