]> granicus.if.org Git - postgresql/commitdiff
Update "pg_regress --no-locale" for Darwin and Windows.
authorNoah Misch <noah@leadboat.com>
Fri, 16 Jan 2015 06:27:31 +0000 (01:27 -0500)
committerNoah Misch <noah@leadboat.com>
Fri, 16 Jan 2015 06:28:17 +0000 (01:28 -0500)
Commit 894459e59ffa5c7fee297b246c17e1f72564db1d revealed this option to
be broken for NLS builds on Darwin, but "make -C contrib/unaccent check"
and the buildfarm client rely on it.  Fix that configuration by
redefining the option to imply LANG=C on Darwin.  In passing, use LANG=C
instead of LANG=en on Windows; since only postmaster startup uses that
value, testers are unlikely to notice the change.  Back-patch to 9.0,
like the predecessor commit.

src/test/regress/pg_regress.c

index e8c644ba5df992259421281ff61a79329d3f4e06..005cca661f07503a845e5c4d7f17f5bdaabd7fcc 100644 (file)
@@ -790,9 +790,17 @@ initialize_environment(void)
                unsetenv("LC_NUMERIC");
                unsetenv("LC_TIME");
                unsetenv("LANG");
-               /* On Windows the default locale cannot be English, so force it */
-#if defined(WIN32) || defined(__CYGWIN__)
-               putenv("LANG=en");
+
+               /*
+                * Most platforms have adopted the POSIX locale as their
+                * implementation-defined default locale.  Exceptions include native
+                * Windows, Darwin with --enable-nls, and Cygwin with --enable-nls.
+                * (Use of --enable-nls matters because libintl replaces setlocale().)
+                * Also, PostgreSQL does not support Darwin with locale environment
+                * variables unset; see PostmasterMain().
+                */
+#if defined(WIN32) || defined(__CYGWIN__) || defined(__darwin__)
+               putenv("LANG=C");
 #endif
        }