summaryrefslogtreecommitdiff
path: root/locale.c
diff options
context:
space:
mode:
authorKarl Williamson <public@khwilliamson.com>2014-02-19 15:31:07 -0700
committerKarl Williamson <public@khwilliamson.com>2014-02-19 15:44:31 -0700
commit481465ea22afd2442b2dd335f19832773b0663e2 (patch)
treec4e2f74284c5765fa27f12c18f53abea026a1208 /locale.c
parent89f7b9aac23a02ff8140b277b76eb7a70b0b04cc (diff)
downloadperl-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.c19
1 files changed, 8 insertions, 11 deletions
diff --git a/locale.c b/locale.c
index b8bfe4ab96..d52559be59 100644
--- a/locale.c
+++ b/locale.c
@@ -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, "")) {