1 /* Copyright (C) 2003 Manuel Novoa III
3 * This library is free software; you can redistribute it and/or
4 * modify it under the terms of the GNU Library General Public
5 * License as published by the Free Software Foundation; either
6 * version 2 of the License, or (at your option) any later version.
8 * This library is distributed in the hope that it will be useful,
9 * but WITHOUT ANY WARRANTY; without even the implied warranty of
10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
11 * Library General Public License for more details.
13 * You should have received a copy of the GNU Library General Public
14 * License along with this library; if not, see
15 * <http://www.gnu.org/licenses/>.
18 /* ATTENTION! ATTENTION! ATTENTION! ATTENTION! ATTENTION!
20 * Besides uClibc, I'm using this code in my libc for elks, which is
21 * a 16-bit environment with a fairly limited compiler. It would make
22 * things much easier for me if this file isn't modified unnecessarily.
23 * In particular, please put any new or replacement functions somewhere
24 * else, and modify the makefile to use your version instead.
27 * ATTENTION! ATTENTION! ATTENTION! ATTENTION! ATTENTION! */
39 /**********************************************************************/
40 #ifdef __UCLIBC_HAS_CTYPE_TABLES__
42 #ifdef __UCLIBC_HAS_CTYPE_SIGNED__
45 #define CTYPE_DOMAIN_CHECK(C) \
46 (((unsigned int)((C) - CHAR_MIN)) <= (UCHAR_MAX - CHAR_MIN))
48 #define CTYPE_DOMAIN_CHECK(C) \
49 ((((unsigned int)((C) - CHAR_MIN)) <= (UCHAR_MAX - CHAR_MIN)) || ((C) == EOF))
52 #else /* __UCLIBC_HAS_CTYPE_SIGNED__ */
55 #define CTYPE_DOMAIN_CHECK(C) \
56 (((unsigned int)((C) - EOF)) <= (UCHAR_MAX - EOF))
58 #define CTYPE_DOMAIN_CHECK(C) \
59 ((((unsigned int)(C)) <= UCHAR_MAX) || ((C) == EOF))
62 #endif /* __UCLIBC_HAS_CTYPE_SIGNED__ */
64 #endif /* __UCLIBC_HAS_CTYPE_TABLES__ */
67 #define PASTE2(X,Y) X ## Y
69 #ifdef __UCLIBC_HAS_CTYPE_TABLES__
75 #ifdef __UCLIBC_DO_XLOCALE
76 #define CTYPE_NAME(X) __is ## X ## _l
77 #define ISCTYPE(C,F) __isctype_l( C, F, locale_arg)
78 #define CTYPE_ALIAS(NAME) strong_alias( __is ## NAME ## _l , is ## NAME ## _l)
79 #define CTYPE_DEF(NAME) libc_hidden_def(is ## NAME ## _l)
81 #define CTYPE_NAME(X) is ## X
82 #define ISCTYPE(C,F) __isctype( C, F )
83 #define CTYPE_ALIAS(NAME)
84 #define CTYPE_DEF(NAME) libc_hidden_def(is ## NAME)
90 #if defined(__UCLIBC_HAS_CTYPE_ENFORCED__)
91 /* Make sure assert is active for to*() funcs below. */
95 extern void __isctype_assert(int c
, int mask
) __attribute__ ((__noreturn__
)) attribute_hidden
;
97 #define CTYPE_BODY(NAME,C,MASK) \
98 if (CTYPE_DOMAIN_CHECK(C)) { \
99 return ISCTYPE(C, MASK); \
101 __isctype_assert(C, MASK);
103 #elif defined(__UCLIBC_HAS_CTYPE_CHECKED__)
105 #define CTYPE_BODY(NAME,C,MASK) \
106 return CTYPE_DOMAIN_CHECK(C) \
110 #elif defined(__UCLIBC_HAS_CTYPE_UNSAFE__)
112 #define CTYPE_BODY(NAME,C,MASK) \
113 return ISCTYPE(C, MASK);
116 #else /* No checking done. */
118 #error Unknown type of ctype checking!
124 #define IS_FUNC_BODY(NAME) \
125 int CTYPE_NAME(NAME) (int c __LOCALE_PARAM ); \
126 int CTYPE_NAME(NAME) (int c __LOCALE_PARAM ) \
128 CTYPE_BODY(NAME,c,PASTE2(_IS,NAME)) \
133 #else /* __UCLIBC_HAS_CTYPE_TABLES__ */
135 #define C_MACRO(X) PASTE2(__C_is,X)(c)
136 #define CTYPE_NAME(X) is ## X
137 #define CTYPE_DEF(NAME) libc_hidden_def(is ## NAME)
139 #define IS_FUNC_BODY(NAME) \
140 int CTYPE_NAME(NAME) (int c) \
142 return C_MACRO(NAME); \
145 #endif /* __UCLIBC_HAS_CTYPE_TABLES__ */
146 /**********************************************************************/
147 #ifdef L___ctype_assert
148 #ifdef __UCLIBC_HAS_CTYPE_ENFORCED__
151 attribute_hidden
void __isctype_assert(int c
, int mask
)
153 fprintf(stderr
, "%s: __is*{_l}(%d,%#x {locale})\n", __uclibc_progname
, c
, mask
);
159 /**********************************************************************/
160 #if defined(L_isalnum) || defined(L_isalnum_l)
165 /**********************************************************************/
166 #if defined(L_isalpha) || defined(L_isalpha_l)
171 /**********************************************************************/
172 #if defined(L_isblank) || defined(L_isblank_l)
177 /**********************************************************************/
178 #if defined(L_iscntrl) || defined(L_iscntrl_l)
183 /**********************************************************************/
184 #if defined(L_isdigit) || defined(L_isdigit_l)
186 #ifdef __UCLIBC_HAS_CTYPE_TABLES__
188 /* The standards require EOF < 0. */
190 #define __isdigit_char_or_EOF(C) __isdigit_char((C))
192 #define __isdigit_char_or_EOF(C) __isdigit_int((C))
195 int CTYPE_NAME(digit
) (int C __LOCALE_PARAM
);
196 int CTYPE_NAME(digit
) (int C __LOCALE_PARAM
)
198 #if defined(__UCLIBC_HAS_CTYPE_ENFORCED__)
199 if (CTYPE_DOMAIN_CHECK(C
)) {
200 return __isdigit_char_or_EOF(C
); /* C is (unsigned) char or EOF. */
202 __isctype_assert(C
, _ISdigit
);
204 return __isdigit_int(C
); /* C could be invalid. */
210 #else /* __UCLIBC_HAS_CTYPE_TABLES__ */
214 #endif /* __UCLIBC_HAS_CTYPE_TABLES__ */
217 /**********************************************************************/
218 #if defined(L_isgraph) || defined(L_isgraph_l)
223 /**********************************************************************/
224 #if defined(L_islower) || defined(L_islower_l)
229 /**********************************************************************/
230 #if defined(L_isprint) || defined(L_isprint_l)
235 /**********************************************************************/
236 #if defined(L_ispunct) || defined(L_ispunct_l)
241 /**********************************************************************/
242 #if defined(L_isspace) || defined(L_isspace_l)
247 /**********************************************************************/
248 #if defined(L_isupper) || defined(L_isupper_l)
253 /**********************************************************************/
254 #if defined(L_isxdigit) || defined(L_isxdigit_l)
256 IS_FUNC_BODY(xdigit
);
259 /**********************************************************************/
263 #ifdef __UCLIBC_HAS_CTYPE_TABLES__
267 #if defined(__UCLIBC_HAS_CTYPE_ENFORCED__)
268 assert(CTYPE_DOMAIN_CHECK(c
));
270 return __UCLIBC_CTYPE_IN_TO_DOMAIN(c
) ? (__UCLIBC_CTYPE_TOLOWER
)[c
] : c
;
273 #else /* __UCLIBC_HAS_CTYPE_TABLES__ */
277 return __C_tolower(c
);
280 #endif /* __UCLIBC_HAS_CTYPE_TABLES__ */
281 libc_hidden_def(tolower
)
284 /**********************************************************************/
288 int tolower_l(int c
, __locale_t l
)
290 #if defined(__UCLIBC_HAS_CTYPE_ENFORCED__)
291 assert(CTYPE_DOMAIN_CHECK(c
));
293 return __UCLIBC_CTYPE_IN_TO_DOMAIN(c
) ? l
->__ctype_tolower
[c
] : c
;
295 libc_hidden_def(tolower_l
)
298 /**********************************************************************/
302 #ifdef __UCLIBC_HAS_CTYPE_TABLES__
306 #if defined(__UCLIBC_HAS_CTYPE_ENFORCED__)
307 assert(CTYPE_DOMAIN_CHECK(c
));
309 return __UCLIBC_CTYPE_IN_TO_DOMAIN(c
) ? (__UCLIBC_CTYPE_TOUPPER
)[c
] : c
;
312 #else /* __UCLIBC_HAS_CTYPE_TABLES__ */
316 return __C_toupper(c
);
319 #endif /* __UCLIBC_HAS_CTYPE_TABLES__ */
320 libc_hidden_def(toupper
)
323 /**********************************************************************/
327 int toupper_l(int c
, __locale_t l
)
329 #if defined(__UCLIBC_HAS_CTYPE_ENFORCED__)
330 assert(CTYPE_DOMAIN_CHECK(c
));
332 return __UCLIBC_CTYPE_IN_TO_DOMAIN(c
) ? l
->__ctype_toupper
[c
] : c
;
336 /**********************************************************************/
337 #if defined(L_isascii) || defined(L_isascii_l)
339 #ifdef __UCLIBC_HAS_CTYPE_TABLES__
341 int __XL_NPP(isascii
)(int c
);
342 int __XL_NPP(isascii
)(int c
)
344 return __isascii(c
); /* locale-independent */
347 #else /* __UCLIBC_HAS_CTYPE_TABLES__ */
351 return __isascii(c
); /* locale-independent */
354 #endif /* __UCLIBC_HAS_CTYPE_TABLES__ */
359 /**********************************************************************/
360 #if defined(L_toascii) || defined(L_toascii_l)
362 #ifdef __UCLIBC_HAS_CTYPE_TABLES__
364 int __XL_NPP(toascii
)(int c
);
365 int __XL_NPP(toascii
)(int c
)
367 return __toascii(c
); /* locale-independent */
370 #else /* __UCLIBC_HAS_CTYPE_TABLES__ */
374 return __toascii(c
); /* locale-independent */
377 #endif /* __UCLIBC_HAS_CTYPE_TABLES__ */
380 /**********************************************************************/
381 /* glibc extensions */
382 /**********************************************************************/
385 int isctype(int c
, int mask
)
387 CTYPE_BODY(NAME
,c
,mask
)
391 /**********************************************************************/
392 #ifdef L___ctype_b_loc
394 #ifdef __UCLIBC_HAS_XLOCALE__
396 const __ctype_mask_t
**__ctype_b_loc(void)
398 return &(__UCLIBC_CURLOCALE
->__ctype_b
);
401 libc_hidden_def(__ctype_b_loc
)
405 /**********************************************************************/
406 #ifdef L___ctype_tolower_loc
408 #ifdef __UCLIBC_HAS_XLOCALE__
410 const __ctype_touplow_t
**__ctype_tolower_loc(void)
412 return &(__UCLIBC_CURLOCALE
->__ctype_tolower
);
414 libc_hidden_def(__ctype_tolower_loc
)
419 /**********************************************************************/
420 #ifdef L___ctype_toupper_loc
422 #ifdef __UCLIBC_HAS_XLOCALE__
424 const __ctype_touplow_t
**__ctype_toupper_loc(void)
426 return &(__UCLIBC_CURLOCALE
->__ctype_toupper
);
428 libc_hidden_def(__ctype_toupper_loc
)
433 /**********************************************************************/
436 static const __ctype_mask_t __C_ctype_b_data
[] = {
437 #ifdef __UCLIBC_HAS_CTYPE_SIGNED__
565 #endif /* __UCLIBC_HAS_CTYPE_SIGNED__*/
576 /* 9 ^I */ _ISspace
|_ISblank
|_IScntrl
,
577 /* 10 ^J */ _ISspace
|_IScntrl
,
578 /* 11 ^K */ _ISspace
|_IScntrl
,
579 /* 12 ^L */ _ISspace
|_IScntrl
,
580 /* 13 ^M */ _ISspace
|_IScntrl
,
581 /* 14 ^N */ _IScntrl
,
582 /* 15 ^O */ _IScntrl
,
583 /* 16 ^P */ _IScntrl
,
584 /* 17 ^Q */ _IScntrl
,
585 /* 18 ^R */ _IScntrl
,
586 /* 19 ^S */ _IScntrl
,
587 /* 20 ^T */ _IScntrl
,
588 /* 21 ^U */ _IScntrl
,
589 /* 22 ^V */ _IScntrl
,
590 /* 23 ^W */ _IScntrl
,
591 /* 24 ^X */ _IScntrl
,
592 /* 25 ^Y */ _IScntrl
,
593 /* 26 ^Z */ _IScntrl
,
594 /* 27 ^[ */ _IScntrl
,
595 /* 28 ^\ */ _IScntrl
,
596 /* 29 ^] */ _IScntrl
,
597 /* 30 ^^ */ _IScntrl
,
598 /* 31 ^_ */ _IScntrl
,
599 /* 32 */ _ISspace
|_ISprint
|_ISblank
,
600 /* 33 ! */ _ISprint
|_ISgraph
|_ISpunct
,
601 /* 34 " */ _ISprint
|_ISgraph
|_ISpunct
,
602 /* 35 # */ _ISprint
|_ISgraph
|_ISpunct
,
603 /* 36 $ */ _ISprint
|_ISgraph
|_ISpunct
,
604 /* 37 % */ _ISprint
|_ISgraph
|_ISpunct
,
605 /* 38 & */ _ISprint
|_ISgraph
|_ISpunct
,
606 /* 39 ' */ _ISprint
|_ISgraph
|_ISpunct
,
607 /* 40 ( */ _ISprint
|_ISgraph
|_ISpunct
,
608 /* 41 ) */ _ISprint
|_ISgraph
|_ISpunct
,
609 /* 42 * */ _ISprint
|_ISgraph
|_ISpunct
,
610 /* 43 + */ _ISprint
|_ISgraph
|_ISpunct
,
611 /* 44 , */ _ISprint
|_ISgraph
|_ISpunct
,
612 /* 45 - */ _ISprint
|_ISgraph
|_ISpunct
,
613 /* 46 . */ _ISprint
|_ISgraph
|_ISpunct
,
614 /* 47 / */ _ISprint
|_ISgraph
|_ISpunct
,
615 /* 48 0 */ _ISdigit
|_ISxdigit
|_ISprint
|_ISgraph
|_ISalnum
,
616 /* 49 1 */ _ISdigit
|_ISxdigit
|_ISprint
|_ISgraph
|_ISalnum
,
617 /* 50 2 */ _ISdigit
|_ISxdigit
|_ISprint
|_ISgraph
|_ISalnum
,
618 /* 51 3 */ _ISdigit
|_ISxdigit
|_ISprint
|_ISgraph
|_ISalnum
,
619 /* 52 4 */ _ISdigit
|_ISxdigit
|_ISprint
|_ISgraph
|_ISalnum
,
620 /* 53 5 */ _ISdigit
|_ISxdigit
|_ISprint
|_ISgraph
|_ISalnum
,
621 /* 54 6 */ _ISdigit
|_ISxdigit
|_ISprint
|_ISgraph
|_ISalnum
,
622 /* 55 7 */ _ISdigit
|_ISxdigit
|_ISprint
|_ISgraph
|_ISalnum
,
623 /* 56 8 */ _ISdigit
|_ISxdigit
|_ISprint
|_ISgraph
|_ISalnum
,
624 /* 57 9 */ _ISdigit
|_ISxdigit
|_ISprint
|_ISgraph
|_ISalnum
,
625 /* 58 : */ _ISprint
|_ISgraph
|_ISpunct
,
626 /* 59 ; */ _ISprint
|_ISgraph
|_ISpunct
,
627 /* 60 < */ _ISprint
|_ISgraph
|_ISpunct
,
628 /* 61 = */ _ISprint
|_ISgraph
|_ISpunct
,
629 /* 62 > */ _ISprint
|_ISgraph
|_ISpunct
,
630 /* 63 ? */ _ISprint
|_ISgraph
|_ISpunct
,
631 /* 64 @ */ _ISprint
|_ISgraph
|_ISpunct
,
632 /* 65 A */ _ISupper
|_ISalpha
|_ISxdigit
|_ISprint
|_ISgraph
|_ISalnum
,
633 /* 66 B */ _ISupper
|_ISalpha
|_ISxdigit
|_ISprint
|_ISgraph
|_ISalnum
,
634 /* 67 C */ _ISupper
|_ISalpha
|_ISxdigit
|_ISprint
|_ISgraph
|_ISalnum
,
635 /* 68 D */ _ISupper
|_ISalpha
|_ISxdigit
|_ISprint
|_ISgraph
|_ISalnum
,
636 /* 69 E */ _ISupper
|_ISalpha
|_ISxdigit
|_ISprint
|_ISgraph
|_ISalnum
,
637 /* 70 F */ _ISupper
|_ISalpha
|_ISxdigit
|_ISprint
|_ISgraph
|_ISalnum
,
638 /* 71 G */ _ISupper
|_ISalpha
|_ISprint
|_ISgraph
|_ISalnum
,
639 /* 72 H */ _ISupper
|_ISalpha
|_ISprint
|_ISgraph
|_ISalnum
,
640 /* 73 I */ _ISupper
|_ISalpha
|_ISprint
|_ISgraph
|_ISalnum
,
641 /* 74 J */ _ISupper
|_ISalpha
|_ISprint
|_ISgraph
|_ISalnum
,
642 /* 75 K */ _ISupper
|_ISalpha
|_ISprint
|_ISgraph
|_ISalnum
,
643 /* 76 L */ _ISupper
|_ISalpha
|_ISprint
|_ISgraph
|_ISalnum
,
644 /* 77 M */ _ISupper
|_ISalpha
|_ISprint
|_ISgraph
|_ISalnum
,
645 /* 78 N */ _ISupper
|_ISalpha
|_ISprint
|_ISgraph
|_ISalnum
,
646 /* 79 O */ _ISupper
|_ISalpha
|_ISprint
|_ISgraph
|_ISalnum
,
647 /* 80 P */ _ISupper
|_ISalpha
|_ISprint
|_ISgraph
|_ISalnum
,
648 /* 81 Q */ _ISupper
|_ISalpha
|_ISprint
|_ISgraph
|_ISalnum
,
649 /* 82 R */ _ISupper
|_ISalpha
|_ISprint
|_ISgraph
|_ISalnum
,
650 /* 83 S */ _ISupper
|_ISalpha
|_ISprint
|_ISgraph
|_ISalnum
,
651 /* 84 T */ _ISupper
|_ISalpha
|_ISprint
|_ISgraph
|_ISalnum
,
652 /* 85 U */ _ISupper
|_ISalpha
|_ISprint
|_ISgraph
|_ISalnum
,
653 /* 86 V */ _ISupper
|_ISalpha
|_ISprint
|_ISgraph
|_ISalnum
,
654 /* 87 W */ _ISupper
|_ISalpha
|_ISprint
|_ISgraph
|_ISalnum
,
655 /* 88 X */ _ISupper
|_ISalpha
|_ISprint
|_ISgraph
|_ISalnum
,
656 /* 89 Y */ _ISupper
|_ISalpha
|_ISprint
|_ISgraph
|_ISalnum
,
657 /* 90 Z */ _ISupper
|_ISalpha
|_ISprint
|_ISgraph
|_ISalnum
,
658 /* 91 [ */ _ISprint
|_ISgraph
|_ISpunct
,
659 /* 92 \ */ _ISprint
|_ISgraph
|_ISpunct
,
660 /* 93 ] */ _ISprint
|_ISgraph
|_ISpunct
,
661 /* 94 ^ */ _ISprint
|_ISgraph
|_ISpunct
,
662 /* 95 _ */ _ISprint
|_ISgraph
|_ISpunct
,
663 /* 96 ` */ _ISprint
|_ISgraph
|_ISpunct
,
664 /* 97 a */ _ISlower
|_ISalpha
|_ISxdigit
|_ISprint
|_ISgraph
|_ISalnum
,
665 /* 98 b */ _ISlower
|_ISalpha
|_ISxdigit
|_ISprint
|_ISgraph
|_ISalnum
,
666 /* 99 c */ _ISlower
|_ISalpha
|_ISxdigit
|_ISprint
|_ISgraph
|_ISalnum
,
667 /* 100 d */ _ISlower
|_ISalpha
|_ISxdigit
|_ISprint
|_ISgraph
|_ISalnum
,
668 /* 101 e */ _ISlower
|_ISalpha
|_ISxdigit
|_ISprint
|_ISgraph
|_ISalnum
,
669 /* 102 f */ _ISlower
|_ISalpha
|_ISxdigit
|_ISprint
|_ISgraph
|_ISalnum
,
670 /* 103 g */ _ISlower
|_ISalpha
|_ISprint
|_ISgraph
|_ISalnum
,
671 /* 104 h */ _ISlower
|_ISalpha
|_ISprint
|_ISgraph
|_ISalnum
,
672 /* 105 i */ _ISlower
|_ISalpha
|_ISprint
|_ISgraph
|_ISalnum
,
673 /* 106 j */ _ISlower
|_ISalpha
|_ISprint
|_ISgraph
|_ISalnum
,
674 /* 107 k */ _ISlower
|_ISalpha
|_ISprint
|_ISgraph
|_ISalnum
,
675 /* 108 l */ _ISlower
|_ISalpha
|_ISprint
|_ISgraph
|_ISalnum
,
676 /* 109 m */ _ISlower
|_ISalpha
|_ISprint
|_ISgraph
|_ISalnum
,
677 /* 110 n */ _ISlower
|_ISalpha
|_ISprint
|_ISgraph
|_ISalnum
,
678 /* 111 o */ _ISlower
|_ISalpha
|_ISprint
|_ISgraph
|_ISalnum
,
679 /* 112 p */ _ISlower
|_ISalpha
|_ISprint
|_ISgraph
|_ISalnum
,
680 /* 113 q */ _ISlower
|_ISalpha
|_ISprint
|_ISgraph
|_ISalnum
,
681 /* 114 r */ _ISlower
|_ISalpha
|_ISprint
|_ISgraph
|_ISalnum
,
682 /* 115 s */ _ISlower
|_ISalpha
|_ISprint
|_ISgraph
|_ISalnum
,
683 /* 116 t */ _ISlower
|_ISalpha
|_ISprint
|_ISgraph
|_ISalnum
,
684 /* 117 u */ _ISlower
|_ISalpha
|_ISprint
|_ISgraph
|_ISalnum
,
685 /* 118 v */ _ISlower
|_ISalpha
|_ISprint
|_ISgraph
|_ISalnum
,
686 /* 119 w */ _ISlower
|_ISalpha
|_ISprint
|_ISgraph
|_ISalnum
,
687 /* 120 x */ _ISlower
|_ISalpha
|_ISprint
|_ISgraph
|_ISalnum
,
688 /* 121 y */ _ISlower
|_ISalpha
|_ISprint
|_ISgraph
|_ISalnum
,
689 /* 122 z */ _ISlower
|_ISalpha
|_ISprint
|_ISgraph
|_ISalnum
,
690 /* 123 { */ _ISprint
|_ISgraph
|_ISpunct
,
691 /* 124 | */ _ISprint
|_ISgraph
|_ISpunct
,
692 /* 125 } */ _ISprint
|_ISgraph
|_ISpunct
,
693 /* 126 ~ */ _ISprint
|_ISgraph
|_ISpunct
,
694 /* 127 ^? */ _IScntrl
,
825 const __ctype_mask_t
*__C_ctype_b
= __C_ctype_b_data
+ __UCLIBC_CTYPE_B_TBL_OFFSET
;
826 libc_hidden_data_def(__C_ctype_b
)
828 #ifndef __UCLIBC_HAS_XLOCALE__
830 const __ctype_mask_t
*__ctype_b
= __C_ctype_b_data
+ __UCLIBC_CTYPE_B_TBL_OFFSET
;
831 libc_hidden_data_def(__ctype_b
)
836 /**********************************************************************/
837 #ifdef L___C_ctype_tolower
839 static const __ctype_touplow_t __C_ctype_tolower_data
[] = {
840 #ifdef __UCLIBC_HAS_CTYPE_SIGNED__
841 -128, -127, -126, -125,
842 -124, -123, -122, -121,
843 -120, -119, -118, -117,
844 -116, -115, -114, -113,
845 -112, -111, -110, -109,
846 -108, -107, -106, -105,
847 -104, -103, -102, -101,
873 #endif /* __UCLIBC_HAS_CTYPE_SIGNED__*/
890 64, 97 /* a */, 98 /* b */, 99 /* c */,
891 100 /* d */, 101 /* e */, 102 /* f */, 103 /* g */,
892 104 /* h */, 105 /* i */, 106 /* j */, 107 /* k */,
893 108 /* l */, 109 /* m */, 110 /* n */, 111 /* o */,
894 112 /* p */, 113 /* q */, 114 /* r */, 115 /* s */,
895 116 /* t */, 117 /* u */, 118 /* v */, 119 /* w */,
896 120 /* x */, 121 /* y */, 122 /* z */, 91,
940 const __ctype_touplow_t
*__C_ctype_tolower
=
941 __C_ctype_tolower_data
+ __UCLIBC_CTYPE_TO_TBL_OFFSET
;
942 libc_hidden_data_def(__C_ctype_tolower
)
944 #ifndef __UCLIBC_HAS_XLOCALE__
946 const __ctype_touplow_t
*__ctype_tolower
=
947 __C_ctype_tolower_data
+ __UCLIBC_CTYPE_TO_TBL_OFFSET
;
948 libc_hidden_data_def(__ctype_tolower
)
953 /**********************************************************************/
954 #ifdef L___C_ctype_toupper
956 static const __ctype_touplow_t __C_ctype_toupper_data
[] = {
957 #ifdef __UCLIBC_HAS_CTYPE_SIGNED__
958 -128, -127, -126, -125,
959 -124, -123, -122, -121,
960 -120, -119, -118, -117,
961 -116, -115, -114, -113,
962 -112, -111, -110, -109,
963 -108, -107, -106, -105,
964 -104, -103, -102, -101,
990 #endif /* __UCLIBC_HAS_CTYPE_SIGNED__*/
1015 96, 65 /* A */, 66 /* B */, 67 /* C */,
1016 68 /* D */, 69 /* E */, 70 /* F */, 71 /* G */,
1017 72 /* H */, 73 /* I */, 74 /* J */, 75 /* K */,
1018 76 /* L */, 77 /* M */, 78 /* N */, 79 /* O */,
1019 80 /* P */, 81 /* Q */, 82 /* R */, 83 /* S */,
1020 84 /* T */, 85 /* U */, 86 /* V */, 87 /* W */,
1021 88 /* X */, 89 /* Y */, 90 /* Z */, 123,
1057 const __ctype_touplow_t
*__C_ctype_toupper
=
1058 __C_ctype_toupper_data
+ __UCLIBC_CTYPE_TO_TBL_OFFSET
;
1059 libc_hidden_data_def(__C_ctype_toupper
)
1061 #ifndef __UCLIBC_HAS_XLOCALE__
1063 const __ctype_touplow_t
*__ctype_toupper
=
1064 __C_ctype_toupper_data
+ __UCLIBC_CTYPE_TO_TBL_OFFSET
;
1065 libc_hidden_data_def(__ctype_toupper
)
1070 /**********************************************************************/