diff options
author | Corinna Vinschen <corinna@vinschen.de> | 2009-03-31 13:42:58 +0400 |
---|---|---|
committer | Corinna Vinschen <corinna@vinschen.de> | 2009-03-31 13:42:58 +0400 |
commit | a33fa76fed558949f2fcf5219b7bee714f36899e (patch) | |
tree | 59f899896746b92a25a389cf133b07bf54182b22 /winsup/cygwin/ctype.cc | |
parent | 4bc42c05aa0921f57e401985458ef8e584fa8777 (diff) |
* ctype.cc: Remove implementation of ctype functions in favor of
pointer-based newlib implementation.
(_ctype_b): Declare.
(__ctype_cp): Move to newlib. Declare.
(__ctype_iso): Ditto.
(__set_ctype): Implement changing __ctype_ptr__. Only copy character
class data in applications built under older Cygwin.
* cygwin.din (__ctype_ptr__): Export.
* include/ctype.h: Remove in favor of newlib implementation.
* include/cygwin/config.h (__EXPORT): Define alongside __IMPORT.
* include/cygwin/version.h (CYGWIN_VERSION_CHECK_FOR_OLD_CTYPE):
Define check for old vs. new ctype implementation.
Bump API minor number.
Diffstat (limited to 'winsup/cygwin/ctype.cc')
-rw-r--r-- | winsup/cygwin/ctype.cc | 770 |
1 files changed, 23 insertions, 747 deletions
diff --git a/winsup/cygwin/ctype.cc b/winsup/cygwin/ctype.cc index 5d70b6118..e0d6e7162 100644 --- a/winsup/cygwin/ctype.cc +++ b/winsup/cygwin/ctype.cc @@ -4,745 +4,7 @@ extern "C" { #include <stdlib.h> #include <wctype.h> -#define _CTYPE_DATA_0_127 \ - _C, _C, _C, _C, _C, _C, _C, _C, \ - _C, _B|_C|_S, _C|_S, _C|_S, _C|_S, _C|_S, _C, _C, \ - _C, _C, _C, _C, _C, _C, _C, _C, \ - _C, _C, _C, _C, _C, _C, _C, _C, \ - _S|_B, _P, _P, _P, _P, _P, _P, _P, \ - _P, _P, _P, _P, _P, _P, _P, _P, \ - _N, _N, _N, _N, _N, _N, _N, _N, \ - _N, _N, _P, _P, _P, _P, _P, _P, \ - _P, _U|_X, _U|_X, _U|_X, _U|_X, _U|_X, _U|_X, _U, \ - _U, _U, _U, _U, _U, _U, _U, _U, \ - _U, _U, _U, _U, _U, _U, _U, _U, \ - _U, _U, _U, _P, _P, _P, _P, _P, \ - _P, _L|_X, _L|_X, _L|_X, _L|_X, _L|_X, _L|_X, _L, \ - _L, _L, _L, _L, _L, _L, _L, _L, \ - _L, _L, _L, _L, _L, _L, _L, _L, \ - _L, _L, _L, _P, _P, _P, _P, _C - -#define _CTYPE_DATA_128_256 \ - 0, 0, 0, 0, 0, 0, 0, 0, \ - 0, 0, 0, 0, 0, 0, 0, 0, \ - 0, 0, 0, 0, 0, 0, 0, 0, \ - 0, 0, 0, 0, 0, 0, 0, 0, \ - 0, 0, 0, 0, 0, 0, 0, 0, \ - 0, 0, 0, 0, 0, 0, 0, 0, \ - 0, 0, 0, 0, 0, 0, 0, 0, \ - 0, 0, 0, 0, 0, 0, 0, 0, \ - 0, 0, 0, 0, 0, 0, 0, 0, \ - 0, 0, 0, 0, 0, 0, 0, 0, \ - 0, 0, 0, 0, 0, 0, 0, 0, \ - 0, 0, 0, 0, 0, 0, 0, 0, \ - 0, 0, 0, 0, 0, 0, 0, 0, \ - 0, 0, 0, 0, 0, 0, 0, 0, \ - 0, 0, 0, 0, 0, 0, 0, 0, \ - 0, 0, 0, 0, 0, 0, 0, 0 - -/* FIXME: These tables should rather be defined in newlib and we should - switch to the newer __ctype_ptr method from newlib for new applications. */ - -static char __ctype_default[128] = { _CTYPE_DATA_128_256 }; -static char __ctype_iso[15][128] = { - /* ISO-8859-1 */ - { _C, _C, _C, _C, _C, _C, _C, _C, - _C, _C, _C, _C, _C, _C, _C, _C, - _C, _C, _C, _C, _C, _C, _C, _C, - _C, _C, _C, _C, _C, _C, _C, _C, - _S|_B, _P, _P, _P, _P, _P, _P, _P, - _P, _P, _P, _P, _P, _P, _P, _P, - _P, _P, _P, _P, _P, _P, _P, _P, - _P, _P, _P, _P, _P, _P, _P, _P, - _U, _U, _U, _U, _U, _U, _U, _U, - _U, _U, _U, _U, _U, _U, _U, _U, - _U, _U, _U, _U, _U, _U, _U, _P, - _U, _U, _U, _U, _U, _U, _U, _L, - _L, _L, _L, _L, _L, _L, _L, _L, - _L, _L, _L, _L, _L, _L, _L, _L, - _L, _L, _L, _L, _L, _L, _L, _P, - _L, _L, _L, _L, _L, _L, _L, _L }, - /* ISO-8859-2 */ - { _C, _C, _C, _C, _C, _C, _C, _C, - _C, _C, _C, _C, _C, _C, _C, _C, - _C, _C, _C, _C, _C, _C, _C, _C, - _C, _C, _C, _C, _C, _C, _C, _C, - _S|_B, _U, _P, _U, _P, _U, _U, _P, - _P, _U, _U, _U, _U, _P, _U, _U, - _P, _L, _P, _L, _P, _L, _L, _P, - _P, _L, _L, _L, _L, _P, _L, _L, - _U, _U, _U, _U, _U, _U, _U, _U, - _U, _U, _U, _U, _U, _U, _U, _U, - _U, _U, _U, _U, _U, _U, _U, _P, - _U, _U, _U, _U, _U, _U, _U, _L, - _L, _L, _L, _L, _L, _L, _L, _L, - _L, _L, _L, _L, _L, _L, _L, _L, - _L, _L, _L, _L, _L, _L, _L, _P, - _L, _L, _L, _L, _L, _L, _L, _L }, - /* ISO-8859-3 */ - { _C, _C, _C, _C, _C, _C, _C, _C, - _C, _C, _C, _C, _C, _C, _C, _C, - _C, _C, _C, _C, _C, _C, _C, _C, - _C, _C, _C, _C, _C, _C, _C, _C, - _S|_B, _U, _P, _P, _P, 0, _U, _P, - _P, _U, _U, _U, _U, _P, 0, _U, - _P, _L, _P, _P, _P, _L, _L, _P, - _P, _L, _L, _L, _L, _P, 0, _L, - _U, _U, _U, 0, _U, _U, _U, _U, - _U, _U, _U, _U, _U, _U, _U, _U, - 0, _U, _U, _U, _U, _U, _U, _P, - _U, _U, _U, _U, _U, _U, _U, _L, - _L, _L, _L, 0, _L, _L, _L, _L, - _L, _L, _L, _L, _L, _L, _L, _L, - 0, _L, _L, _L, _L, _L, _L, _P, - _L, _L, _L, _L, _L, _L, _L, _P }, - /* ISO-8859-4 */ - { _C, _C, _C, _C, _C, _C, _C, _C, - _C, _C, _C, _C, _C, _C, _C, _C, - _C, _C, _C, _C, _C, _C, _C, _C, - _C, _C, _C, _C, _C, _C, _C, _C, - _S|_B, _U, _L, _U, _P, _U, _U, _P, - _P, _U, _U, _U, _U, _P, _U, _P, - _P, _L, _P, _L, _P, _L, _L, _P, - _P, _L, _L, _L, _L, _P, _L, _L, - _U, _U, _U, _U, _U, _U, _U, _U, - _U, _U, _U, _U, _U, _U, _U, _U, - _U, _U, _U, _U, _U, _U, _U, _P, - _U, _U, _U, _U, _U, _U, _U, _L, - _L, _L, _L, _L, _L, _L, _L, _L, - _L, _L, _L, _L, _L, _L, _L, _L, - _L, _L, _L, _L, _L, _L, _L, _P, - _L, _L, _L, _L, _L, _L, _L, _L }, - /* ISO-8859-5 */ - { _C, _C, _C, _C, _C, _C, _C, _C, - _C, _C, _C, _C, _C, _C, _C, _C, - _C, _C, _C, _C, _C, _C, _C, _C, - _C, _C, _C, _C, _C, _C, _C, _C, - _S|_B, _U, _U, _U, _U, _U, _U, _U, - _U, _U, _U, _U, _U, _P, _U, _U, - _U, _U, _U, _U, _U, _U, _U, _U, - _U, _U, _U, _U, _U, _U, _U, _U, - _U, _U, _U, _U, _U, _U, _U, _U, - _U, _U, _U, _U, _U, _U, _U, _U, - _L, _L, _L, _L, _L, _L, _L, _L, - _L, _L, _L, _L, _L, _L, _L, _L, - _L, _L, _L, _L, _L, _L, _L, _L, - _L, _L, _L, _L, _L, _L, _L, _L, - _P, _L, _L, _L, _L, _L, _L, _L, - _L, _L, _L, _L, _L, _P, _L, _L }, - /* ISO-8859-6 */ - { _C, _C, _C, _C, _C, _C, _C, _C, - _C, _C, _C, _C, _C, _C, _C, _C, - _C, _C, _C, _C, _C, _C, _C, _C, - _C, _C, _C, _C, _C, _C, _C, _C, - _S|_B, 0, 0, 0, _P, 0, 0, 0, - 0, 0, 0, 0, _P, _P, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, _P, 0, 0, 0, _P, - 0, _L, _L, _L, _L, _L, _L, _L, - _L, _L, _L, _L, _L, _L, _L, _L, - 0, _L, _L, _L, _L, _L, _L, _L, - _L, _L, _L, 0, 0, 0, 0, 0, - _L, _L, _L, _L, _L, _L, _L, _L, - _L, _L, _L, _P, _P, _P, _P, _P, - _P, _P, _P, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0 }, - /* ISO-8859-7 */ - { _C, _C, _C, _C, _C, _C, _C, _C, - _C, _C, _C, _C, _C, _C, _C, _C, - _C, _C, _C, _C, _C, _C, _C, _C, - _C, _C, _C, _C, _C, _C, _C, _C, - _S|_B, _P, _P, _P, _P, _P, _P, _P, - _P, _P, _P, _P, _P, _P, _P, _P, - _P, _P, _P, _P, _P, _P, _U, _P, - _U, _U, _U, _P, _U, _P, _U, _U, - _L, _U, _U, _U, _U, _U, _U, _U, - _U, _U, _U, _U, _U, _U, _U, _U, - _U, _U, _U, _U, _U, _U, _U, _U, - _U, _U, _U, _U, _L, _L, _L, _L, - _L, _L, _L, _L, _L, _L, _L, _L, - _L, _L, _L, _L, _L, _L, _L, _L, - _L, _L, _L, _L, _L, _L, _L, _L, - _L, _L, _L, _L, _L, _L, _L, _P }, - /* ISO-8859-8 */ - { _C, _C, _C, _C, _C, _C, _C, _C, - _C, _C, _C, _C, _C, _C, _C, _C, - _C, _C, _C, _C, _C, _C, _C, _C, - _C, _C, _C, _C, _C, _C, _C, _C, - _S|_B, 0, _P, _P, _P, _P, _P, _P, - _P, _P, _P, _P, _P, _P, _P, _P, - _P, _P, _P, _P, _P, _P, _P, _P, - _P, _P, _P, _P, _P, _P, _P, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, _L, - _L, _L, _L, _L, _L, _L, _L, _L, - _L, _L, _L, _L, _L, _L, _L, _L, - _L, _L, _L, _L, _L, _L, _L, _L, - _L, _L, _L, 0, 0, _P, _P, 0 }, - /* ISO-8859-9 */ - { _C, _C, _C, _C, _C, _C, _C, _C, - _C, _C, _C, _C, _C, _C, _C, _C, - _C, _C, _C, _C, _C, _C, _C, _C, - _C, _C, _C, _C, _C, _C, _C, _C, - _S|_B, _P, _P, _P, _P, _P, _P, _P, - _P, _P, _P, _P, _P, _P, _P, _P, - _P, _P, _P, _P, _P, _P, _P, _P, - _P, _P, _P, _P, _P, _P, _P, _P, - _U, _U, _U, _U, _U, _U, _U, _U, - _U, _U, _U, _U, _U, _U, _U, _U, - _U, _U, _U, _U, _U, _U, _U, _P, - _U, _U, _U, _U, _U, _U, _U, _L, - _L, _L, _L, _L, _L, _L, _L, _L, - _L, _L, _L, _L, _L, _L, _L, _L, - _L, _L, _L, _L, _L, _L, _L, _P, - _L, _L, _L, _L, _L, _L, _L, _L }, - /* ISO-8859-10 */ - { _C, _C, _C, _C, _C, _C, _C, _C, - _C, _C, _C, _C, _C, _C, _C, _C, - _C, _C, _C, _C, _C, _C, _C, _C, - _C, _C, _C, _C, _C, _C, _C, _C, - _S|_B, _U, _U, _U, _U, _U, _U, _P, - _U, _U, _U, _U, _U, _P, _U, _U, - _P, _L, _L, _L, _L, _L, _L, _P, - _L, _L, _L, _L, _L, _P, _L, _L, - _U, _U, _U, _U, _U, _U, _U, _U, - _U, _U, _U, _U, _U, _U, _U, _U, - _U, _U, _U, _U, _U, _U, _U, _U, - _U, _U, _U, _U, _U, _U, _U, _L, - _L, _L, _L, _L, _L, _L, _L, _L, - _L, _L, _L, _L, _L, _L, _L, _L, - _L, _L, _L, _L, _L, _L, _L, _L, - _L, _L, _L, _L, _L, _L, _L, _L }, - /* ISO-8859-11 */ - { _C, _C, _C, _C, _C, _C, _C, _C, - _C, _C, _C, _C, _C, _C, _C, _C, - _C, _C, _C, _C, _C, _C, _C, _C, - _C, _C, _C, _C, _C, _C, _C, _C, - _S|_B, _L, _L, _L, _L, _L, _L, _L, - _L, _L, _L, _L, _L, _L, _L, _L, - _L, _L, _L, _L, _L, _L, _L, _L, - _L, _L, _L, _L, _L, _L, _L, _L, - _L, _L, _L, _L, _L, _L, _L, _L, - _L, _L, _L, _L, _L, _L, _L, _L, - _L, _P, _L, _L, _P, _P, _P, _P, - _P, _P, _P, 0, 0, 0, 0, _P, - _L, _L, _L, _L, _L, _L, _L, _P, - _P, _P, _P, _P, _P, _P, _P, _L, - _L, _L, _L, _L, _L, _L, _L, _L, - _L, _L, _L, _L, 0, 0, 0, 0 }, - /* ISO-8859-13 */ - { _C, _C, _C, _C, _C, _C, _C, _C, - _C, _C, _C, _C, _C, _C, _C, _C, - _C, _C, _C, _C, _C, _C, _C, _C, - _C, _C, _C, _C, _C, _C, _C, _C, - _S|_B, _P, _P, _P, _P, _P, _P, _P, - _P, _P, _U, _P, _P, _P, _P, _P, - _P, _P, _P, _P, _P, _P, _P, _P, - _P, _P, _L, _P, _P, _P, _P, _P, - _U, _U, _U, _U, _U, _U, _U, _U, - _U, _U, _U, _U, _U, _U, _U, _U, - _U, _U, _U, _U, _U, _U, _U, _P, - _U, _U, _U, _U, _U, _U, _U, _L, - _L, _L, _L, _L, _L, _L, _L, _L, - _L, _L, _L, _L, _L, _L, _L, _L, - _L, _L, _L, _L, _L, _L, _L, _P, - _L, _L, _L, _L, _L, _L, _L, _P }, - /* ISO-8859-14 */ - { _C, _C, _C, _C, _C, _C, _C, _C, - _C, _C, _C, _C, _C, _C, _C, _C, - _C, _C, _C, _C, _C, _C, _C, _C, - _C, _C, _C, _C, _C, _C, _C, _C, - _S|_B, _U, _L, _P, _U, _L, _U, _P, - _U, _P, _U, _L, _U, _P, _P, _U, - _U, _L, _U, _L, _U, _L, _P, _U, - _L, _L, _L, _U, _L, _U, _L, _L, - _U, _U, _U, _U, _U, _U, _U, _U, - _U, _U, _U, _U, _U, _U, _U, _U, - _U, _U, _U, _U, _U, _U, _U, _U, - _U, _U, _U, _U, _U, _U, _U, _L, - _L, _L, _L, _L, _L, _L, _L, _L, - _L, _L, _L, _L, _L, _L, _L, _L, - _L, _L, _L, _L, _L, _L, _L, _L, - _L, _L, _L, _L, _L, _L, _L, _L }, - /* ISO-8859-15 */ - { _C, _C, _C, _C, _C, _C, _C, _C, - _C, _C, _C, _C, _C, _C, _C, _C, - _C, _C, _C, _C, _C, _C, _C, _C, - _C, _C, _C, _C, _C, _C, _C, _C, - _S|_B, _P, _P, _P, _P, _P, _P, _P, - _P, _P, _P, _P, _P, _P, _P, _P, - _P, _P, _P, _P, _P, _P, _P, _P, - _P, _P, _P, _P, _P, _P, _P, _P, - _U, _U, _U, _U, _U, _U, _U, _U, - _U, _U, _U, _U, _U, _U, _U, _U, - _U, _U, _U, _U, _U, _U, _U, _P, - _U, _U, _U, _U, _U, _U, _U, _L, - _L, _L, _L, _L, _L, _L, _L, _L, - _L, _L, _L, _L, _L, _L, _L, _L, - _L, _L, _L, _L, _L, _L, _L, _P, - _L, _L, _L, _L, _L, _L, _L, _L }, - /* ISO-8859-16 */ - { _C, _C, _C, _C, _C, _C, _C, _C, - _C, _C, _C, _C, _C, _C, _C, _C, - _C, _C, _C, _C, _C, _C, _C, _C, - _C, _C, _C, _C, _C, _C, _C, _C, - _S|_B, _U, _L, _U, _P, _P, _U, _P, - _L, _P, _U, _P, _U, _P, _L, _U, - _P, _P, _U, _U, _U, _P, _P, _P, - _L, _L, _L, _P, _U, _L, _U, _L, - _U, _U, _U, _U, _U, _U, _U, _U, - _U, _U, _U, _U, _U, _U, _U, _U, - _U, _U, _U, _U, _U, _U, _U, _U, - _U, _U, _U, _U, _U, _U, _U, _L, - _L, _L, _L, _L, _L, _L, _L, _L, - _L, _L, _L, _L, _L, _L, _L, _L, - _L, _L, _L, _L, _L, _L, _L, _L, - _L, _L, _L, _L, _L, _L, _L, _L } -}; -static char __ctype_cp[22][128] = { - /* CP437 */ - { _U, _L, _L, _L, _L, _L, _L, _L, - _L, _L, _L, _L, _L, _L, _U, _U, - _U, _L, _U, _L, _L, _L, _L, _L, - _L, _U, _U, _P, _P, _P, _P, _P, - _L, _L, _L, _L, _L, _L, _P, _P, - _P, _P, _P, _P, _P, _P, _P, _P, - _P, _P, _P, _P, _P, _P, _P, _P, - _P, _P, _P, _P, _P, _P, _P, _P, - _P, _P, _P, _P, _P, _P, _P, _P, - _P, _P, _P, _P, _P, _P, _P, _P, - _P, _P, _P, _P, _P, _P, _P, _P, - _P, _P, _P, _P, _P, _P, _P, _P, - _L, _L, _U, _L, _U, _L, _P, _L, - _U, _U, _U, _L, _P, _L, _L, _P, - _P, _P, _P, _P, _P, _P, _P, _P, - _P, _P, _P, _P, _P, _P, _P, _S|_B }, - /* CP720 */ - { 0, 0, _L, _L, 0, _L, 0, _L, - _L, _L, _L, _L, _L, 0, 0, 0, - 0, _P, _P, _L, _P, _P, _L, _L, - _L, _L, _L, _L, _L, _L, _L, _L, - 0, _L, _L, _L, _L, _L, _L, _L, - _L, _L, _L, _L, _L, _L, _P, _P, - _P, _P, _P, _P, _P, _P, _P, _P, - _P, _P, _P, _P, _P, _P, _P, _P, - _P, _P, _P, _P, _P, _P, _P, _P, - _P, _P, _P, _P, _P, _P, _P, _P, - _P, _P, _P, _P, _P, _P, _P, _P, - _P, _P, _P, _P, _P, _P, _P, _P, - _L, _L, _L, _L, _L, _L, _L, _L, - _L, _L, _L, _L, _L, _L, _L, _L, - _P, _P, _P, _P, _P, _P, _P, _P, - _P, _P, _P, _P, _P, _P, _P, _S|_B }, - /* CP737 */ - { _U, _U, _U, _U, _U, _U, _U, _U, - _U, _U, _U, _U, _U, _U, _U, _U, - _U, _U, _U, _U, _U, _U, _U, _U, - _L, _L, _L, _L, _L, _L, _L, _L, - _L, _L, _L, _L, _L, _L, _L, _L, - _L, _L, _L, _L, _L, _L, _L, _L, - _P, _P, _P, _P, _P, _P, _P, _P, - _P, _P, _P, _P, _P, _P, _P, _P, - _P, _P, _P, _P, _P, _P, _P, _P, - _P, _P, _P, _P, _P, _P, _P, _P, - _P, _P, _P, _P, _P, _P, _P, _P, - _P, _P, _P, _P, _P, _P, _P, _P, - _L, _L, _L, _L, _L, _L, _L, _L, - _L, _L, _U, _U, _U, _U, _U, _U, - _U, _P, _P, _P, _P, _U, _U, _P, - _P, _P, _P, _P, _P, _P, _P, _S|_B }, - /* CP775 */ - { _U, _L, _L, _L, _L, _L, _L, _L, - _L, _L, _U, _L, _L, _U, _U, _U, - _U, _L, _U, _L, _L, _U, _P, _U, - _L, _U, _U, _P, _P, _P, _P, _P, - _U, _U, _L, _U, _L, _L, _P, _P, - _P, _P, _P, _P, _P, _U, _P, _P, - _P, _P, _P, _P, _P, _U, _U, _U, - _U, _P, _P, _P, _P, _U, _U, _P, - _P, _P, _P, _P, _P, _P, _U, _U, - _P, _P, _P, _P, _P, _P, _P, _U, - _L, _L, _L, _L, _L, _L, _L, _L, - _L, _P, _P, _P, _P, _P, _P, _P, - _U, _L, _U, _U, _L, _U, _L, _L, - _U, _L, _U, _L, _L, _U, _U, _P, - _P, _P, _P, _P, _P, _P, _P, _P, - _P, _P, _P, _P, _P, _P, _P, _S|_B }, - /* CP850 */ - { _U, _L, _L, _L, _L, _L, _L, _L, - _L, _L, _L, _L, _L, _L, _U, _U, - _U, _L, _U, _L, _L, _L, _L, _L, - _L, _U, _U, _L, _P, _U, _P, _P, - _L, _L, _L, _L, _L, _U, _P, _P, - _P, _P, _P, _P, _P, _P, _P, _P, - _P, _P, _P, _P, _P, _U, _U, _U, - _P, _P, _P, _P, _P, _P, _P, _P, - _P, _P, _P, _P, _P, _P, _L, _U, - _P, _P, _P, _P, _P, _P, _P, _P, - _L, _U, _U, _U, _U, _L, _U, _U, - _U, _P, _P, _P, _P, _P, _U, _P, - _U, _L, _U, _U, _L, _U, _L, _U, - _L, _U, _U, _U, _L, _U, _P, _P, - _P, _P, _P, _P, _P, _P, _P, _P, - _P, _P, _P, _P, _P, _P, _P, _S|_B }, - /* CP852 */ - { _U, _L, _L, _L, _L, _L, _L, _L, - _L, _L, _U, _L, _L, _U, _U, _U, - _U, _U, _L, _L, _L, _U, _L, _U, - _L, _U, _U, _U, _L, _U, _P, _L, - _L, _L, _L, _L, _U, _L, _U, _L, - _U, _L, _P, _L, _U, _L, _P, _P, - _P, _P, _P, _P, _P, _U, _U, _U, - _U, _P, _P, _P, _P, _U, _L, _P, - _P, _P, _P, _P, _P, _P, _U, _L, - _P, _P, _P, _P, _P, _P, _P, _P, - _L, _U, _U, _U, _L, _U, _U, _U, - _L, _P, _P, _P, _P, _U, _U, _P, - _U, _L, _U, _U, _L, _L, _U, _L, - _U, _U, _L, _U, _L, _U, _L, _P, - _P, _P, _P, _P, _P, _P, _P, _P, - _P, _P, _P, _L, _U, _L, _P, _S|_B }, - /* CP855 */ - { _L, _U, _L, _U, _L, _U, _L, _U, - _L, _U, _L, _U, _L, _U, _L, _U, - _L, _U, _L, _U, _L, _U, _L, _U, - _L, _U, _L, _U, _L, _U, _L, _U, - _L, _U, _L, _U, _L, _U, _L, _U, - _L, _U, _L, _U, _L, _U, _P, _P, - _P, _P, _P, _P, _P, _L, _U, _L, - _U, _P, _P, _P, _P, _L, _U, _P, - _P, _P, _P, _P, _P, _P, _L, _U, - _P, _P, _P, _P, _P, _P, _P, _P, - _L, _U, _L, _U, _L, _U, _L, _U, - _L, _P, _P, _P, _P, _U, _L, _P, - _U, _L, _U, _L, _U, _L, _U, _L, - _U, _L, _U, _L, _U, _L, _U, _P, - _P, _L, _U, _L, _U, _L, _U, _L, - _U, _L, _U, _L, _U, _P, _P, _S|_B }, - /* CP857 */ - { _U, _L, _L, _L, _L, _L, _L, _L, - _L, _L, _L, _L, _L, _L, _U, _U, - _U, _L, _U, _L, _L, _L, _L, _L, - _U, _U, _U, _L, _P, _U, _U, _L, - _L, _L, _L, _L, _L, _U, _U, _L, - _P, _P, _P, _P, _P, _P, _P, _P, - _P, _P, _P, _P, _U, _U, _U, _P, - _P, _P, _P, _P, _P, _P, _P, _P, - _P, _P, _P, _P, _P, _P, _L, _U, - _P, _P, _P, _P, _P, _P, _P, _P, - _P, _P, _U, _U, _U, _L, _U, _U, - _U, _P, _P, _P, _P, _P, _U, _P, - _U, _L, _U, _U, _L, _U, _L, _L, - _P, _U, _U, _U, _L, _L, _P, _P, - _P, _P, _L, _P, _P, _P, _P, _P, - _P, _P, _P, _P, _P, _P, _P, _S|_B }, - /* CP858 */ - { _U, _L, _L, _L, _L, _L, _L, _L, - _L, _L, _L, _L, _L, _L, _U, _U, - _U, _L, _U, _L, _L, _L, _L, _L, - _L, _U, _U, _L, _P, _U, _P, _P, - _L, _L, _L, _L, _L, _U, _P, _P, - _P, _P, _P, _P, _P, _P, _P, _P, - _P, _P, _P, _P, _P, _U, _U, _U, - _P, _P, _P, _P, _P, _P, _P, _P, - _P, _P, _P, _P, _P, _P, _L, _U, - _P, _P, _P, _P, _P, _P, _P, _P, - _L, _U, _U, _U, _U, _P, _U, _U, - _U, _P, _P, _P, _P, _P, _U, _P, - _U, _L, _U, _U, _L, _U, _L, _U, - _L, _U, _U, _U, _L, _U, _P, _P, - _P, _P, _P, _P, _P, _P, _P, _P, - _P, _P, _P, _P, _P, _P, _P, _S|_B }, - /* CP862 */ - { _L, _L, _L, _L, _L, _L, _L, _L, - _L, _L, _L, _L, _L, _L, _L, _L, - _L, _L, _L, _L, _L, _L, _L, _L, - _L, _L, _L, _P, _P, _P, _P, _P, - _L, _L, _L, _L, _L, _U, _P, _P, - _P, _P, _P, _P, _P, _P, _P, _P, - _P, _P, _P, _P, _P, _P, _P, _P, - _P, _P, _P, _P, _P, _P, _P, _P, - _P, _P, _P, _P, _P, _P, _P, _P, - _P, _P, _P, _P, _P, _P, _P, _P, - _P, _P, _P, _P, _P, _P, _P, _P, - _P, _P, _P, _P, _P, _P, _P, _P, - _L, _L, _U, _L, _U, _L, _P, _L, - _U, _U, _U, _L, _P, _L, _L, _P, - _P, _P, _P, _P, _P, _P, _P, _P, - _P, _P, _P, _P, _P, _P, _P, _S|_B }, - /* CP866 */ - { _U, _U, _U, _U, _U, _U, _U, _U, - _U, _U, _U, _U, _U, _U, _U, _U, - _U, _U, _U, _U, _U, _U, _U, _U, - _U, _U, _U, _U, _U, _U, _U, _U, - _L, _L, _L, _L, _L, _L, _L, _L, - _L, _L, _L, _L, _L, _L, _L, _L, - _P, _P, _P, _P, _P, _P, _P, _P, - _P, _P, _P, _P, _P, _P, _P, _P, - _P, _P, _P, _P, _P, _P, _P, _P, - _P, _P, _P, _P, _P, _P, _P, _P, - _P, _P, _P, _P, _P, _P, _P, _P, - _P, _P, _P, _P, _P, _P, _P, _P, - _L, _L, _L, _L, _L, _L, _L, _L, - _L, _L, _L, _L, _L, _L, _L, _L, - _U, _L, _U, _L, _U, _L, _U, _L, - _P, _P, _P, _P, _P, _P, _P, _S|_B }, - /* CP874 */ - { _P, 0, 0, 0, 0, _P, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, _P, _P, _P, _P, _P, _P, _P, - 0, 0, 0, 0, 0, 0, 0, 0, - _S|_B, _L, _L, _L, _L, _L, _L, _L, - _L, _L, _L, _L, _L, _L, _L, _L, - _L, _L, _L, _L, _L, _L, _L, _L, - _L, _L, _L, _L, _L, _L, _L, _L, - _L, _L, _L, _L, _L, _L, _L, _L, - _L, _L, _L, _L, _L, _L, _L, _L, - _L, _L, _L, _L, _L, _L, _L, _L, - _L, _L, _L, 0, 0, 0, 0, _P, - _L, _L, _L, _L, _L, _L, _L, _L, - _L, _L, _L, _L, _L, _L, _L, _L, - _P, _P, _P, _P, _P, _P, _P, _P, - _P, _P, _L, _L, 0, 0, 0, 0 }, - /* CP1125 */ - { _U, _U, _U, _U, _U, _U, _U, _U, - _U, _U, _U, _U, _U, _U, _U, _U, - _U, _U, _U, _U, _U, _U, _U, _U, - _U, _U, _U, _U, _U, _U, _U, _U, - _L, _L, _L, _L, _L, _L, _L, _L, - _L, _L, _L, _L, _L, _L, _L, _L, - _P, _P, _P, _P, _P, _P, _P, _P, - _P, _P, _P, _P, _P, _P, _P, _P, - _P, _P, _P, _P, _P, _P, _P, _P, - _P, _P, _P, _P, _P, _P, _P, _P, - _P, _P, _P, _P, _P, _P, _P, _P, - _P, _P, _P, _P, _P, _P, _P, _P, - _L, _L, _L, _L, _L, _L, _L, _L, - _L, _L, _L, _L, _L, _L, _L, _L, - _U, _L, _U, _L, _U, _L, _U, _L, - _U, _L, _P, _P, _P, _P, _P, _S|_B }, - /* CP1250 */ - { _P, 0, _P, 0, _P, _P, _P, _P, - 0, _P, _U, _P, _U, _U, _U, _U, - 0, _P, _P, _P, _P, _P, _P, _P, - 0, _P, _L, _P, _L, _L, _L, _L, - _S|_B, _P, _P, _U, _P, _U, _P, _P, - _P, _P, _U, _P, _P, _P, _P, _U, - _P, _P, _P, _L, _P, _P, _P, _P, - _P, _L, _L, _P, _U, _P, _L, _L, - _U, _U, _U, _U, _U, _U, _U, _U, - _U, _U, _U, _U, _U, _U, _U, _U, - _U, _U, _U, _U, _U, _U, _U, _P, - _U, _U, _U, _U, _U, _U, _U, _L, - _L, _L, _L, _L, _L, _L, _L, _L, - _L, _L, _L, _L, _L, _L, _L, _L, - _L, _L, _L, _L, _L, _L, _L, _P, - _L, _L, _L, _L, _L, _L, _L, _P }, - /* CP1251 */ - { _U, _U, _P, _L, _P, _P, _P, _P, - _P, _P, _U, _P, _U, _U, _U, _U, - _L, _P, _P, _P, _P, _P, _P, _P, - _L, _P, _L, _L, _L, _L, _P, _U, - _S|_B, _U, _L, _U, _P, _U, _P, _P, - _U, _P, _U, _P, _P, _P, _P, _U, - _P, _P, _U, _L, _L, _P, _P, _P, - _L, _P, _L, _P, _L, _U, _L, _L, - _U, _U, _U, _U, _U, _U, _U, _U, - _U, _U, _U, _U, _U, _U, _U, _U, - _U, _U, _U, _U, _U, _U, _U, _U, - _U, _U, _U, _U, _U, _U, _U, _U, - _L, _L, _L, _L, _L, _L, _L, _L, - _L, _L, _L, _L, _L, _L, _L, _L, - _L, _L, _L, _L, _L, _L, _L, _L, - _L, _L, _L, _L, _L, _L, _L, _L }, - /* CP1252 */ - { _P, 0, _P, _L, _P, _P, _P, _P, - _P, _P, _U, _P, _U, _U, 0, 0, - 0, _P, _P, _P, _P, _P, _P, _P, - _P, _P, _L, _P, _L, 0, _L, _U, - _S|_B, _P, _P, _P, _P, _P, _P, _P, - _P, _P, _P, _P, _P, _P, _P, _P, - _P, _P, _P, _P, _P, _P, _P, _P, - _P, _P, _P, _P, _P, _P, _P, _P, - _U, _U, _U, _U, _U, _U, _U, _U, - _U, _U, _U, _U, _U, _U, _U, _U, - _U, _U, _U, _U, _U, _U, _U, _P, - _U, _U, _U, _U, _U, _U, _U, _L, - _L, _L, _L, _L, _L, _L, _L, _L, - _L, _L, _L, _L, _L, _L, _L, _L, - _L, _L, _L, _L, _L, _L, _L, _P, - _L, _L, _L, _L, _L, _L, _L, _L }, - /* CP1253 */ - { _P, 0, _P, _L, _P, _P, _P, _P, - 0, _P, 0, _P, 0, 0, 0, 0, - 0, _P, _P, _P, _P, _P, _P, _P, - 0, _P, _P, 0, 0, 0, 0, 0, - _S|_B, _P, _U, _P, _P, _P, _P, _P, - _P, _P, 0, _P, _P, _P, _P, _P, - _P, _P, _P, _P, _P, _P, _P, _P, - _U, _U, _U, _P, _U, _P, _U, _U, - _L, _U, _U, _U, _U, _U, _U, _U, - _U, _U, _U, _U, _U, _U, _U, _U, - _U, _U, _U, _U, _U, _U, _U, _U, - _U, _U, _U, _U, _L, _L, _L, _L, - _L, _L, _L, _L, _L, _L, _L, _L, - _L, _L, _L, _L, _L, _L, _L, _L, - _L, _L, _L, _L, _L, _L, _L, _L, - _L, _L, _L, _L, _L, _L, _L, _L }, - /* CP1254 */ - { _P, 0, _P, _L, _P, _P, _P, _P, - _P, _P, _U, _P, _U, 0, 0, 0, - 0, _P, _P, _P, _P, _P, _P, _P, - _P, _P, _L, _P, _L, 0, 0, _U, - _S|_B, _P, _P, _P, _P, _P, _P, _P, - _P, _P, _P, _P, _P, _P, _P, _P, - _P, _P, _P, _P, _P, _P, _P, _P, - _P, _P, _P, _P, _P, _P, _P, _P, - _U, _U, _U, _U, _U, _U, _U, _U, - _U, _U, _U, _U, _U, _U, _U, _U, - _U, _U, _U, _U, _U, _U, _U, _P, - _U, _U, _U, _U, _U, _U, _U, _L, - _L, _L, _L, _L, _L, _L, _L, _L, - _L, _L, _L, _L, _L, _L, _L, _L, - _L, _L, _L, _L, _L, _L, _L, _P, - _L, _L, _L, _L, _L, _L, _L, _L }, - /* CP1255 */ - { _P, 0, _P, _L, _P, _P, _P, _P, - _P, _P, 0, _P, 0, 0, 0, 0, - 0, _P, _P, _P, _P, _P, _P, _P, - _P, _P, 0, _P, 0, 0, 0, 0, - _S|_B, _P, _P, _P, _P, _P, _P, _P, - _P, _P, _P, _P, _P, _P, _P, _P, - _P, _P, _P, _P, _P, _P, _P, _P, - _P, _P, _P, _P, _P, _P, _P, _P, - _P, _P, _P, _P, _P, _P, _P, _P, - _P, _P, _P, _P, _P, _P, _P, _P, - _P, _P, _P, _P, _P, _P, _P, _P, - _P, 0, 0, 0, 0, 0, 0, 0, - _L, _L, _L, _L, _L, _L, _L, _L, - _L, _L, _L, _L, _L, _L, _L, _L, - _L, _L, _L, _L, _L, _L, _L, _L, - _L, _L, _L, 0, 0, _P, _P, 0 }, - /* CP1256 */ - { _P, _L, _P, _L, _P, _P, _P, _P, - _P, _P, _L, _P, _U, _L, _L, _L, - _L, _P, _P, _P, _P, _P, _P, _P, - _L, _P, _L, _P, _L, _P, _P, _L, - _S|_B, _P, _P, _P, _P, _P, _P, _P, - _P, _P, _L, _P, _P, _P, _P, _P, - _P, _P, _P, _P, _P, _P, _P, _P, - _P, _P, _P, _P, _P, _P, _P, _P, - _L, _L, _L, _L, _L, _L, _L, _L, - _L, _L, _L, _L, _L, _L, _L, _L, - _L, _L, _L, _L, _L, _L, _L, _P, - _L, _L, _L, _L, _P, _L, _L, _L, - _L, _L, _L, _L, _L, _L, _L, _L, - _L, _L, _L, _L, _L, _L, _L, _L, - _P, _P, _P, _P, _L, _P, _P, _P, - _P, _L, _P, _L, _L, _P, _P, _L }, - /* CP1257 */ - { _P, 0, _P, 0, _P, _P, _P, _P, - 0, _P, 0, _P, 0, _P, _P, _P, - 0, _P, _P, _P, _P, _P, _P, _P, - 0, _P, 0, _P, 0, _P, _P, 0, - _S|_B, 0, _P, _P, _P, 0, _P, _P, - _U, _P, _U, _P, _P, _P, _P, _U, - _P, _P, _P, _P, _P, _P, _P, _P, - _L, _P, _L, _P, _P, _P, _P, _L, - _U, _U, _U, _U, _U, _U, _U, _U, - _U, _U, _U, _U, _U, _U, _U, _U, - _U, _U, _U, _U, _U, _U, _U, _P, - _U, _U, _U, _U, _U, _U, _U, _L, - _L, _L, _L, _L, _L, _L, _L, _L, - _L, _L, _L, _L, _L, _L, _L, _L, - _L, _L, _L, _L, _L, _L, _L, _P, - _L, _L, _L, _L, _L, _L, _L, _P }, - /* CP1258 */ - { _P, 0, _P, _L, _P, _P, _P, _P, - _P, _P, 0, _P, _U, 0, 0, 0, - 0, _P, _P, _P, _P, _P, _P, _P, - _P, _P, 0, _P, _L, 0, 0, _U, - _S|_B, _P, _P, _P, _P, _P, _P, _P, - _P, _P, _P, _P, _P, _P, _P, _P, - _P, _P, _P, _P, _P, _P, _P, _P, - _P, _P, _P, _P, _P, _P, _P, _P, - _U, _U, _U, _U, _U, _U, _U, _U, - _U, _U, _U, _U, _P, _U, _U, _U, - _U, _U, _P, _U, _U, _U, _U, _P, - _U, _U, _U, _U, _U, _U, _P, _L, - _L, _L, _L, _L, _L, _L, _L, _L, - _L, _L, _L, _L, _P, _L, _L, _L, - _L, _L, _P, _L, _L, _L, _L, _P, - _L, _L, _L, _L, _L, _L, _P, _L } -}; - -char ctype_b[128 + 256] = { - _CTYPE_DATA_128_256, - _CTYPE_DATA_0_127, - _CTYPE_DATA_128_256 -}; - -__asm__ (" \n\ - .data \n\ - .globl __ctype_ \n\ - .set __ctype_,_ctype_b+127 \n\ - .text \n\ -"); - -#define makefunc(x) \ - static int __cdecl \ - c_##x (int c) \ - { \ - return x (c); \ - } \ - EXPORT_ALIAS(c_##x, x) - -makefunc(isalnum) -makefunc(isalpha) -makefunc(iscntrl) -makefunc(isdigit) -makefunc(isgraph) -makefunc(islower) -makefunc(isprint) -makefunc(ispunct) -makefunc(isspace) -makefunc(isupper) -makefunc(isxdigit) -makefunc(isblank) -makefunc(isascii) -makefunc(toascii) - -static int __cdecl -c_tolower (int c) -{ - if ((unsigned char) c <= 0x7f) - return isupper (c) ? c + 0x20 : c; - - char s[8] = { c, '\0' }; - wchar_t wc; - if (mbtowc (&wc, s, 1) >= 0 - && wctomb (s, (wchar_t) towlower ((wint_t) wc)) == 1) - c = s[0]; - return c; -} -EXPORT_ALIAS(c_tolower, tolower) - -static int __cdecl -c_toupper (int c) -{ - if ((unsigned char) c <= 0x7f) - return islower (c) ? c - 0x20 : c; - - char s[8] = { c, '\0' }; - wchar_t wc; - if (mbtowc (&wc, s, 1) >= 0 - && wctomb (s, (wchar_t) towupper ((wint_t) wc)) == 1) - c = s[0]; - return c; -} -EXPORT_ALIAS(c_toupper, toupper) +extern char _ctype_b[128 + 256]; /* Called from newlib's setlocale(). What we do here is to copy the 128 bytes of charset specific ctype data into the array at _ctype_b. @@ -750,8 +12,10 @@ EXPORT_ALIAS(c_toupper, toupper) application, that's the only backward compatible way to do it. Setlocale is usually only called once in an application, so this isn't time-critical anyway. */ -int __iso_8859_index (const char *charset_ext); /* Newlib */ -int __cp_index (const char *charset_ext); /* Newlib */ +extern int __iso_8859_index (const char *charset_ext); /* Newlib */ +extern int __cp_index (const char *charset_ext); /* Newlib */ +extern const char __ctype_cp[22][128 + 256]; /* Newlib */ +extern const char __ctype_iso[15][128 + 256]; /* Newlib */ void __set_ctype (const char *charset) @@ -767,21 +31,33 @@ __set_ctype (const char *charset) idx = 0; else ++idx; - memcpy (ctype_b, __ctype_iso[idx], 128); - memcpy (ctype_b + 256, __ctype_iso[idx], 128); + if (CYGWIN_VERSION_CHECK_FOR_OLD_CTYPE) + { + memcpy (_ctype_b, __ctype_iso[idx], 128); + memcpy (_ctype_b + 256, __ctype_iso[idx], 128); + } + __ctype_ptr__ = (char *) (__ctype_iso[idx] + 127); return; case 'C': idx = __cp_index (charset + 2); if (idx < 0) break; - memcpy (ctype_b, __ctype_cp[idx], 128); - memcpy (ctype_b + 256, __ctype_cp[idx], 128); + if (CYGWIN_VERSION_CHECK_FOR_OLD_CTYPE) + { + memcpy (_ctype_b, __ctype_cp[idx], 128); + memcpy (_ctype_b + 256, __ctype_cp[idx], 128); + } + __ctype_ptr__ = (char *) (__ctype_cp[idx] + 127); return; default: break; } - memcpy (ctype_b, __ctype_default, 128); - memcpy (ctype_b + 256, __ctype_default, 128); + if (CYGWIN_VERSION_CHECK_FOR_OLD_CTYPE) + { + memset (_ctype_b, 0, 128); + memset (_ctype_b + 256, 0, 128); + } + __ctype_ptr__ = (char *) _ctype_b + 127; } } /* extern "C" */ |