This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
locale.c: Refactor Ultrix code
authorKarl Williamson <khw@cpan.org>
Tue, 2 Jan 2018 03:00:03 +0000 (20:00 -0700)
committerKarl Williamson <khw@cpan.org>
Wed, 31 Jan 2018 05:27:25 +0000 (22:27 -0700)
Examination shows that this code does nothing unless LC_ALL is defined.
So explicitly test at compile time for that.

Also, two variables don't have to be declared so globally, and by
reducing their scope, by creating a new block we don't have to have
PERL_UNUSED_ARG()s for them

locale.c

index 4279929..fdb4d4b 100644 (file)
--- a/locale.c
+++ b/locale.c
@@ -1829,7 +1829,6 @@ Perl_init_i18nl10n(pTHX_ int printwarn)
                                          /* disallow with "" or "0" */
                                          *bad_lang_use_once
                                        && strNE("0", bad_lang_use_once)))));
-    bool done = FALSE;
     /* setlocale() return vals; not copied so must be looked at immediately */
     const char * sl_result[NOMINAL_LC_ALL_INDEX + 1];
 
@@ -1837,8 +1836,6 @@ Perl_init_i18nl10n(pTHX_ int printwarn)
      * volatile */
     const char * curlocales[NOMINAL_LC_ALL_INDEX + 1];
 
-    char * locale_param;
-
 #  ifdef WIN32
 
     /* In some systems you can find out the system default locale
@@ -1900,20 +1897,19 @@ Perl_init_i18nl10n(pTHX_ int printwarn)
     assert(NOMINAL_LC_ALL_INDEX == LC_ALL_INDEX);
 #    endif
 #  endif    /* DEBUGGING */
-#  ifndef LOCALE_ENVIRON_REQUIRED
-
-    PERL_UNUSED_VAR(done);
-    PERL_UNUSED_VAR(locale_param);
-
-#  else
+#  ifdef LOCALE_ENVIRON_REQUIRED
 
     /*
      * Ultrix setlocale(..., "") fails if there are no environment
      * variables from which to get a locale name.
      */
 
-#    ifdef LC_ALL
+#    ifndef LC_ALL
+#      error Ultrix without LC_ALL not implemented
+#    else
 
+    {
+        bool done = FALSE;
     if (lang) {
        sl_result[LC_ALL_INDEX] = do_setlocale_c(LC_ALL, setlocale_init);
         DEBUG_LOCALE_INIT(LC_ALL, setlocale_init, sl_result[LC_ALL_INDEX]);
@@ -1923,6 +1919,7 @@ Perl_init_i18nl10n(pTHX_ int printwarn)
            setlocale_failure = TRUE;
     }
     if (! setlocale_failure) {
+        const char * locale_param;
         for (i = 0; i < LC_ALL_INDEX; i++) {
             locale_param = (! done && (lang || PerlEnv_getenv(category_names[i])))
                            ? setlocale_init
@@ -1934,6 +1931,7 @@ Perl_init_i18nl10n(pTHX_ int printwarn)
             DEBUG_LOCALE_INIT(categories[i], locale_param, sl_result[i]);
         }
     }
+    }
 
 #    endif /* LC_ALL */
 #  endif /* LOCALE_ENVIRON_REQUIRED */