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 __CYGWIN__
|
||||
/* Cygwin provides its own version of setlocale to perform some more
|
||||
initialization work. It calls _setlocale_r, though. */
|
||||
char *
|
||||
|
@ -1032,7 +1031,6 @@ _DEFUN(setlocale, (category, locale),
|
|||
{
|
||||
return _setlocale_r (_REENT, category, locale);
|
||||
}
|
||||
#endif /* __CYGWIN__ */
|
||||
|
||||
struct lconv *
|
||||
_DEFUN_VOID(localeconv)
|
||||
|
|
|
@ -1557,35 +1557,6 @@ __set_locale_from_locale_alias (const char *locale, char *new_locale)
|
|||
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
|
||||
which really (think they) know what they are doing. */
|
||||
extern "C" void
|
||||
|
@ -1650,22 +1621,6 @@ void
|
|||
initial_setlocale ()
|
||||
{
|
||||
char *ret = _setlocale_r (_REENT, LC_CTYPE, "");
|
||||
if (ret && check_codepage (ret))
|
||||
if (ret)
|
||||
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_transactions:false,
|
||||
has_broken_alloc_console:false,
|
||||
has_always_all_codepages:false,
|
||||
has_localenames:false,
|
||||
has_fast_cwd: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_transactions:false,
|
||||
has_broken_alloc_console:false,
|
||||
has_always_all_codepages:false,
|
||||
has_localenames:false,
|
||||
has_fast_cwd: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_transactions:true,
|
||||
has_broken_alloc_console:false,
|
||||
has_always_all_codepages:true,
|
||||
has_localenames:true,
|
||||
has_fast_cwd: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_transactions:true,
|
||||
has_broken_alloc_console:true,
|
||||
has_always_all_codepages:true,
|
||||
has_localenames:true,
|
||||
has_fast_cwd: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_transactions:true,
|
||||
has_broken_alloc_console:true,
|
||||
has_always_all_codepages:true,
|
||||
has_localenames:true,
|
||||
has_fast_cwd: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_transactions:true,
|
||||
has_broken_alloc_console:true,
|
||||
has_always_all_codepages:true,
|
||||
has_localenames:true,
|
||||
has_fast_cwd: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_transactions:true,
|
||||
has_broken_alloc_console:true,
|
||||
has_always_all_codepages:true,
|
||||
has_localenames:true,
|
||||
has_fast_cwd:true,
|
||||
has_restricted_raw_disk_access:true,
|
||||
|
|
|
@ -18,7 +18,6 @@ struct wincaps
|
|||
unsigned has_gaa_largeaddress_bug : 1;
|
||||
unsigned has_transactions : 1;
|
||||
unsigned has_broken_alloc_console : 1;
|
||||
unsigned has_always_all_codepages : 1;
|
||||
unsigned has_localenames : 1;
|
||||
unsigned has_fast_cwd : 1;
|
||||
unsigned has_restricted_raw_disk_access : 1;
|
||||
|
@ -71,7 +70,6 @@ public:
|
|||
bool IMPLEMENT (has_gaa_largeaddress_bug)
|
||||
bool IMPLEMENT (has_transactions)
|
||||
bool IMPLEMENT (has_broken_alloc_console)
|
||||
bool IMPLEMENT (has_always_all_codepages)
|
||||
bool IMPLEMENT (has_localenames)
|
||||
bool IMPLEMENT (has_fast_cwd)
|
||||
bool IMPLEMENT (has_restricted_raw_disk_access)
|
||||
|
|
Loading…
Reference in New Issue