MemoryContextInit();
/*
- * Set up locale information from environment. Note that LC_CTYPE and
- * LC_COLLATE will be overridden later from pg_control if we are in an
- * already-initialized database. We set them here so that they will be
- * available to fill pg_control during initdb. LC_MESSAGES will get set
- * later during GUC option processing, but we set it here to allow startup
- * error messages to be localized.
+ * Set up locale information
*/
-
set_pglocale_pgservice(argv[0], PG_TEXTDOMAIN("postgres"));
-#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.
+ * In the postmaster, absorb the environment values for LC_COLLATE and
+ * LC_CTYPE. Individual backends will change these later to settings
+ * taken from pg_database, but the postmaster cannot do that. If we leave
+ * these set to "C" then message localization might not work well in the
+ * postmaster.
*/
- {
- char *env_locale;
-
- if ((env_locale = getenv("LC_COLLATE")) != NULL)
- init_locale("LC_COLLATE", LC_COLLATE, env_locale);
- else
- init_locale("LC_COLLATE", LC_COLLATE, "");
-
- if ((env_locale = getenv("LC_CTYPE")) != NULL)
- init_locale("LC_CTYPE", LC_CTYPE, env_locale);
- else
- init_locale("LC_CTYPE", LC_CTYPE, "");
- }
-#else
init_locale("LC_COLLATE", LC_COLLATE, "");
init_locale("LC_CTYPE", LC_CTYPE, "");
-#endif
+ /*
+ * LC_MESSAGES will get set later during GUC option processing, but we set
+ * it here to allow startup error messages to be localized.
+ */
#ifdef LC_MESSAGES
init_locale("LC_MESSAGES", LC_MESSAGES, "");
#endif
bki_lines = replace_token(bki_lines, "LC_CTYPE",
escape_quotes_bki(lc_ctype));
- /*
- * Pass correct LC_xxx environment to bootstrap.
- *
- * The shell script arranged to restore the LC settings afterwards, but
- * there doesn't seem to be any compelling reason to do that.
- */
- snprintf(cmd, sizeof(cmd), "LC_COLLATE=%s", lc_collate);
- putenv(pg_strdup(cmd));
-
- snprintf(cmd, sizeof(cmd), "LC_CTYPE=%s", lc_ctype);
- putenv(pg_strdup(cmd));
-
- unsetenv("LC_ALL");
-
/* Also ensure backend isn't confused by this environment var: */
unsetenv("PGCLIENTENCODING");