aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/bin/initdb/initdb.c30
1 files changed, 13 insertions, 17 deletions
diff --git a/src/bin/initdb/initdb.c b/src/bin/initdb/initdb.c
index 4db34e5f2ea..9ea2ea39cee 100644
--- a/src/bin/initdb/initdb.c
+++ b/src/bin/initdb/initdb.c
@@ -1564,7 +1564,7 @@ setup_collation(void)
int i;
FILE *locale_a_handle;
char localebuf[NAMEDATALEN];
- int skipped = 0;
+ int count = 0;
PG_CMD_DECL;
#endif
@@ -1579,7 +1579,7 @@ setup_collation(void)
locale_a_handle = popen_check("locale -a", "r");
if (!locale_a_handle)
- return;
+ return; /* complaint already printed */
PG_CMD_OPEN;
@@ -1597,12 +1597,11 @@ setup_collation(void)
len = strlen(localebuf);
- if (localebuf[len - 1] != '\n')
+ if (len == 0 || localebuf[len - 1] != '\n')
{
if (debug)
fprintf(stderr, _("%s: locale name too long, skipped: %s\n"),
progname, localebuf);
- skipped++;
continue;
}
localebuf[len - 1] = '\0';
@@ -1628,22 +1627,23 @@ setup_collation(void)
if (debug)
fprintf(stderr, _("%s: locale name has non-ASCII characters, skipped: %s\n"),
progname, localebuf);
- skipped++;
continue;
}
enc = pg_get_encoding_from_locale(localebuf, debug);
if (enc < 0)
{
- skipped++;
- continue; /* error message printed by pg_get_encoding_from_locale() */
+ /* error message printed by pg_get_encoding_from_locale() */
+ continue;
}
if (!PG_VALID_BE_ENCODING(enc))
continue; /* ignore locales for client-only encodings */
if (enc == PG_SQL_ASCII)
continue; /* C/POSIX are already in the catalog */
- PG_CMD_PRINTF2("INSERT INTO tmp_pg_collation (locale, encoding) VALUES ('%s', %d);",
+ count++;
+
+ PG_CMD_PRINTF2("INSERT INTO tmp_pg_collation (locale, encoding) VALUES ('%s', %d);\n",
escape_quotes(localebuf), enc);
/*
@@ -1653,12 +1653,12 @@ setup_collation(void)
* "en_US" for LATIN1, say.
*/
if (normalize_locale_name(alias, localebuf))
- PG_CMD_PRINTF3("INSERT INTO tmp_pg_collation (collname, locale, encoding) VALUES ('%s', '%s', %d);",
+ PG_CMD_PRINTF3("INSERT INTO tmp_pg_collation (collname, locale, encoding) VALUES ('%s', '%s', %d);\n",
escape_quotes(alias), escape_quotes(localebuf), enc);
}
/* Add an SQL-standard name */
- PG_CMD_PRINTF1("INSERT INTO tmp_pg_collation (collname, locale, encoding) VALUES ('ucs_basic', 'C', %d);", PG_UTF8);
+ PG_CMD_PRINTF1("INSERT INTO tmp_pg_collation (collname, locale, encoding) VALUES ('ucs_basic', 'C', %d);\n", PG_UTF8);
/*
* When copying collations to the final location, eliminate
@@ -1674,8 +1674,7 @@ setup_collation(void)
" COALESCE(collname, locale) AS final_collname, "
" (SELECT oid FROM pg_namespace WHERE nspname = 'pg_catalog') AS collnamespace, "
" (SELECT relowner FROM pg_class WHERE relname = 'pg_collation') AS collowner, "
- " encoding, "
- " locale, locale "
+ " encoding, locale, locale "
" FROM tmp_pg_collation"
" ORDER BY final_collname, collnamespace, encoding, (collname = locale) DESC, locale;\n");
@@ -1683,12 +1682,9 @@ setup_collation(void)
PG_CMD_CLOSE;
check_ok();
- if (skipped && !debug)
+ if (count == 0 && !debug)
{
- printf(ngettext("%d system locale has been omitted because it cannot supported by PostgreSQL.\n",
- "%d system locales have been omitted because they cannot be supported by PostgreSQL.\n",
- skipped),
- skipped);
+ printf(_("No usable system locales were found.\n"));
printf(_("Use the option \"--debug\" to see details.\n"));
}
#else /* not HAVE_LOCALE_T */