/* 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, see * . */ /* 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 #include #include #include #include #include #include /**********************************************************************/ #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__ */ #undef PASTE2 #define PASTE2(X,Y) X ## Y #ifdef __UCLIBC_HAS_CTYPE_TABLES__ #undef CTYPE_NAME #undef ISCTYPE #undef CTYPE_ALIAS #undef CTYPE_DEF #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) #define CTYPE_DEF(NAME) libc_hidden_def(is ## NAME ## _l) #else #define CTYPE_NAME(X) is ## X #define ISCTYPE(C,F) __isctype( C, F ) #define CTYPE_ALIAS(NAME) #define CTYPE_DEF(NAME) libc_hidden_def(is ## NAME) #endif #undef CTYPE_BODY #if defined(__UCLIBC_HAS_CTYPE_ENFORCED__) /* Make sure assert is active for to*() funcs below. */ #undef NDEBUG #include 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_DEF(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 CTYPE_DEF(NAME) libc_hidden_def(is ## NAME) #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__ 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_DEF(digit) 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_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 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_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 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; } #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__ */ int isascii(int c) { return __isascii(c); /* locale-independent */ } #endif /* __UCLIBC_HAS_CTYPE_TABLES__ */ CTYPE_DEF(ascii) #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 /**********************************************************************/ #ifdef L___ctype_b_loc #ifdef __UCLIBC_HAS_XLOCALE__ const __ctype_mask_t **__ctype_b_loc(void) { return &(__UCLIBC_CURLOCALE->__ctype_b); } libc_hidden_def(__ctype_b_loc) #endif #endif /**********************************************************************/ #ifdef L___ctype_tolower_loc #ifdef __UCLIBC_HAS_XLOCALE__ const __ctype_touplow_t **__ctype_tolower_loc(void) { return &(__UCLIBC_CURLOCALE->__ctype_tolower); } libc_hidden_def(__ctype_tolower_loc) #endif #endif /**********************************************************************/ #ifdef L___ctype_toupper_loc #ifdef __UCLIBC_HAS_XLOCALE__ const __ctype_touplow_t **__ctype_toupper_loc(void) { return &(__UCLIBC_CURLOCALE->__ctype_toupper); } libc_hidden_def(__ctype_toupper_loc) #endif #endif /**********************************************************************/ #ifdef L___C_ctype_b static 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 }; 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 static 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 }; 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__ 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 static 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 }; 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__ const __ctype_touplow_t *__ctype_toupper = __C_ctype_toupper_data + __UCLIBC_CTYPE_TO_TBL_OFFSET; libc_hidden_data_def(__ctype_toupper) #endif #endif /**********************************************************************/