]> Savannah Git Hosting - gnulib.git/commitdiff
localename: Revisit macOS specific code.
authorBruno Haible <bruno@clisp.org>
Sun, 16 Sep 2018 12:42:55 +0000 (14:42 +0200)
committerBruno Haible <bruno@clisp.org>
Sun, 16 Sep 2018 12:42:55 +0000 (14:42 +0200)
* lib/localename.c (gl_locale_name_default): Reduce code duplication.
Fix comments about Mac OS X versions.

ChangeLog
lib/localename.c

index c6006d65e01311510e70ab631abef11895c157fa..ba07d9d63a6f83a17d2ad8a0ea65881f4d82892a 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2018-09-16  Bruno Haible  <bruno@clisp.org>
+
+       localename: Revisit macOS specific code.
+       * lib/localename.c (gl_locale_name_default): Reduce code duplication.
+       Fix comments about Mac OS X versions.
+
 2018-09-15  Bruno Haible  <bruno@clisp.org>
 
        setlocale: Improve support for locales not supported by libc.
index c9415c98490d5ec01089cdba34b530a47de79004..34e10b43cff59714250c7105e3242261142a0884 100644 (file)
@@ -1143,7 +1143,7 @@ extern char * getlocalename_l(int, locale_t);
 
 
 #if HAVE_CFLOCALECOPYCURRENT || HAVE_CFPREFERENCESCOPYAPPVALUE
-/* Mac OS X 10.2 or newer */
+/* Mac OS X 10.4 or newer */
 
 /* Canonicalize a Mac OS X locale name to a Unix locale name.
    NAME is a sufficiently large buffer.
@@ -2932,7 +2932,7 @@ gl_locale_name_default (void)
      codeset.  */
 
 # if HAVE_CFLOCALECOPYCURRENT || HAVE_CFPREFERENCESCOPYAPPVALUE
-  /* Mac OS X 10.2 or newer */
+  /* Mac OS X 10.4 or newer */
   {
     /* Cache the locale name, since CoreFoundation calls are expensive.  */
     static const char *cached_localename;
@@ -2940,29 +2940,28 @@ gl_locale_name_default (void)
     if (cached_localename == NULL)
       {
         char namebuf[256];
-#  if HAVE_CFLOCALECOPYCURRENT /* Mac OS X 10.3 or newer */
+#  if HAVE_CFLOCALECOPYCURRENT /* Mac OS X 10.5 or newer */
         CFLocaleRef locale = CFLocaleCopyCurrent ();
         CFStringRef name = CFLocaleGetIdentifier (locale);
-
-        if (CFStringGetCString (name, namebuf, sizeof (namebuf),
-                                kCFStringEncodingASCII))
-          {
-            gl_locale_name_canonicalize (namebuf);
-            cached_localename = strdup (namebuf);
-          }
-        CFRelease (locale);
-#  elif HAVE_CFPREFERENCESCOPYAPPVALUE /* Mac OS X 10.2 or newer */
+#  elif HAVE_CFPREFERENCESCOPYAPPVALUE /* Mac OS X 10.4 or newer */
         CFTypeRef value =
           CFPreferencesCopyAppValue (CFSTR ("AppleLocale"),
                                      kCFPreferencesCurrentApplication);
-        if (value != NULL
-            && CFGetTypeID (value) == CFStringGetTypeID ()
-            && CFStringGetCString ((CFStringRef)value,
-                                   namebuf, sizeof (namebuf),
-                                   kCFStringEncodingASCII))
-          {
-            gl_locale_name_canonicalize (namebuf);
-            cached_localename = strdup (namebuf);
+        if (value != NULL && CFGetTypeID (value) == CFStringGetTypeID ())
+          {
+            CFStringRef name = (CFStringRef)value;
+#  endif
+
+            if (CFStringGetCString (name, namebuf, sizeof (namebuf),
+                                    kCFStringEncodingASCII))
+              {
+                gl_locale_name_canonicalize (namebuf);
+                cached_localename = strdup (namebuf);
+              }
+
+#  if HAVE_CFLOCALECOPYCURRENT /* Mac OS X 10.5 or newer */
+        CFRelease (locale);
+#  elif HAVE_CFPREFERENCESCOPYAPPVALUE /* Mac OS X 10.4 or newer */
           }
 #  endif
         if (cached_localename == NULL)