Check for C/POSIX before assuming that nl_langinfo or win32_langinfo
will work. Per buildfarm results.
This commit is contained in:
parent
8f8a5df694
commit
8539a0e00a
|
@ -8,7 +8,7 @@
|
|||
*
|
||||
*
|
||||
* IDENTIFICATION
|
||||
* $PostgreSQL: pgsql/src/port/chklocale.c,v 1.12 2009/11/12 02:46:16 tgl Exp $
|
||||
* $PostgreSQL: pgsql/src/port/chklocale.c,v 1.13 2009/11/12 03:37:15 tgl Exp $
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
|
@ -237,6 +237,11 @@ pg_get_encoding_from_locale(const char *ctype)
|
|||
char *save;
|
||||
char *name;
|
||||
|
||||
/* If locale is C or POSIX, we can allow all encodings */
|
||||
if (pg_strcasecmp(ctype, "C") == 0 ||
|
||||
pg_strcasecmp(ctype, "POSIX") == 0)
|
||||
return PG_SQL_ASCII;
|
||||
|
||||
save = setlocale(LC_CTYPE, NULL);
|
||||
if (!save)
|
||||
return -1; /* setlocale() broken? */
|
||||
|
@ -269,6 +274,12 @@ pg_get_encoding_from_locale(const char *ctype)
|
|||
ctype = setlocale(LC_CTYPE, NULL);
|
||||
if (!ctype)
|
||||
return -1; /* setlocale() broken? */
|
||||
|
||||
/* If locale is C or POSIX, we can allow all encodings */
|
||||
if (pg_strcasecmp(ctype, "C") == 0 ||
|
||||
pg_strcasecmp(ctype, "POSIX") == 0)
|
||||
return PG_SQL_ASCII;
|
||||
|
||||
#ifndef WIN32
|
||||
sys = nl_langinfo(CODESET);
|
||||
if (sys)
|
||||
|
@ -281,13 +292,6 @@ pg_get_encoding_from_locale(const char *ctype)
|
|||
if (!sys)
|
||||
return -1; /* out of memory; unlikely */
|
||||
|
||||
/* If locale is C or POSIX, we can allow all encodings */
|
||||
if (pg_strcasecmp(ctype, "C") == 0 || pg_strcasecmp(ctype, "POSIX") == 0)
|
||||
{
|
||||
free(sys);
|
||||
return PG_SQL_ASCII;
|
||||
}
|
||||
|
||||
/* Check the table */
|
||||
for (i = 0; encoding_match_list[i].system_enc_name; i++)
|
||||
{
|
||||
|
|
Loading…
Reference in New Issue