1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117 |
- /* Copyright (C) 2003 Manuel Novoa III
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this library; if not, write to the Free
- * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- */
- /* ATTENTION! ATTENTION! ATTENTION! ATTENTION! ATTENTION!
- *
- * Besides uClibc, I'm using this code in my libc for elks, which is
- * a 16-bit environment with a fairly limited compiler. It would make
- * things much easier for me if this file isn't modified unnecessarily.
- * In particular, please put any new or replacement functions somewhere
- * else, and modify the makefile to use your version instead.
- * Thanks. Manuel
- *
- * ATTENTION! ATTENTION! ATTENTION! ATTENTION! ATTENTION! */
- #define __NO_CTYPE
- #include <ctype.h>
- #include <stdio.h>
- #include <stdlib.h>
- #include <limits.h>
- #include <stdint.h>
- #include <assert.h>
- #include <locale.h>
- #ifdef __UCLIBC_HAS_XLOCALE__
- libc_hidden_proto(__ctype_b_loc)
- #else
- libc_hidden_proto(__ctype_b)
- #endif
- #ifdef __UCLIBC_HAS_XLOCALE__
- #include <xlocale.h>
- #endif /* __UCLIBC_HAS_XLOCALE__ */
- /**********************************************************************/
- #ifdef __UCLIBC_HAS_CTYPE_TABLES__
- #ifdef __UCLIBC_HAS_CTYPE_SIGNED__
- #if EOF >= CHAR_MIN
- #define CTYPE_DOMAIN_CHECK(C) \
- (((unsigned int)((C) - CHAR_MIN)) <= (UCHAR_MAX - CHAR_MIN))
- #else
- #define CTYPE_DOMAIN_CHECK(C) \
- ((((unsigned int)((C) - CHAR_MIN)) <= (UCHAR_MAX - CHAR_MIN)) || ((C) == EOF))
- #endif
- #else /* __UCLIBC_HAS_CTYPE_SIGNED__ */
- #if EOF == -1
- #define CTYPE_DOMAIN_CHECK(C) \
- (((unsigned int)((C) - EOF)) <= (UCHAR_MAX - EOF))
- #else
- #define CTYPE_DOMAIN_CHECK(C) \
- ((((unsigned int)(C)) <= UCHAR_MAX) || ((C) == EOF))
- #endif
- #endif /* __UCLIBC_HAS_CTYPE_SIGNED__ */
- #endif /* __UCLIBC_HAS_CTYPE_TABLES__ */
- /**********************************************************************/
- #ifdef __UCLIBC_MJN3_ONLY__
- #ifdef L_isspace
- /* emit only once */
- #warning CONSIDER: Should we assert when debugging and __UCLIBC_HAS_CTYPE_CHECKED?
- #warning TODO: Fix asserts in to{upper|lower}{_l}.
- #warning TODO: Optimize the isx*() funcs.
- #endif
- #endif /* __UCLIBC_MJN3_ONLY__ */
- /**********************************************************************/
- #undef PASTE2
- #define PASTE2(X,Y) X ## Y
- #ifdef __UCLIBC_HAS_CTYPE_TABLES__
- #undef CTYPE_NAME
- #undef ISCTYPE
- #undef CTYPE_ALIAS
- #ifdef __UCLIBC_DO_XLOCALE
- #define CTYPE_NAME(X) __is ## X ## _l
- #define ISCTYPE(C,F) __isctype_l( C, F, locale_arg)
- #define CTYPE_ALIAS(NAME) strong_alias( __is ## NAME ## _l , is ## NAME ## _l)
- #else
- #define CTYPE_NAME(X) is ## X
- #define ISCTYPE(C,F) __isctype( C, F )
- #define CTYPE_ALIAS(NAME)
- #endif
- #undef CTYPE_BODY
- #if defined(__UCLIBC_HAS_CTYPE_ENFORCED__)
- /* Make sure assert is active for to*() funcs below. */
- #undef NDEBUG
- #include <assert.h>
- extern void __isctype_assert(int c, int mask) __attribute__ ((__noreturn__)) attribute_hidden;
- #define CTYPE_BODY(NAME,C,MASK) \
- if (CTYPE_DOMAIN_CHECK(C)) { \
- return ISCTYPE(C, MASK); \
- } \
- __isctype_assert(C, MASK);
- #elif defined(__UCLIBC_HAS_CTYPE_CHECKED__)
- #define CTYPE_BODY(NAME,C,MASK) \
- return CTYPE_DOMAIN_CHECK(C) \
- ? ISCTYPE(C, MASK) \
- : 0;
- #elif defined(__UCLIBC_HAS_CTYPE_UNSAFE__)
- #define CTYPE_BODY(NAME,C,MASK) \
- return ISCTYPE(C, MASK);
- #else /* No checking done. */
- #error Unknown type of ctype checking!
- #endif
- #define IS_FUNC_BODY(NAME) \
- int CTYPE_NAME(NAME) (int c __LOCALE_PARAM ); \
- int CTYPE_NAME(NAME) (int c __LOCALE_PARAM ) \
- { \
- CTYPE_BODY(NAME,c,PASTE2(_IS,NAME)) \
- } \
- CTYPE_ALIAS(NAME)
- #else /* __UCLIBC_HAS_CTYPE_TABLES__ */
- #define C_MACRO(X) PASTE2(__C_is,X)(c)
- #define CTYPE_NAME(X) is ## X
- #define IS_FUNC_BODY(NAME) \
- int CTYPE_NAME(NAME) (int c) \
- { \
- return C_MACRO(NAME); \
- }
- #endif /* __UCLIBC_HAS_CTYPE_TABLES__ */
- /**********************************************************************/
- #ifdef L___ctype_assert
- #ifdef __UCLIBC_HAS_CTYPE_ENFORCED__
- libc_hidden_proto(fprintf)
- libc_hidden_proto(abort)
- attribute_hidden void __isctype_assert(int c, int mask)
- {
- fprintf(stderr, "%s: __is*{_l}(%d,%#x {locale})\n", __uclibc_progname, c, mask);
- abort();
- }
- #endif
- #endif
- /**********************************************************************/
- #if defined(L_isalnum) || defined(L_isalnum_l)
- IS_FUNC_BODY(alnum);
- #endif
- /**********************************************************************/
- #if defined(L_isalpha) || defined(L_isalpha_l)
- IS_FUNC_BODY(alpha);
- #endif
- /**********************************************************************/
- #if defined(L_isblank) || defined(L_isblank_l)
- IS_FUNC_BODY(blank);
- #endif
- /**********************************************************************/
- #if defined(L_iscntrl) || defined(L_iscntrl_l)
- IS_FUNC_BODY(cntrl);
- #endif
- /**********************************************************************/
- #if defined(L_isdigit) || defined(L_isdigit_l)
- #ifdef __UCLIBC_HAS_CTYPE_TABLES__
- /* The standards require EOF < 0. */
- #if EOF >= CHAR_MIN
- #define __isdigit_char_or_EOF(C) __isdigit_char((C))
- #else
- #define __isdigit_char_or_EOF(C) __isdigit_int((C))
- #endif
- int CTYPE_NAME(digit) (int C __LOCALE_PARAM);
- int CTYPE_NAME(digit) (int C __LOCALE_PARAM)
- {
- #if defined(__UCLIBC_HAS_CTYPE_ENFORCED__)
- if (CTYPE_DOMAIN_CHECK(C)) {
- return __isdigit_char_or_EOF(C); /* C is (unsigned) char or EOF. */
- }
- __isctype_assert(C, _ISdigit);
- #else
- return __isdigit_int(C); /* C could be invalid. */
- #endif
- }
- CTYPE_ALIAS(digit)
- #else /* __UCLIBC_HAS_CTYPE_TABLES__ */
- IS_FUNC_BODY(digit);
- #endif /* __UCLIBC_HAS_CTYPE_TABLES__ */
- #endif
- /**********************************************************************/
- #if defined(L_isgraph) || defined(L_isgraph_l)
- IS_FUNC_BODY(graph);
- #endif
- /**********************************************************************/
- #if defined(L_islower) || defined(L_islower_l)
- IS_FUNC_BODY(lower);
- #endif
- /**********************************************************************/
- #if defined(L_isprint) || defined(L_isprint_l)
- IS_FUNC_BODY(print);
- #endif
- /**********************************************************************/
- #if defined(L_ispunct) || defined(L_ispunct_l)
- IS_FUNC_BODY(punct);
- #endif
- /**********************************************************************/
- #if defined(L_isspace) || defined(L_isspace_l)
- IS_FUNC_BODY(space);
- #endif
- /**********************************************************************/
- #if defined(L_isupper) || defined(L_isupper_l)
- IS_FUNC_BODY(upper);
- #endif
- /**********************************************************************/
- #if defined(L_isxdigit) || defined(L_isxdigit_l)
- IS_FUNC_BODY(xdigit);
- #endif
- /**********************************************************************/
- #ifdef L_tolower
- #undef tolower
- #ifdef __UCLIBC_HAS_XLOCALE__
- libc_hidden_proto(__ctype_tolower_loc)
- #else
- libc_hidden_proto(__ctype_tolower)
- #endif
- libc_hidden_proto(tolower)
- #ifdef __UCLIBC_HAS_CTYPE_TABLES__
- int tolower(int c)
- {
- #if defined(__UCLIBC_HAS_CTYPE_ENFORCED__)
- assert(CTYPE_DOMAIN_CHECK(c));
- #endif
- return __UCLIBC_CTYPE_IN_TO_DOMAIN(c) ? (__UCLIBC_CTYPE_TOLOWER)[c] : c;
- }
- #else /* __UCLIBC_HAS_CTYPE_TABLES__ */
- int tolower(int c)
- {
- return __C_tolower(c);
- }
- #endif /* __UCLIBC_HAS_CTYPE_TABLES__ */
- libc_hidden_def(tolower)
- #endif
- /**********************************************************************/
- #ifdef L_tolower_l
- #undef tolower_l
- libc_hidden_proto(tolower_l)
- int tolower_l(int c, __locale_t l)
- {
- #if defined(__UCLIBC_HAS_CTYPE_ENFORCED__)
- assert(CTYPE_DOMAIN_CHECK(c));
- #endif
- return __UCLIBC_CTYPE_IN_TO_DOMAIN(c) ? l->__ctype_tolower[c] : c;
- }
- libc_hidden_def(tolower_l)
- #endif
- /**********************************************************************/
- #ifdef L_toupper
- #undef toupper
- #ifdef __UCLIBC_HAS_XLOCALE__
- libc_hidden_proto(__ctype_toupper_loc)
- #else
- libc_hidden_proto(__ctype_toupper)
- #endif
- libc_hidden_proto(toupper)
- #ifdef __UCLIBC_HAS_CTYPE_TABLES__
- int toupper(int c)
- {
- #if defined(__UCLIBC_HAS_CTYPE_ENFORCED__)
- assert(CTYPE_DOMAIN_CHECK(c));
- #endif
- return __UCLIBC_CTYPE_IN_TO_DOMAIN(c) ? (__UCLIBC_CTYPE_TOUPPER)[c] : c;
- }
- #else /* __UCLIBC_HAS_CTYPE_TABLES__ */
- int toupper(int c)
- {
- return __C_toupper(c);
- }
- #endif /* __UCLIBC_HAS_CTYPE_TABLES__ */
- libc_hidden_def(toupper)
- #endif
- /**********************************************************************/
- #ifdef L_toupper_l
- #undef toupper_l
- libc_hidden_proto(toupper_l)
- int toupper_l(int c, __locale_t l)
- {
- #if defined(__UCLIBC_HAS_CTYPE_ENFORCED__)
- assert(CTYPE_DOMAIN_CHECK(c));
- #endif
- return __UCLIBC_CTYPE_IN_TO_DOMAIN(c) ? l->__ctype_toupper[c] : c;
- }
- libc_hidden_def(toupper_l)
- #endif
- /**********************************************************************/
- #if defined(L_isascii) || defined(L_isascii_l)
- #ifdef __UCLIBC_HAS_CTYPE_TABLES__
- int __XL_NPP(isascii)(int c);
- int __XL_NPP(isascii)(int c)
- {
- return __isascii(c); /* locale-independent */
- }
- #else /* __UCLIBC_HAS_CTYPE_TABLES__ */
- libc_hidden_proto(isascii)
- int isascii(int c)
- {
- return __isascii(c); /* locale-independent */
- }
- libc_hidden_def(isascii)
- #endif /* __UCLIBC_HAS_CTYPE_TABLES__ */
- #endif
- /**********************************************************************/
- #if defined(L_toascii) || defined(L_toascii_l)
- #ifdef __UCLIBC_HAS_CTYPE_TABLES__
- int __XL_NPP(toascii)(int c);
- int __XL_NPP(toascii)(int c)
- {
- return __toascii(c); /* locale-independent */
- }
- #else /* __UCLIBC_HAS_CTYPE_TABLES__ */
- int toascii(int c)
- {
- return __toascii(c); /* locale-independent */
- }
- #endif /* __UCLIBC_HAS_CTYPE_TABLES__ */
- #endif
- /**********************************************************************/
- /* glibc extensions */
- /**********************************************************************/
- #ifdef L_isctype
- int isctype(int c, int mask)
- {
- CTYPE_BODY(NAME,c,mask)
- }
- #endif
- /**********************************************************************/
- #if L___ctype_b_loc
- #ifdef __UCLIBC_HAS_XLOCALE__
- const __ctype_mask_t **__ctype_b_loc(void)
- {
- return &(__UCLIBC_CURLOCALE_DATA).__ctype_b;
- }
- libc_hidden_def(__ctype_b_loc)
- #endif
- #endif
- /**********************************************************************/
- #if L___ctype_tolower_loc
- #ifdef __UCLIBC_HAS_XLOCALE__
- libc_hidden_proto(__ctype_tolower_loc)
- const __ctype_touplow_t **__ctype_tolower_loc(void)
- {
- return &(__UCLIBC_CURLOCALE_DATA).__ctype_tolower;
- }
- libc_hidden_def(__ctype_tolower_loc)
- #endif
- #endif
- /**********************************************************************/
- #if L___ctype_toupper_loc
- #ifdef __UCLIBC_HAS_XLOCALE__
- libc_hidden_proto(__ctype_toupper_loc)
- const __ctype_touplow_t **__ctype_toupper_loc(void)
- {
- return &(__UCLIBC_CURLOCALE_DATA).__ctype_toupper;
- }
- libc_hidden_def(__ctype_toupper_loc)
- #endif
- #endif
- /**********************************************************************/
- #ifdef L___C_ctype_b
- extern const __ctype_mask_t __C_ctype_b_data[];
- libc_hidden_proto(__C_ctype_b_data)
- const __ctype_mask_t __C_ctype_b_data[] = {
- #ifdef __UCLIBC_HAS_CTYPE_SIGNED__
- /* -128 M-^@ */ 0,
- /* -127 M-^A */ 0,
- /* -126 M-^B */ 0,
- /* -125 M-^C */ 0,
- /* -124 M-^D */ 0,
- /* -123 M-^E */ 0,
- /* -122 M-^F */ 0,
- /* -121 M-^G */ 0,
- /* -120 M-^H */ 0,
- /* -119 M-^I */ 0,
- /* -118 M-^J */ 0,
- /* -117 M-^K */ 0,
- /* -116 M-^L */ 0,
- /* -115 M-^M */ 0,
- /* -114 M-^N */ 0,
- /* -113 M-^O */ 0,
- /* -112 M-^P */ 0,
- /* -111 M-^Q */ 0,
- /* -110 M-^R */ 0,
- /* -109 M-^S */ 0,
- /* -108 M-^T */ 0,
- /* -107 M-^U */ 0,
- /* -106 M-^V */ 0,
- /* -105 M-^W */ 0,
- /* -104 M-^X */ 0,
- /* -103 M-^Y */ 0,
- /* -102 M-^Z */ 0,
- /* -101 M-^[ */ 0,
- /* -100 M-^\ */ 0,
- /* -99 M-^] */ 0,
- /* -98 M-^^ */ 0,
- /* -97 M-^_ */ 0,
- /* -96 M- */ 0,
- /* -95 M-! */ 0,
- /* -94 M-" */ 0,
- /* -93 M-# */ 0,
- /* -92 M-$ */ 0,
- /* -91 M-% */ 0,
- /* -90 M-& */ 0,
- /* -89 M-' */ 0,
- /* -88 M-( */ 0,
- /* -87 M-) */ 0,
- /* -86 M-* */ 0,
- /* -85 M-+ */ 0,
- /* -84 M-, */ 0,
- /* -83 M-- */ 0,
- /* -82 M-. */ 0,
- /* -81 M-/ */ 0,
- /* -80 M-0 */ 0,
- /* -79 M-1 */ 0,
- /* -78 M-2 */ 0,
- /* -77 M-3 */ 0,
- /* -76 M-4 */ 0,
- /* -75 M-5 */ 0,
- /* -74 M-6 */ 0,
- /* -73 M-7 */ 0,
- /* -72 M-8 */ 0,
- /* -71 M-9 */ 0,
- /* -70 M-: */ 0,
- /* -69 M-; */ 0,
- /* -68 M-< */ 0,
- /* -67 M-= */ 0,
- /* -66 M-> */ 0,
- /* -65 M-? */ 0,
- /* -64 M-@ */ 0,
- /* -63 M-A */ 0,
- /* -62 M-B */ 0,
- /* -61 M-C */ 0,
- /* -60 M-D */ 0,
- /* -59 M-E */ 0,
- /* -58 M-F */ 0,
- /* -57 M-G */ 0,
- /* -56 M-H */ 0,
- /* -55 M-I */ 0,
- /* -54 M-J */ 0,
- /* -53 M-K */ 0,
- /* -52 M-L */ 0,
- /* -51 M-M */ 0,
- /* -50 M-N */ 0,
- /* -49 M-O */ 0,
- /* -48 M-P */ 0,
- /* -47 M-Q */ 0,
- /* -46 M-R */ 0,
- /* -45 M-S */ 0,
- /* -44 M-T */ 0,
- /* -43 M-U */ 0,
- /* -42 M-V */ 0,
- /* -41 M-W */ 0,
- /* -40 M-X */ 0,
- /* -39 M-Y */ 0,
- /* -38 M-Z */ 0,
- /* -37 M-[ */ 0,
- /* -36 M-\ */ 0,
- /* -35 M-] */ 0,
- /* -34 M-^ */ 0,
- /* -33 M-_ */ 0,
- /* -32 M-` */ 0,
- /* -31 M-a */ 0,
- /* -30 M-b */ 0,
- /* -29 M-c */ 0,
- /* -28 M-d */ 0,
- /* -27 M-e */ 0,
- /* -26 M-f */ 0,
- /* -25 M-g */ 0,
- /* -24 M-h */ 0,
- /* -23 M-i */ 0,
- /* -22 M-j */ 0,
- /* -21 M-k */ 0,
- /* -20 M-l */ 0,
- /* -19 M-m */ 0,
- /* -18 M-n */ 0,
- /* -17 M-o */ 0,
- /* -16 M-p */ 0,
- /* -15 M-q */ 0,
- /* -14 M-r */ 0,
- /* -13 M-s */ 0,
- /* -12 M-t */ 0,
- /* -11 M-u */ 0,
- /* -10 M-v */ 0,
- /* -9 M-w */ 0,
- /* -8 M-x */ 0,
- /* -7 M-y */ 0,
- /* -6 M-z */ 0,
- /* -5 M-{ */ 0,
- /* -4 M-| */ 0,
- /* -3 M-} */ 0,
- /* -2 M-~ */ 0,
- #endif /* __UCLIBC_HAS_CTYPE_SIGNED__*/
- /* -1 M-^? */ 0,
- /* 0 ^@ */ _IScntrl,
- /* 1 ^A */ _IScntrl,
- /* 2 ^B */ _IScntrl,
- /* 3 ^C */ _IScntrl,
- /* 4 ^D */ _IScntrl,
- /* 5 ^E */ _IScntrl,
- /* 6 ^F */ _IScntrl,
- /* 7 ^G */ _IScntrl,
- /* 8 ^H */ _IScntrl,
- /* 9 ^I */ _ISspace|_ISblank|_IScntrl,
- /* 10 ^J */ _ISspace|_IScntrl,
- /* 11 ^K */ _ISspace|_IScntrl,
- /* 12 ^L */ _ISspace|_IScntrl,
- /* 13 ^M */ _ISspace|_IScntrl,
- /* 14 ^N */ _IScntrl,
- /* 15 ^O */ _IScntrl,
- /* 16 ^P */ _IScntrl,
- /* 17 ^Q */ _IScntrl,
- /* 18 ^R */ _IScntrl,
- /* 19 ^S */ _IScntrl,
- /* 20 ^T */ _IScntrl,
- /* 21 ^U */ _IScntrl,
- /* 22 ^V */ _IScntrl,
- /* 23 ^W */ _IScntrl,
- /* 24 ^X */ _IScntrl,
- /* 25 ^Y */ _IScntrl,
- /* 26 ^Z */ _IScntrl,
- /* 27 ^[ */ _IScntrl,
- /* 28 ^\ */ _IScntrl,
- /* 29 ^] */ _IScntrl,
- /* 30 ^^ */ _IScntrl,
- /* 31 ^_ */ _IScntrl,
- /* 32 */ _ISspace|_ISprint|_ISblank,
- /* 33 ! */ _ISprint|_ISgraph|_ISpunct,
- /* 34 " */ _ISprint|_ISgraph|_ISpunct,
- /* 35 # */ _ISprint|_ISgraph|_ISpunct,
- /* 36 $ */ _ISprint|_ISgraph|_ISpunct,
- /* 37 % */ _ISprint|_ISgraph|_ISpunct,
- /* 38 & */ _ISprint|_ISgraph|_ISpunct,
- /* 39 ' */ _ISprint|_ISgraph|_ISpunct,
- /* 40 ( */ _ISprint|_ISgraph|_ISpunct,
- /* 41 ) */ _ISprint|_ISgraph|_ISpunct,
- /* 42 * */ _ISprint|_ISgraph|_ISpunct,
- /* 43 + */ _ISprint|_ISgraph|_ISpunct,
- /* 44 , */ _ISprint|_ISgraph|_ISpunct,
- /* 45 - */ _ISprint|_ISgraph|_ISpunct,
- /* 46 . */ _ISprint|_ISgraph|_ISpunct,
- /* 47 / */ _ISprint|_ISgraph|_ISpunct,
- /* 48 0 */ _ISdigit|_ISxdigit|_ISprint|_ISgraph|_ISalnum,
- /* 49 1 */ _ISdigit|_ISxdigit|_ISprint|_ISgraph|_ISalnum,
- /* 50 2 */ _ISdigit|_ISxdigit|_ISprint|_ISgraph|_ISalnum,
- /* 51 3 */ _ISdigit|_ISxdigit|_ISprint|_ISgraph|_ISalnum,
- /* 52 4 */ _ISdigit|_ISxdigit|_ISprint|_ISgraph|_ISalnum,
- /* 53 5 */ _ISdigit|_ISxdigit|_ISprint|_ISgraph|_ISalnum,
- /* 54 6 */ _ISdigit|_ISxdigit|_ISprint|_ISgraph|_ISalnum,
- /* 55 7 */ _ISdigit|_ISxdigit|_ISprint|_ISgraph|_ISalnum,
- /* 56 8 */ _ISdigit|_ISxdigit|_ISprint|_ISgraph|_ISalnum,
- /* 57 9 */ _ISdigit|_ISxdigit|_ISprint|_ISgraph|_ISalnum,
- /* 58 : */ _ISprint|_ISgraph|_ISpunct,
- /* 59 ; */ _ISprint|_ISgraph|_ISpunct,
- /* 60 < */ _ISprint|_ISgraph|_ISpunct,
- /* 61 = */ _ISprint|_ISgraph|_ISpunct,
- /* 62 > */ _ISprint|_ISgraph|_ISpunct,
- /* 63 ? */ _ISprint|_ISgraph|_ISpunct,
- /* 64 @ */ _ISprint|_ISgraph|_ISpunct,
- /* 65 A */ _ISupper|_ISalpha|_ISxdigit|_ISprint|_ISgraph|_ISalnum,
- /* 66 B */ _ISupper|_ISalpha|_ISxdigit|_ISprint|_ISgraph|_ISalnum,
- /* 67 C */ _ISupper|_ISalpha|_ISxdigit|_ISprint|_ISgraph|_ISalnum,
- /* 68 D */ _ISupper|_ISalpha|_ISxdigit|_ISprint|_ISgraph|_ISalnum,
- /* 69 E */ _ISupper|_ISalpha|_ISxdigit|_ISprint|_ISgraph|_ISalnum,
- /* 70 F */ _ISupper|_ISalpha|_ISxdigit|_ISprint|_ISgraph|_ISalnum,
- /* 71 G */ _ISupper|_ISalpha|_ISprint|_ISgraph|_ISalnum,
- /* 72 H */ _ISupper|_ISalpha|_ISprint|_ISgraph|_ISalnum,
- /* 73 I */ _ISupper|_ISalpha|_ISprint|_ISgraph|_ISalnum,
- /* 74 J */ _ISupper|_ISalpha|_ISprint|_ISgraph|_ISalnum,
- /* 75 K */ _ISupper|_ISalpha|_ISprint|_ISgraph|_ISalnum,
- /* 76 L */ _ISupper|_ISalpha|_ISprint|_ISgraph|_ISalnum,
- /* 77 M */ _ISupper|_ISalpha|_ISprint|_ISgraph|_ISalnum,
- /* 78 N */ _ISupper|_ISalpha|_ISprint|_ISgraph|_ISalnum,
- /* 79 O */ _ISupper|_ISalpha|_ISprint|_ISgraph|_ISalnum,
- /* 80 P */ _ISupper|_ISalpha|_ISprint|_ISgraph|_ISalnum,
- /* 81 Q */ _ISupper|_ISalpha|_ISprint|_ISgraph|_ISalnum,
- /* 82 R */ _ISupper|_ISalpha|_ISprint|_ISgraph|_ISalnum,
- /* 83 S */ _ISupper|_ISalpha|_ISprint|_ISgraph|_ISalnum,
- /* 84 T */ _ISupper|_ISalpha|_ISprint|_ISgraph|_ISalnum,
- /* 85 U */ _ISupper|_ISalpha|_ISprint|_ISgraph|_ISalnum,
- /* 86 V */ _ISupper|_ISalpha|_ISprint|_ISgraph|_ISalnum,
- /* 87 W */ _ISupper|_ISalpha|_ISprint|_ISgraph|_ISalnum,
- /* 88 X */ _ISupper|_ISalpha|_ISprint|_ISgraph|_ISalnum,
- /* 89 Y */ _ISupper|_ISalpha|_ISprint|_ISgraph|_ISalnum,
- /* 90 Z */ _ISupper|_ISalpha|_ISprint|_ISgraph|_ISalnum,
- /* 91 [ */ _ISprint|_ISgraph|_ISpunct,
- /* 92 \ */ _ISprint|_ISgraph|_ISpunct,
- /* 93 ] */ _ISprint|_ISgraph|_ISpunct,
- /* 94 ^ */ _ISprint|_ISgraph|_ISpunct,
- /* 95 _ */ _ISprint|_ISgraph|_ISpunct,
- /* 96 ` */ _ISprint|_ISgraph|_ISpunct,
- /* 97 a */ _ISlower|_ISalpha|_ISxdigit|_ISprint|_ISgraph|_ISalnum,
- /* 98 b */ _ISlower|_ISalpha|_ISxdigit|_ISprint|_ISgraph|_ISalnum,
- /* 99 c */ _ISlower|_ISalpha|_ISxdigit|_ISprint|_ISgraph|_ISalnum,
- /* 100 d */ _ISlower|_ISalpha|_ISxdigit|_ISprint|_ISgraph|_ISalnum,
- /* 101 e */ _ISlower|_ISalpha|_ISxdigit|_ISprint|_ISgraph|_ISalnum,
- /* 102 f */ _ISlower|_ISalpha|_ISxdigit|_ISprint|_ISgraph|_ISalnum,
- /* 103 g */ _ISlower|_ISalpha|_ISprint|_ISgraph|_ISalnum,
- /* 104 h */ _ISlower|_ISalpha|_ISprint|_ISgraph|_ISalnum,
- /* 105 i */ _ISlower|_ISalpha|_ISprint|_ISgraph|_ISalnum,
- /* 106 j */ _ISlower|_ISalpha|_ISprint|_ISgraph|_ISalnum,
- /* 107 k */ _ISlower|_ISalpha|_ISprint|_ISgraph|_ISalnum,
- /* 108 l */ _ISlower|_ISalpha|_ISprint|_ISgraph|_ISalnum,
- /* 109 m */ _ISlower|_ISalpha|_ISprint|_ISgraph|_ISalnum,
- /* 110 n */ _ISlower|_ISalpha|_ISprint|_ISgraph|_ISalnum,
- /* 111 o */ _ISlower|_ISalpha|_ISprint|_ISgraph|_ISalnum,
- /* 112 p */ _ISlower|_ISalpha|_ISprint|_ISgraph|_ISalnum,
- /* 113 q */ _ISlower|_ISalpha|_ISprint|_ISgraph|_ISalnum,
- /* 114 r */ _ISlower|_ISalpha|_ISprint|_ISgraph|_ISalnum,
- /* 115 s */ _ISlower|_ISalpha|_ISprint|_ISgraph|_ISalnum,
- /* 116 t */ _ISlower|_ISalpha|_ISprint|_ISgraph|_ISalnum,
- /* 117 u */ _ISlower|_ISalpha|_ISprint|_ISgraph|_ISalnum,
- /* 118 v */ _ISlower|_ISalpha|_ISprint|_ISgraph|_ISalnum,
- /* 119 w */ _ISlower|_ISalpha|_ISprint|_ISgraph|_ISalnum,
- /* 120 x */ _ISlower|_ISalpha|_ISprint|_ISgraph|_ISalnum,
- /* 121 y */ _ISlower|_ISalpha|_ISprint|_ISgraph|_ISalnum,
- /* 122 z */ _ISlower|_ISalpha|_ISprint|_ISgraph|_ISalnum,
- /* 123 { */ _ISprint|_ISgraph|_ISpunct,
- /* 124 | */ _ISprint|_ISgraph|_ISpunct,
- /* 125 } */ _ISprint|_ISgraph|_ISpunct,
- /* 126 ~ */ _ISprint|_ISgraph|_ISpunct,
- /* 127 ^? */ _IScntrl,
- /* 128 M-^@ */ 0,
- /* 129 M-^A */ 0,
- /* 130 M-^B */ 0,
- /* 131 M-^C */ 0,
- /* 132 M-^D */ 0,
- /* 133 M-^E */ 0,
- /* 134 M-^F */ 0,
- /* 135 M-^G */ 0,
- /* 136 M-^H */ 0,
- /* 137 M-^I */ 0,
- /* 138 M-^J */ 0,
- /* 139 M-^K */ 0,
- /* 140 M-^L */ 0,
- /* 141 M-^M */ 0,
- /* 142 M-^N */ 0,
- /* 143 M-^O */ 0,
- /* 144 M-^P */ 0,
- /* 145 M-^Q */ 0,
- /* 146 M-^R */ 0,
- /* 147 M-^S */ 0,
- /* 148 M-^T */ 0,
- /* 149 M-^U */ 0,
- /* 150 M-^V */ 0,
- /* 151 M-^W */ 0,
- /* 152 M-^X */ 0,
- /* 153 M-^Y */ 0,
- /* 154 M-^Z */ 0,
- /* 155 M-^[ */ 0,
- /* 156 M-^\ */ 0,
- /* 157 M-^] */ 0,
- /* 158 M-^^ */ 0,
- /* 159 M-^_ */ 0,
- /* 160 M- */ 0,
- /* 161 M-! */ 0,
- /* 162 M-" */ 0,
- /* 163 M-# */ 0,
- /* 164 M-$ */ 0,
- /* 165 M-% */ 0,
- /* 166 M-& */ 0,
- /* 167 M-' */ 0,
- /* 168 M-( */ 0,
- /* 169 M-) */ 0,
- /* 170 M-* */ 0,
- /* 171 M-+ */ 0,
- /* 172 M-, */ 0,
- /* 173 M-- */ 0,
- /* 174 M-. */ 0,
- /* 175 M-/ */ 0,
- /* 176 M-0 */ 0,
- /* 177 M-1 */ 0,
- /* 178 M-2 */ 0,
- /* 179 M-3 */ 0,
- /* 180 M-4 */ 0,
- /* 181 M-5 */ 0,
- /* 182 M-6 */ 0,
- /* 183 M-7 */ 0,
- /* 184 M-8 */ 0,
- /* 185 M-9 */ 0,
- /* 186 M-: */ 0,
- /* 187 M-; */ 0,
- /* 188 M-< */ 0,
- /* 189 M-= */ 0,
- /* 190 M-> */ 0,
- /* 191 M-? */ 0,
- /* 192 M-@ */ 0,
- /* 193 M-A */ 0,
- /* 194 M-B */ 0,
- /* 195 M-C */ 0,
- /* 196 M-D */ 0,
- /* 197 M-E */ 0,
- /* 198 M-F */ 0,
- /* 199 M-G */ 0,
- /* 200 M-H */ 0,
- /* 201 M-I */ 0,
- /* 202 M-J */ 0,
- /* 203 M-K */ 0,
- /* 204 M-L */ 0,
- /* 205 M-M */ 0,
- /* 206 M-N */ 0,
- /* 207 M-O */ 0,
- /* 208 M-P */ 0,
- /* 209 M-Q */ 0,
- /* 210 M-R */ 0,
- /* 211 M-S */ 0,
- /* 212 M-T */ 0,
- /* 213 M-U */ 0,
- /* 214 M-V */ 0,
- /* 215 M-W */ 0,
- /* 216 M-X */ 0,
- /* 217 M-Y */ 0,
- /* 218 M-Z */ 0,
- /* 219 M-[ */ 0,
- /* 220 M-\ */ 0,
- /* 221 M-] */ 0,
- /* 222 M-^ */ 0,
- /* 223 M-_ */ 0,
- /* 224 M-` */ 0,
- /* 225 M-a */ 0,
- /* 226 M-b */ 0,
- /* 227 M-c */ 0,
- /* 228 M-d */ 0,
- /* 229 M-e */ 0,
- /* 230 M-f */ 0,
- /* 231 M-g */ 0,
- /* 232 M-h */ 0,
- /* 233 M-i */ 0,
- /* 234 M-j */ 0,
- /* 235 M-k */ 0,
- /* 236 M-l */ 0,
- /* 237 M-m */ 0,
- /* 238 M-n */ 0,
- /* 239 M-o */ 0,
- /* 240 M-p */ 0,
- /* 241 M-q */ 0,
- /* 242 M-r */ 0,
- /* 243 M-s */ 0,
- /* 244 M-t */ 0,
- /* 245 M-u */ 0,
- /* 246 M-v */ 0,
- /* 247 M-w */ 0,
- /* 248 M-x */ 0,
- /* 249 M-y */ 0,
- /* 250 M-z */ 0,
- /* 251 M-{ */ 0,
- /* 252 M-| */ 0,
- /* 253 M-} */ 0,
- /* 254 M-~ */ 0,
- /* 255 M-^? */ 0
- };
- libc_hidden_data_def(__C_ctype_b_data)
- libc_hidden_proto(__C_ctype_b)
- const __ctype_mask_t *__C_ctype_b = __C_ctype_b_data + __UCLIBC_CTYPE_B_TBL_OFFSET;
- libc_hidden_data_def(__C_ctype_b)
- #ifndef __UCLIBC_HAS_XLOCALE__
- const __ctype_mask_t *__ctype_b = __C_ctype_b_data + __UCLIBC_CTYPE_B_TBL_OFFSET;
- libc_hidden_data_def(__ctype_b)
- #endif
- #endif
- /**********************************************************************/
- #ifdef L___C_ctype_tolower
- extern const __ctype_touplow_t __C_ctype_tolower_data[];
- libc_hidden_proto(__C_ctype_tolower_data)
- const __ctype_touplow_t __C_ctype_tolower_data[] = {
- #ifdef __UCLIBC_HAS_CTYPE_SIGNED__
- -128, -127, -126, -125,
- -124, -123, -122, -121,
- -120, -119, -118, -117,
- -116, -115, -114, -113,
- -112, -111, -110, -109,
- -108, -107, -106, -105,
- -104, -103, -102, -101,
- -100, -99, -98, -97,
- -96, -95, -94, -93,
- -92, -91, -90, -89,
- -88, -87, -86, -85,
- -84, -83, -82, -81,
- -80, -79, -78, -77,
- -76, -75, -74, -73,
- -72, -71, -70, -69,
- -68, -67, -66, -65,
- -64, -63, -62, -61,
- -60, -59, -58, -57,
- -56, -55, -54, -53,
- -52, -51, -50, -49,
- -48, -47, -46, -45,
- -44, -43, -42, -41,
- -40, -39, -38, -37,
- -36, -35, -34, -33,
- -32, -31, -30, -29,
- -28, -27, -26, -25,
- -24, -23, -22, -21,
- -20, -19, -18, -17,
- -16, -15, -14, -13,
- -12, -11, -10, -9,
- -8, -7, -6, -5,
- -4, -3, -2, -1,
- #endif /* __UCLIBC_HAS_CTYPE_SIGNED__*/
- 0, 1, 2, 3,
- 4, 5, 6, 7,
- 8, 9, 10, 11,
- 12, 13, 14, 15,
- 16, 17, 18, 19,
- 20, 21, 22, 23,
- 24, 25, 26, 27,
- 28, 29, 30, 31,
- 32, 33, 34, 35,
- 36, 37, 38, 39,
- 40, 41, 42, 43,
- 44, 45, 46, 47,
- 48, 49, 50, 51,
- 52, 53, 54, 55,
- 56, 57, 58, 59,
- 60, 61, 62, 63,
- 64, 97 /* a */, 98 /* b */, 99 /* c */,
- 100 /* d */, 101 /* e */, 102 /* f */, 103 /* g */,
- 104 /* h */, 105 /* i */, 106 /* j */, 107 /* k */,
- 108 /* l */, 109 /* m */, 110 /* n */, 111 /* o */,
- 112 /* p */, 113 /* q */, 114 /* r */, 115 /* s */,
- 116 /* t */, 117 /* u */, 118 /* v */, 119 /* w */,
- 120 /* x */, 121 /* y */, 122 /* z */, 91,
- 92, 93, 94, 95,
- 96, 97, 98, 99,
- 100, 101, 102, 103,
- 104, 105, 106, 107,
- 108, 109, 110, 111,
- 112, 113, 114, 115,
- 116, 117, 118, 119,
- 120, 121, 122, 123,
- 124, 125, 126, 127,
- 128, 129, 130, 131,
- 132, 133, 134, 135,
- 136, 137, 138, 139,
- 140, 141, 142, 143,
- 144, 145, 146, 147,
- 148, 149, 150, 151,
- 152, 153, 154, 155,
- 156, 157, 158, 159,
- 160, 161, 162, 163,
- 164, 165, 166, 167,
- 168, 169, 170, 171,
- 172, 173, 174, 175,
- 176, 177, 178, 179,
- 180, 181, 182, 183,
- 184, 185, 186, 187,
- 188, 189, 190, 191,
- 192, 193, 194, 195,
- 196, 197, 198, 199,
- 200, 201, 202, 203,
- 204, 205, 206, 207,
- 208, 209, 210, 211,
- 212, 213, 214, 215,
- 216, 217, 218, 219,
- 220, 221, 222, 223,
- 224, 225, 226, 227,
- 228, 229, 230, 231,
- 232, 233, 234, 235,
- 236, 237, 238, 239,
- 240, 241, 242, 243,
- 244, 245, 246, 247,
- 248, 249, 250, 251,
- 252, 253, 254, 255
- };
- libc_hidden_data_def(__C_ctype_tolower_data)
- libc_hidden_proto(__C_ctype_tolower)
- const __ctype_touplow_t *__C_ctype_tolower = __C_ctype_tolower_data
- + __UCLIBC_CTYPE_TO_TBL_OFFSET;
- libc_hidden_data_def(__C_ctype_tolower)
- #ifndef __UCLIBC_HAS_XLOCALE__
- libc_hidden_proto(__ctype_tolower)
- const __ctype_touplow_t *__ctype_tolower = __C_ctype_tolower_data
- + __UCLIBC_CTYPE_TO_TBL_OFFSET;
- libc_hidden_data_def(__ctype_tolower)
- #endif
- #endif
- /**********************************************************************/
- #ifdef L___C_ctype_toupper
- extern const __ctype_touplow_t __C_ctype_toupper_data[];
- libc_hidden_proto(__C_ctype_toupper_data)
- const __ctype_touplow_t __C_ctype_toupper_data[] = {
- #ifdef __UCLIBC_HAS_CTYPE_SIGNED__
- -128, -127, -126, -125,
- -124, -123, -122, -121,
- -120, -119, -118, -117,
- -116, -115, -114, -113,
- -112, -111, -110, -109,
- -108, -107, -106, -105,
- -104, -103, -102, -101,
- -100, -99, -98, -97,
- -96, -95, -94, -93,
- -92, -91, -90, -89,
- -88, -87, -86, -85,
- -84, -83, -82, -81,
- -80, -79, -78, -77,
- -76, -75, -74, -73,
- -72, -71, -70, -69,
- -68, -67, -66, -65,
- -64, -63, -62, -61,
- -60, -59, -58, -57,
- -56, -55, -54, -53,
- -52, -51, -50, -49,
- -48, -47, -46, -45,
- -44, -43, -42, -41,
- -40, -39, -38, -37,
- -36, -35, -34, -33,
- -32, -31, -30, -29,
- -28, -27, -26, -25,
- -24, -23, -22, -21,
- -20, -19, -18, -17,
- -16, -15, -14, -13,
- -12, -11, -10, -9,
- -8, -7, -6, -5,
- -4, -3, -2, -1,
- #endif /* __UCLIBC_HAS_CTYPE_SIGNED__*/
- 0, 1, 2, 3,
- 4, 5, 6, 7,
- 8, 9, 10, 11,
- 12, 13, 14, 15,
- 16, 17, 18, 19,
- 20, 21, 22, 23,
- 24, 25, 26, 27,
- 28, 29, 30, 31,
- 32, 33, 34, 35,
- 36, 37, 38, 39,
- 40, 41, 42, 43,
- 44, 45, 46, 47,
- 48, 49, 50, 51,
- 52, 53, 54, 55,
- 56, 57, 58, 59,
- 60, 61, 62, 63,
- 64, 65, 66, 67,
- 68, 69, 70, 71,
- 72, 73, 74, 75,
- 76, 77, 78, 79,
- 80, 81, 82, 83,
- 84, 85, 86, 87,
- 88, 89, 90, 91,
- 92, 93, 94, 95,
- 96, 65 /* A */, 66 /* B */, 67 /* C */,
- 68 /* D */, 69 /* E */, 70 /* F */, 71 /* G */,
- 72 /* H */, 73 /* I */, 74 /* J */, 75 /* K */,
- 76 /* L */, 77 /* M */, 78 /* N */, 79 /* O */,
- 80 /* P */, 81 /* Q */, 82 /* R */, 83 /* S */,
- 84 /* T */, 85 /* U */, 86 /* V */, 87 /* W */,
- 88 /* X */, 89 /* Y */, 90 /* Z */, 123,
- 124, 125, 126, 127,
- 128, 129, 130, 131,
- 132, 133, 134, 135,
- 136, 137, 138, 139,
- 140, 141, 142, 143,
- 144, 145, 146, 147,
- 148, 149, 150, 151,
- 152, 153, 154, 155,
- 156, 157, 158, 159,
- 160, 161, 162, 163,
- 164, 165, 166, 167,
- 168, 169, 170, 171,
- 172, 173, 174, 175,
- 176, 177, 178, 179,
- 180, 181, 182, 183,
- 184, 185, 186, 187,
- 188, 189, 190, 191,
- 192, 193, 194, 195,
- 196, 197, 198, 199,
- 200, 201, 202, 203,
- 204, 205, 206, 207,
- 208, 209, 210, 211,
- 212, 213, 214, 215,
- 216, 217, 218, 219,
- 220, 221, 222, 223,
- 224, 225, 226, 227,
- 228, 229, 230, 231,
- 232, 233, 234, 235,
- 236, 237, 238, 239,
- 240, 241, 242, 243,
- 244, 245, 246, 247,
- 248, 249, 250, 251,
- 252, 253, 254, 255
- };
- libc_hidden_data_def(__C_ctype_toupper_data)
- libc_hidden_proto(__C_ctype_toupper)
- const __ctype_touplow_t *__C_ctype_toupper = __C_ctype_toupper_data
- + __UCLIBC_CTYPE_TO_TBL_OFFSET;
- libc_hidden_data_def(__C_ctype_toupper)
- #ifndef __UCLIBC_HAS_XLOCALE__
- libc_hidden_proto(__ctype_toupper)
- const __ctype_touplow_t *__ctype_toupper = __C_ctype_toupper_data
- + __UCLIBC_CTYPE_TO_TBL_OFFSET;
- libc_hidden_data_def(__ctype_toupper)
- #endif
- #endif
- /**********************************************************************/
|