Drop has_always_all_codepages flag
This commit is contained in:
parent
e931b1a0eb
commit
ed0ff4b940
|
@ -1022,7 +1022,6 @@ _DEFUN(_localeconv_r, (data),
|
||||||
|
|
||||||
#ifndef _REENT_ONLY
|
#ifndef _REENT_ONLY
|
||||||
|
|
||||||
#ifndef __CYGWIN__
|
|
||||||
/* Cygwin provides its own version of setlocale to perform some more
|
/* Cygwin provides its own version of setlocale to perform some more
|
||||||
initialization work. It calls _setlocale_r, though. */
|
initialization work. It calls _setlocale_r, though. */
|
||||||
char *
|
char *
|
||||||
|
@ -1032,7 +1031,6 @@ _DEFUN(setlocale, (category, locale),
|
||||||
{
|
{
|
||||||
return _setlocale_r (_REENT, category, locale);
|
return _setlocale_r (_REENT, category, locale);
|
||||||
}
|
}
|
||||||
#endif /* __CYGWIN__ */
|
|
||||||
|
|
||||||
struct lconv *
|
struct lconv *
|
||||||
_DEFUN_VOID(localeconv)
|
_DEFUN_VOID(localeconv)
|
||||||
|
|
|
@ -1557,35 +1557,6 @@ __set_locale_from_locale_alias (const char *locale, char *new_locale)
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
static char *
|
|
||||||
check_codepage (char *ret)
|
|
||||||
{
|
|
||||||
if (!wincap.has_always_all_codepages ())
|
|
||||||
{
|
|
||||||
/* Prior to Windows Vista, many codepages are not installed by
|
|
||||||
default, or can be deinstalled. The following codepages require
|
|
||||||
that the respective conversion tables are installed into the OS.
|
|
||||||
So we check if they are installed and if not, setlocale should
|
|
||||||
fail. */
|
|
||||||
CPINFO cpi;
|
|
||||||
UINT cp = 0;
|
|
||||||
if (__mbtowc == __sjis_mbtowc)
|
|
||||||
cp = 932;
|
|
||||||
else if (__mbtowc == __eucjp_mbtowc)
|
|
||||||
cp = 20932;
|
|
||||||
else if (__mbtowc == __gbk_mbtowc)
|
|
||||||
cp = 936;
|
|
||||||
else if (__mbtowc == __kr_mbtowc)
|
|
||||||
cp = 949;
|
|
||||||
else if (__mbtowc == __big5_mbtowc)
|
|
||||||
cp = 950;
|
|
||||||
if (cp && !GetCPInfo (cp, &cpi)
|
|
||||||
&& GetLastError () == ERROR_INVALID_PARAMETER)
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Can be called via cygwin_internal (CW_INTERNAL_SETLOCALE) for application
|
/* Can be called via cygwin_internal (CW_INTERNAL_SETLOCALE) for application
|
||||||
which really (think they) know what they are doing. */
|
which really (think they) know what they are doing. */
|
||||||
extern "C" void
|
extern "C" void
|
||||||
|
@ -1650,22 +1621,6 @@ void
|
||||||
initial_setlocale ()
|
initial_setlocale ()
|
||||||
{
|
{
|
||||||
char *ret = _setlocale_r (_REENT, LC_CTYPE, "");
|
char *ret = _setlocale_r (_REENT, LC_CTYPE, "");
|
||||||
if (ret && check_codepage (ret))
|
if (ret)
|
||||||
internal_setlocale ();
|
internal_setlocale ();
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Like newlib's setlocale, but additionally check if the charset needs
|
|
||||||
OS support and the required codepage is actually installed. If codepage
|
|
||||||
is not available, revert to previous locale and return NULL. For details
|
|
||||||
about codepage availability, see the comment in check_codepage() above. */
|
|
||||||
extern "C" char *
|
|
||||||
setlocale (int category, const char *locale)
|
|
||||||
{
|
|
||||||
char old[(LC_MESSAGES + 1) * (ENCODING_LEN + 1/*"/"*/ + 1)];
|
|
||||||
if (locale && !wincap.has_always_all_codepages ())
|
|
||||||
stpcpy (old, _setlocale_r (_REENT, category, NULL));
|
|
||||||
char *ret = _setlocale_r (_REENT, category, locale);
|
|
||||||
if (ret && locale && !(ret = check_codepage (ret)))
|
|
||||||
_setlocale_r (_REENT, category, old);
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
|
|
|
@ -25,7 +25,6 @@ wincaps wincap_xpsp2 __attribute__((section (".cygwin_dll_common"), shared)) = {
|
||||||
has_gaa_largeaddress_bug:false,
|
has_gaa_largeaddress_bug:false,
|
||||||
has_transactions:false,
|
has_transactions:false,
|
||||||
has_broken_alloc_console:false,
|
has_broken_alloc_console:false,
|
||||||
has_always_all_codepages:false,
|
|
||||||
has_localenames:false,
|
has_localenames:false,
|
||||||
has_fast_cwd:false,
|
has_fast_cwd:false,
|
||||||
has_restricted_raw_disk_access:false,
|
has_restricted_raw_disk_access:false,
|
||||||
|
@ -53,7 +52,6 @@ wincaps wincap_2003 __attribute__((section (".cygwin_dll_common"), shared)) = {
|
||||||
has_gaa_largeaddress_bug:false,
|
has_gaa_largeaddress_bug:false,
|
||||||
has_transactions:false,
|
has_transactions:false,
|
||||||
has_broken_alloc_console:false,
|
has_broken_alloc_console:false,
|
||||||
has_always_all_codepages:false,
|
|
||||||
has_localenames:false,
|
has_localenames:false,
|
||||||
has_fast_cwd:false,
|
has_fast_cwd:false,
|
||||||
has_restricted_raw_disk_access:false,
|
has_restricted_raw_disk_access:false,
|
||||||
|
@ -81,7 +79,6 @@ wincaps wincap_vista __attribute__((section (".cygwin_dll_common"), shared)) = {
|
||||||
has_gaa_largeaddress_bug:true,
|
has_gaa_largeaddress_bug:true,
|
||||||
has_transactions:true,
|
has_transactions:true,
|
||||||
has_broken_alloc_console:false,
|
has_broken_alloc_console:false,
|
||||||
has_always_all_codepages:true,
|
|
||||||
has_localenames:true,
|
has_localenames:true,
|
||||||
has_fast_cwd:true,
|
has_fast_cwd:true,
|
||||||
has_restricted_raw_disk_access:true,
|
has_restricted_raw_disk_access:true,
|
||||||
|
@ -109,7 +106,6 @@ wincaps wincap_7 __attribute__((section (".cygwin_dll_common"), shared)) = {
|
||||||
has_gaa_largeaddress_bug:true,
|
has_gaa_largeaddress_bug:true,
|
||||||
has_transactions:true,
|
has_transactions:true,
|
||||||
has_broken_alloc_console:true,
|
has_broken_alloc_console:true,
|
||||||
has_always_all_codepages:true,
|
|
||||||
has_localenames:true,
|
has_localenames:true,
|
||||||
has_fast_cwd:true,
|
has_fast_cwd:true,
|
||||||
has_restricted_raw_disk_access:true,
|
has_restricted_raw_disk_access:true,
|
||||||
|
@ -137,7 +133,6 @@ wincaps wincap_8 __attribute__((section (".cygwin_dll_common"), shared)) = {
|
||||||
has_gaa_largeaddress_bug:false,
|
has_gaa_largeaddress_bug:false,
|
||||||
has_transactions:true,
|
has_transactions:true,
|
||||||
has_broken_alloc_console:true,
|
has_broken_alloc_console:true,
|
||||||
has_always_all_codepages:true,
|
|
||||||
has_localenames:true,
|
has_localenames:true,
|
||||||
has_fast_cwd:true,
|
has_fast_cwd:true,
|
||||||
has_restricted_raw_disk_access:true,
|
has_restricted_raw_disk_access:true,
|
||||||
|
@ -165,7 +160,6 @@ wincaps wincap_10 __attribute__((section (".cygwin_dll_common"), shared)) = {
|
||||||
has_gaa_largeaddress_bug:false,
|
has_gaa_largeaddress_bug:false,
|
||||||
has_transactions:true,
|
has_transactions:true,
|
||||||
has_broken_alloc_console:true,
|
has_broken_alloc_console:true,
|
||||||
has_always_all_codepages:true,
|
|
||||||
has_localenames:true,
|
has_localenames:true,
|
||||||
has_fast_cwd:true,
|
has_fast_cwd:true,
|
||||||
has_restricted_raw_disk_access:true,
|
has_restricted_raw_disk_access:true,
|
||||||
|
@ -193,7 +187,6 @@ wincaps wincap_10_1511 __attribute__((section (".cygwin_dll_common"), shared)) =
|
||||||
has_gaa_largeaddress_bug:false,
|
has_gaa_largeaddress_bug:false,
|
||||||
has_transactions:true,
|
has_transactions:true,
|
||||||
has_broken_alloc_console:true,
|
has_broken_alloc_console:true,
|
||||||
has_always_all_codepages:true,
|
|
||||||
has_localenames:true,
|
has_localenames:true,
|
||||||
has_fast_cwd:true,
|
has_fast_cwd:true,
|
||||||
has_restricted_raw_disk_access:true,
|
has_restricted_raw_disk_access:true,
|
||||||
|
|
|
@ -18,7 +18,6 @@ struct wincaps
|
||||||
unsigned has_gaa_largeaddress_bug : 1;
|
unsigned has_gaa_largeaddress_bug : 1;
|
||||||
unsigned has_transactions : 1;
|
unsigned has_transactions : 1;
|
||||||
unsigned has_broken_alloc_console : 1;
|
unsigned has_broken_alloc_console : 1;
|
||||||
unsigned has_always_all_codepages : 1;
|
|
||||||
unsigned has_localenames : 1;
|
unsigned has_localenames : 1;
|
||||||
unsigned has_fast_cwd : 1;
|
unsigned has_fast_cwd : 1;
|
||||||
unsigned has_restricted_raw_disk_access : 1;
|
unsigned has_restricted_raw_disk_access : 1;
|
||||||
|
@ -71,7 +70,6 @@ public:
|
||||||
bool IMPLEMENT (has_gaa_largeaddress_bug)
|
bool IMPLEMENT (has_gaa_largeaddress_bug)
|
||||||
bool IMPLEMENT (has_transactions)
|
bool IMPLEMENT (has_transactions)
|
||||||
bool IMPLEMENT (has_broken_alloc_console)
|
bool IMPLEMENT (has_broken_alloc_console)
|
||||||
bool IMPLEMENT (has_always_all_codepages)
|
|
||||||
bool IMPLEMENT (has_localenames)
|
bool IMPLEMENT (has_localenames)
|
||||||
bool IMPLEMENT (has_fast_cwd)
|
bool IMPLEMENT (has_fast_cwd)
|
||||||
bool IMPLEMENT (has_restricted_raw_disk_access)
|
bool IMPLEMENT (has_restricted_raw_disk_access)
|
||||||
|
|
Loading…
Reference in New Issue