/* 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
/**********************************************************************/