Commit dea47eee authored by Bruce Momjian's avatar Bruce Momjian

Windows uses codepages rather than the environment, so we work around

that by querying the environment explicitly first for LC_COLLATE and
LC_CTYPE. We have to do this because initdb passes those values in the
environment. If there is nothing there we fall back on the codepage.

Andrew Dunstan
parent 221c0ada
...@@ -13,7 +13,7 @@ ...@@ -13,7 +13,7 @@
* *
* *
* IDENTIFICATION * IDENTIFICATION
* $PostgreSQL: pgsql/src/backend/main/main.c,v 1.75 2004/03/05 01:11:04 momjian Exp $ * $PostgreSQL: pgsql/src/backend/main/main.c,v 1.76 2004/03/15 16:14:26 momjian Exp $
* *
*------------------------------------------------------------------------- *-------------------------------------------------------------------------
*/ */
...@@ -74,6 +74,10 @@ main(int argc, char *argv[]) ...@@ -74,6 +74,10 @@ main(int argc, char *argv[])
#endif /* NOPRINTADE */ #endif /* NOPRINTADE */
#endif /* __alpha */ #endif /* __alpha */
#ifdef WIN32
char *env_locale;
#endif
#if defined(NOFIXADE) || defined(NOPRINTADE) #if defined(NOFIXADE) || defined(NOPRINTADE)
#if defined(ultrix4) #if defined(ultrix4)
...@@ -143,8 +147,30 @@ main(int argc, char *argv[]) ...@@ -143,8 +147,30 @@ main(int argc, char *argv[])
* set later during GUC option processing, but we set it here to allow * set later during GUC option processing, but we set it here to allow
* startup error messages to be localized. * startup error messages to be localized.
*/ */
#ifdef WIN32
/*
* Windows uses codepages rather than the environment, so we work around
* that by querying the environment explicitly first for LC_COLLATE
* and LC_CTYPE. We have to do this because initdb passes those values
* in the environment. If there is nothing there we fall back on the
* codepage.
*/
if ((env_locale = getenv("LC_COLLATE")) != NULL)
setlocale(LC_COLLATE,env_locale);
else
setlocale(LC_COLLATE, ""); setlocale(LC_COLLATE, "");
if ((env_locale = getenv("LC_CTYPE")) != NULL)
setlocale(LC_CTYPE,env_locale);
else
setlocale(LC_CTYPE, ""); setlocale(LC_CTYPE, "");
#else
setlocale(LC_COLLATE, "");
setlocale(LC_CTYPE, "");
#endif
#ifdef LC_MESSAGES #ifdef LC_MESSAGES
setlocale(LC_MESSAGES, ""); setlocale(LC_MESSAGES, "");
#endif #endif
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment