Commit 2b919118 authored by Heikki Linnakangas's avatar Heikki Linnakangas

Quotes in strings injected into bki file need to escaped. In particular,

"People's Republic of China" locale on Windows was causing initdb to fail.

This fixes bug #5818 reported by yulei. On master, this makes the mapping
of "People's Republic of China" to just "China" obsolete. In 9.0 and 8.4,
just fix the escaping. Earlier versions didn't have locale names in bki
file.
parent 7228d029
...@@ -1165,9 +1165,9 @@ bootstrap_template1(void) ...@@ -1165,9 +1165,9 @@ bootstrap_template1(void)
bki_lines = replace_token(bki_lines, "ENCODING", encodingid); bki_lines = replace_token(bki_lines, "ENCODING", encodingid);
bki_lines = replace_token(bki_lines, "LC_COLLATE", lc_collate); bki_lines = replace_token(bki_lines, "LC_COLLATE", escape_quotes(lc_collate));
bki_lines = replace_token(bki_lines, "LC_CTYPE", lc_ctype); bki_lines = replace_token(bki_lines, "LC_CTYPE", escape_quotes(lc_ctype));
/* /*
* Pass correct LC_xxx environment to bootstrap. * Pass correct LC_xxx environment to bootstrap.
...@@ -2276,8 +2276,8 @@ strreplace(char *str, char *needle, char *replacement) ...@@ -2276,8 +2276,8 @@ strreplace(char *str, char *needle, char *replacement)
#endif /* WIN32 */ #endif /* WIN32 */
/* /*
* Windows has a problem with locale names that have a dot or apostrophe in * Windows has a problem with locale names that have a dot in the country
* the country name. For example: * name. For example:
* *
* "Chinese (Traditional)_Hong Kong S.A.R..950" * "Chinese (Traditional)_Hong Kong S.A.R..950"
* *
...@@ -2295,15 +2295,15 @@ localemap(char *locale) ...@@ -2295,15 +2295,15 @@ localemap(char *locale)
#ifdef WIN32 #ifdef WIN32
/* /*
* Map the full country name to an abbreviation that setlocale() accepts * Map the full country name to an abbreviation that setlocale() accepts.
* "China" and "HKG" are listed here: *
* "HKG" is listed here:
* http://msdn.microsoft.com/en-us/library/cdax410z%28v=vs.71%29.aspx * http://msdn.microsoft.com/en-us/library/cdax410z%28v=vs.71%29.aspx
* (Country/Region Strings). * (Country/Region Strings).
* *
* "ARE" is the ISO-3166 three-letter code for U.A.E. It is not on the * "ARE" is the ISO-3166 three-letter code for U.A.E. It is not on the
* above list, but seems to work anyway. * above list, but seems to work anyway.
*/ */
strreplace(locale, "People's Republic of China", "China");
strreplace(locale, "Hong Kong S.A.R.", "HKG"); strreplace(locale, "Hong Kong S.A.R.", "HKG");
strreplace(locale, "U.A.E.", "ARE"); strreplace(locale, "U.A.E.", "ARE");
......
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