diff options
author | Karl Williamson <public@khwilliamson.com> | 2014-02-19 15:31:07 -0700 |
---|---|---|
committer | Karl Williamson <public@khwilliamson.com> | 2014-02-19 15:44:31 -0700 |
commit | 481465ea22afd2442b2dd335f19832773b0663e2 (patch) | |
tree | c4e2f74284c5765fa27f12c18f53abea026a1208 /locale.c | |
parent | 89f7b9aac23a02ff8140b277b76eb7a70b0b04cc (diff) | |
download | perl-481465ea22afd2442b2dd335f19832773b0663e2.tar.gz |
locale.c: Another POSIX emulation fix on Windows
Right after I pushed the previous commit, I realized that the system
default locale on Windows should also have lower priority (besides LANG)
than the LC_foo environment variables. This should do that.
Diffstat (limited to 'locale.c')
-rw-r--r-- | locale.c | 19 |
1 files changed, 8 insertions, 11 deletions
@@ -348,7 +348,7 @@ Perl_my_setlocale(pTHX_ int category, const char* locale) * otherwise to use the particular category's variable if set; otherwise to * use the LANG variable. */ - unsigned override_LANG = 0; + bool override_LC_ALL = 0; char * result; if (locale && strEQ(locale, "")) { @@ -359,7 +359,7 @@ Perl_my_setlocale(pTHX_ int category, const char* locale) switch (category) { # ifdef LC_ALL case LC_ALL: - override_LANG++; + override_LC_ALL = TRUE; break; /* We already know its variable isn't set */ # endif # ifdef USE_LOCALE_TIME @@ -399,10 +399,7 @@ Perl_my_setlocale(pTHX_ int category, const char* locale) } if (! locale) { locale = PerlEnv_getenv("LANG"); - if (locale) { - override_LANG++; - } - else { + if (! locale) { locale = ""; } } @@ -413,15 +410,15 @@ Perl_my_setlocale(pTHX_ int category, const char* locale) result = setlocale(category, locale); - if (override_LANG < 2) { + if (! override_LC_ALL) { return result; } /* Here the input locale was LC_ALL, and we have set it to what is in the - * LANG variable. But LANG has lower priority than the other LC_foo - * variables, so override it for each one that is set. (If they are set to - * "", it means to use the same thing we just set LC_ALL to, so can skip) - * */ + * LANG variable or the system default if there is no LANG. But these have + * lower priority than the other LC_foo variables, so override it for each + * one that is set. (If they are set to "", it means to use the same thing + * we just set LC_ALL to, so can skip) */ # ifdef USE_LOCALE_TIME result = PerlEnv_getenv("LC_TIME"); if (result and strNE(result, "")) { |