Historically, MinGW environments lacked some Windows API calls, so we
took a different code path in win32_langinfo(). Somehow, the code
change in commit
35eeea62 (removing setlocale() calls) caused one
particular 001_initdb.pl test to fail on MinGW + ICU builds, because
pg_import_system_collations() found no collations. It might take a
MinGW user to discover the exact reason.
Updating that function to use the same code as MSVC seems to fix that
test, so lets do that. (There are plenty more places that test for MSVC
unnecessarily, to be investigated later.)
While here, also rename the helper function win32_langinfo() to
win32_get_codeset(), to explain what it does less confusingly; it's not
really a general langinfo() substitute.
Noticed by triggering the optional MinGW CI task; no build farm animals
failed.
Discussion: https://postgr.es/m/CA%2BhUKGKBWfhXQ3J%2B2Lj5PhKvQnGD%3DsywA0XQcb7boTCf%3DerVLg%40mail.gmail.com
#ifdef WIN32
/*
- * On Windows, use CP<code page number> instead of the nl_langinfo() result
+ * On Windows, use CP<code page number> instead of CODESET.
*
* This routine uses GetLocaleInfoEx() to parse short locale names like
* "de-DE", "fr-FR", etc. If those cannot be parsed correctly process falls
* Returns a malloc()'d string for the caller to free.
*/
static char *
-win32_langinfo(const char *ctype)
+win32_get_codeset(const char *ctype)
{
char *r = NULL;
char *codepage;
-
-#if defined(_MSC_VER)
uint32 cp;
WCHAR wctype[LOCALE_NAME_MAX_LENGTH];
}
}
else
-#endif
{
/*
* Locale format on Win32 is <Language>_<Country>.<CodePage>. For
freelocale(loc);
#else
- sys = win32_langinfo(ctype);
+ sys = win32_get_codeset(ctype);
#endif
if (!sys)