Quotes in strings injected into bki file need to escaped. In particular,
authorHeikki Linnakangas <[email protected]>
Wed, 20 Apr 2011 06:49:44 +0000 (09:49 +0300)
committerHeikki Linnakangas <[email protected]>
Wed, 20 Apr 2011 06:59:33 +0000 (09:59 +0300)
"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.

src/bin/initdb/initdb.c

index fa14161551f728fc9a26f3cdc903287b0d390e4b..0febcf1fcfb451e630f6ede042cbae27205f8abb 100644 (file)
@@ -1355,9 +1355,9 @@ bootstrap_template1(char *short_version)
 
        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.