OSDN Git Service

global data uses libc_hidden_data_def, convert all -I hope- and add some new
[uclinux-h8/uClibc.git] / libc / misc / ctype / ctype.c
1 /*  Copyright (C) 2003     Manuel Novoa III
2  *
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.
7  *
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.
12  *
13  *  You should have received a copy of the GNU Library General Public
14  *  License along with this library; if not, write to the Free
15  *  Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
16  */
17
18 /*  ATTENTION!   ATTENTION!   ATTENTION!   ATTENTION!   ATTENTION!
19  *
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.
25  *  Thanks.  Manuel
26  *
27  *  ATTENTION!   ATTENTION!   ATTENTION!   ATTENTION!   ATTENTION! */
28
29 #define __NO_CTYPE
30
31 #include <ctype.h>
32 #include <stdio.h>
33 #include <stdlib.h>
34 #include <limits.h>
35 #include <stdint.h>
36 #include <assert.h>
37 #include <locale.h>
38 #ifdef __UCLIBC_HAS_XLOCALE__
39 libc_hidden_proto(__ctype_b_loc)
40 #else
41 libc_hidden_proto(__ctype_b)
42 #endif
43
44 #ifdef __UCLIBC_HAS_XLOCALE__
45 #include <xlocale.h>
46 #endif /* __UCLIBC_HAS_XLOCALE__ */
47
48 /**********************************************************************/
49 #ifdef __UCLIBC_HAS_CTYPE_TABLES__
50
51 #ifdef __UCLIBC_HAS_CTYPE_SIGNED__
52
53 #if EOF >= CHAR_MIN
54 #define CTYPE_DOMAIN_CHECK(C) \
55         (((unsigned int)((C) - CHAR_MIN)) <= (UCHAR_MAX - CHAR_MIN))
56 #else
57 #define CTYPE_DOMAIN_CHECK(C) \
58         ((((unsigned int)((C) - CHAR_MIN)) <= (UCHAR_MAX - CHAR_MIN)) || ((C) == EOF))
59 #endif
60
61 #else  /* __UCLIBC_HAS_CTYPE_SIGNED__ */
62
63 #if EOF == -1
64 #define CTYPE_DOMAIN_CHECK(C) \
65         (((unsigned int)((C) - EOF)) <= (UCHAR_MAX - EOF))
66 #else
67 #define CTYPE_DOMAIN_CHECK(C) \
68         ((((unsigned int)(C)) <= UCHAR_MAX) || ((C) == EOF))
69 #endif
70
71 #endif /* __UCLIBC_HAS_CTYPE_SIGNED__ */
72
73 #endif /* __UCLIBC_HAS_CTYPE_TABLES__ */
74 /**********************************************************************/
75 #ifdef __UCLIBC_MJN3_ONLY__
76 #ifdef L_isspace
77 /* emit only once */
78 #warning CONSIDER: Should we assert when debugging and __UCLIBC_HAS_CTYPE_CHECKED?
79 #warning TODO: Fix asserts in to{upper|lower}{_l}.
80 #warning TODO: Optimize the isx*() funcs.
81 #endif
82 #endif /* __UCLIBC_MJN3_ONLY__ */
83 /**********************************************************************/
84 #undef PASTE2
85 #define PASTE2(X,Y)    X ## Y
86
87 #ifdef __UCLIBC_HAS_CTYPE_TABLES__
88
89 #undef CTYPE_NAME
90 #undef ISCTYPE
91 #undef CTYPE_ALIAS
92 #ifdef __UCLIBC_DO_XLOCALE
93 #define CTYPE_NAME(X)  __is ## X ## _l
94 #define ISCTYPE(C,F)   __isctype_l( C, F, locale_arg)
95 #define CTYPE_ALIAS(NAME)    strong_alias( __is ## NAME ## _l , is ## NAME ## _l)
96 #else
97 #define CTYPE_NAME(X)  is ## X
98 #define ISCTYPE(C,F)   __isctype( C, F )
99 #define CTYPE_ALIAS(NAME)
100 #endif
101
102
103 #undef CTYPE_BODY
104
105 #if defined(__UCLIBC_HAS_CTYPE_ENFORCED__)
106 /* Make sure assert is active for to*() funcs below. */
107 #undef NDEBUG
108 #include <assert.h>
109
110 extern void __isctype_assert(int c, int mask) __attribute__ ((__noreturn__)) attribute_hidden;
111
112 #define CTYPE_BODY(NAME,C,MASK) \
113         if (CTYPE_DOMAIN_CHECK(C)) { \
114                 return ISCTYPE(C, MASK); \
115         } \
116         __isctype_assert(C, MASK);
117
118 #elif defined(__UCLIBC_HAS_CTYPE_CHECKED__)
119
120 #define CTYPE_BODY(NAME,C,MASK) \
121         return CTYPE_DOMAIN_CHECK(C) \
122                 ? ISCTYPE(C, MASK) \
123                 : 0;
124
125 #elif defined(__UCLIBC_HAS_CTYPE_UNSAFE__)
126
127 #define CTYPE_BODY(NAME,C,MASK) \
128         return ISCTYPE(C, MASK);
129
130
131 #else  /* No checking done. */
132
133 #error Unknown type of ctype checking!
134
135 #endif
136
137
138
139 #define IS_FUNC_BODY(NAME) \
140 int CTYPE_NAME(NAME) (int c  __LOCALE_PARAM ); \
141 int CTYPE_NAME(NAME) (int c  __LOCALE_PARAM ) \
142 { \
143         CTYPE_BODY(NAME,c,PASTE2(_IS,NAME)) \
144 } \
145 CTYPE_ALIAS(NAME)
146
147
148 #else  /* __UCLIBC_HAS_CTYPE_TABLES__ */
149
150 #define C_MACRO(X)              PASTE2(__C_is,X)(c)
151 #define CTYPE_NAME(X)  is ## X
152
153 #define IS_FUNC_BODY(NAME) \
154 int CTYPE_NAME(NAME) (int c) \
155 { \
156         return C_MACRO(NAME); \
157 }
158
159 #endif /* __UCLIBC_HAS_CTYPE_TABLES__ */
160 /**********************************************************************/
161 #ifdef L___ctype_assert
162 #ifdef __UCLIBC_HAS_CTYPE_ENFORCED__
163
164 libc_hidden_proto(fprintf)
165 libc_hidden_proto(abort)
166
167 attribute_hidden void __isctype_assert(int c, int mask)
168 {
169         fprintf(stderr, "%s: __is*{_l}(%d,%#x {locale})\n", __uclibc_progname, c, mask);
170         abort();
171 }
172
173 #endif
174 #endif
175 /**********************************************************************/
176 #if defined(L_isalnum) || defined(L_isalnum_l)
177
178 IS_FUNC_BODY(alnum);
179
180 #endif
181 /**********************************************************************/
182 #if defined(L_isalpha) || defined(L_isalpha_l)
183
184 IS_FUNC_BODY(alpha);
185
186 #endif
187 /**********************************************************************/
188 #if defined(L_isblank) || defined(L_isblank_l)
189
190 IS_FUNC_BODY(blank);
191
192 #endif
193 /**********************************************************************/
194 #if defined(L_iscntrl) || defined(L_iscntrl_l)
195
196 IS_FUNC_BODY(cntrl);
197
198 #endif
199 /**********************************************************************/
200 #if defined(L_isdigit) || defined(L_isdigit_l)
201
202 #ifdef __UCLIBC_HAS_CTYPE_TABLES__
203
204 /* The standards require EOF < 0. */
205 #if EOF >= CHAR_MIN
206 #define __isdigit_char_or_EOF(C)   __isdigit_char((C))
207 #else
208 #define __isdigit_char_or_EOF(C)   __isdigit_int((C))
209 #endif
210
211 int CTYPE_NAME(digit) (int C   __LOCALE_PARAM);
212 int CTYPE_NAME(digit) (int C   __LOCALE_PARAM)
213 {
214 #if defined(__UCLIBC_HAS_CTYPE_ENFORCED__)
215         if (CTYPE_DOMAIN_CHECK(C)) {
216                 return __isdigit_char_or_EOF(C); /* C is (unsigned) char or EOF. */
217         }
218         __isctype_assert(C, _ISdigit);
219 #else
220         return __isdigit_int(C);        /* C could be invalid. */
221 #endif
222 }
223
224 CTYPE_ALIAS(digit)
225
226 #else  /* __UCLIBC_HAS_CTYPE_TABLES__ */
227
228 IS_FUNC_BODY(digit);
229
230 #endif /* __UCLIBC_HAS_CTYPE_TABLES__ */
231
232 #endif
233 /**********************************************************************/
234 #if defined(L_isgraph) || defined(L_isgraph_l)
235
236 IS_FUNC_BODY(graph);
237
238 #endif
239 /**********************************************************************/
240 #if defined(L_islower) || defined(L_islower_l)
241
242 IS_FUNC_BODY(lower);
243
244 #endif
245 /**********************************************************************/
246 #if defined(L_isprint) || defined(L_isprint_l)
247
248 IS_FUNC_BODY(print);
249
250 #endif
251 /**********************************************************************/
252 #if defined(L_ispunct) || defined(L_ispunct_l)
253
254 IS_FUNC_BODY(punct);
255
256 #endif
257 /**********************************************************************/
258 #if defined(L_isspace) || defined(L_isspace_l)
259
260 IS_FUNC_BODY(space);
261
262 #endif
263 /**********************************************************************/
264 #if defined(L_isupper) || defined(L_isupper_l)
265
266 IS_FUNC_BODY(upper);
267
268 #endif
269 /**********************************************************************/
270 #if defined(L_isxdigit) || defined(L_isxdigit_l)
271
272 IS_FUNC_BODY(xdigit);
273
274 #endif
275 /**********************************************************************/
276 #ifdef L_tolower
277
278 #undef tolower
279 #ifdef __UCLIBC_HAS_XLOCALE__
280 libc_hidden_proto(__ctype_tolower_loc)
281 #else
282 libc_hidden_proto(__ctype_tolower)
283 #endif
284 libc_hidden_proto(tolower)
285 #ifdef __UCLIBC_HAS_CTYPE_TABLES__
286
287 int tolower(int c)
288 {
289 #if defined(__UCLIBC_HAS_CTYPE_ENFORCED__)
290         assert(CTYPE_DOMAIN_CHECK(c));
291 #endif
292         return __UCLIBC_CTYPE_IN_TO_DOMAIN(c) ? (__UCLIBC_CTYPE_TOLOWER)[c] : c;
293 }
294
295 #else  /* __UCLIBC_HAS_CTYPE_TABLES__ */
296
297 int tolower(int c)
298 {
299         return __C_tolower(c);
300 }
301
302 #endif /* __UCLIBC_HAS_CTYPE_TABLES__ */
303 libc_hidden_def(tolower)
304
305 #endif
306 /**********************************************************************/
307 #ifdef L_tolower_l
308
309 #undef tolower_l
310 libc_hidden_proto(tolower_l)
311 int tolower_l(int c, __locale_t l)
312 {
313 #if defined(__UCLIBC_HAS_CTYPE_ENFORCED__)
314         assert(CTYPE_DOMAIN_CHECK(c));
315 #endif
316         return __UCLIBC_CTYPE_IN_TO_DOMAIN(c) ? l->__ctype_tolower[c] : c;
317 }
318 libc_hidden_def(tolower_l)
319
320 #endif
321 /**********************************************************************/
322 #ifdef L_toupper
323
324 #undef toupper
325 #ifdef __UCLIBC_HAS_XLOCALE__
326 libc_hidden_proto(__ctype_toupper_loc)
327 #else
328 libc_hidden_proto(__ctype_toupper)
329 #endif
330 libc_hidden_proto(toupper)
331 #ifdef __UCLIBC_HAS_CTYPE_TABLES__
332
333 int toupper(int c)
334 {
335 #if defined(__UCLIBC_HAS_CTYPE_ENFORCED__)
336         assert(CTYPE_DOMAIN_CHECK(c));
337 #endif
338         return __UCLIBC_CTYPE_IN_TO_DOMAIN(c) ? (__UCLIBC_CTYPE_TOUPPER)[c] : c;
339 }
340
341 #else  /* __UCLIBC_HAS_CTYPE_TABLES__ */
342
343 int toupper(int c)
344 {
345         return __C_toupper(c);
346 }
347
348 #endif /* __UCLIBC_HAS_CTYPE_TABLES__ */
349 libc_hidden_def(toupper)
350
351 #endif
352 /**********************************************************************/
353 #ifdef L_toupper_l
354
355 #undef toupper_l
356 libc_hidden_proto(toupper_l)
357 int toupper_l(int c, __locale_t l)
358 {
359 #if defined(__UCLIBC_HAS_CTYPE_ENFORCED__)
360         assert(CTYPE_DOMAIN_CHECK(c));
361 #endif
362         return __UCLIBC_CTYPE_IN_TO_DOMAIN(c) ? l->__ctype_toupper[c] : c;
363 }
364 libc_hidden_def(toupper_l)
365
366 #endif
367 /**********************************************************************/
368 #if defined(L_isascii) || defined(L_isascii_l)
369
370 #ifdef __UCLIBC_HAS_CTYPE_TABLES__
371
372 int __XL_NPP(isascii)(int c);
373 int __XL_NPP(isascii)(int c)
374 {
375         return __isascii(c);            /* locale-independent */
376 }
377
378 #else  /* __UCLIBC_HAS_CTYPE_TABLES__ */
379
380 libc_hidden_proto(isascii)
381 int isascii(int c)
382 {
383         return __isascii(c);            /* locale-independent */
384 }
385 libc_hidden_def(isascii)
386
387 #endif /* __UCLIBC_HAS_CTYPE_TABLES__ */
388
389 #endif
390 /**********************************************************************/
391 #if defined(L_toascii) || defined(L_toascii_l)
392
393 #ifdef __UCLIBC_HAS_CTYPE_TABLES__
394
395 int __XL_NPP(toascii)(int c);
396 int __XL_NPP(toascii)(int c)
397 {
398         return __toascii(c);            /* locale-independent */
399 }
400
401 #else  /* __UCLIBC_HAS_CTYPE_TABLES__ */
402
403 int toascii(int c)
404 {
405         return __toascii(c);            /* locale-independent */
406 }
407
408 #endif /* __UCLIBC_HAS_CTYPE_TABLES__ */
409
410 #endif
411 /**********************************************************************/
412 /* glibc extensions */
413 /**********************************************************************/
414 #ifdef L_isctype
415
416 int isctype(int c, int mask)
417 {
418         CTYPE_BODY(NAME,c,mask)
419 }
420
421 #endif
422 /**********************************************************************/
423 #if L___ctype_b_loc
424
425 #ifdef __UCLIBC_HAS_XLOCALE__
426
427 const __ctype_mask_t **__ctype_b_loc(void)
428 {
429         return &(__UCLIBC_CURLOCALE_DATA).__ctype_b;
430 }
431
432 libc_hidden_def(__ctype_b_loc)
433 #endif
434
435 #endif
436 /**********************************************************************/
437 #if L___ctype_tolower_loc
438
439 #ifdef __UCLIBC_HAS_XLOCALE__
440
441 libc_hidden_proto(__ctype_tolower_loc)
442 const __ctype_touplow_t **__ctype_tolower_loc(void)
443 {
444         return &(__UCLIBC_CURLOCALE_DATA).__ctype_tolower;
445 }
446 libc_hidden_def(__ctype_tolower_loc)
447
448 #endif
449
450 #endif
451 /**********************************************************************/
452 #if L___ctype_toupper_loc
453
454 #ifdef __UCLIBC_HAS_XLOCALE__
455
456 libc_hidden_proto(__ctype_toupper_loc)
457 const __ctype_touplow_t **__ctype_toupper_loc(void)
458 {
459         return &(__UCLIBC_CURLOCALE_DATA).__ctype_toupper;
460 }
461 libc_hidden_def(__ctype_toupper_loc)
462
463 #endif
464
465 #endif
466 /**********************************************************************/
467 #ifdef L___C_ctype_b
468
469 extern const __ctype_mask_t __C_ctype_b_data[];
470 libc_hidden_proto(__C_ctype_b_data)
471 const __ctype_mask_t __C_ctype_b_data[] = {
472 #ifdef __UCLIBC_HAS_CTYPE_SIGNED__
473         /* -128  M-^@ */ 0,
474         /* -127  M-^A */ 0,
475         /* -126  M-^B */ 0,
476         /* -125  M-^C */ 0,
477         /* -124  M-^D */ 0,
478         /* -123  M-^E */ 0,
479         /* -122  M-^F */ 0,
480         /* -121  M-^G */ 0,
481         /* -120  M-^H */ 0,
482         /* -119  M-^I */ 0,
483         /* -118  M-^J */ 0,
484         /* -117  M-^K */ 0,
485         /* -116  M-^L */ 0,
486         /* -115  M-^M */ 0,
487         /* -114  M-^N */ 0,
488         /* -113  M-^O */ 0,
489         /* -112  M-^P */ 0,
490         /* -111  M-^Q */ 0,
491         /* -110  M-^R */ 0,
492         /* -109  M-^S */ 0,
493         /* -108  M-^T */ 0,
494         /* -107  M-^U */ 0,
495         /* -106  M-^V */ 0,
496         /* -105  M-^W */ 0,
497         /* -104  M-^X */ 0,
498         /* -103  M-^Y */ 0,
499         /* -102  M-^Z */ 0,
500         /* -101  M-^[ */ 0,
501         /* -100  M-^\ */ 0,
502         /*  -99  M-^] */ 0,
503         /*  -98  M-^^ */ 0,
504         /*  -97  M-^_ */ 0,
505         /*  -96  M-   */ 0,
506         /*  -95  M-!  */ 0,
507         /*  -94  M-"  */ 0,
508         /*  -93  M-#  */ 0,
509         /*  -92  M-$  */ 0,
510         /*  -91  M-%  */ 0,
511         /*  -90  M-&  */ 0,
512         /*  -89  M-'  */ 0,
513         /*  -88  M-(  */ 0,
514         /*  -87  M-)  */ 0,
515         /*  -86  M-*  */ 0,
516         /*  -85  M-+  */ 0,
517         /*  -84  M-,  */ 0,
518         /*  -83  M--  */ 0,
519         /*  -82  M-.  */ 0,
520         /*  -81  M-/  */ 0,
521         /*  -80  M-0  */ 0,
522         /*  -79  M-1  */ 0,
523         /*  -78  M-2  */ 0,
524         /*  -77  M-3  */ 0,
525         /*  -76  M-4  */ 0,
526         /*  -75  M-5  */ 0,
527         /*  -74  M-6  */ 0,
528         /*  -73  M-7  */ 0,
529         /*  -72  M-8  */ 0,
530         /*  -71  M-9  */ 0,
531         /*  -70  M-:  */ 0,
532         /*  -69  M-;  */ 0,
533         /*  -68  M-<  */ 0,
534         /*  -67  M-=  */ 0,
535         /*  -66  M->  */ 0,
536         /*  -65  M-?  */ 0,
537         /*  -64  M-@  */ 0,
538         /*  -63  M-A  */ 0,
539         /*  -62  M-B  */ 0,
540         /*  -61  M-C  */ 0,
541         /*  -60  M-D  */ 0,
542         /*  -59  M-E  */ 0,
543         /*  -58  M-F  */ 0,
544         /*  -57  M-G  */ 0,
545         /*  -56  M-H  */ 0,
546         /*  -55  M-I  */ 0,
547         /*  -54  M-J  */ 0,
548         /*  -53  M-K  */ 0,
549         /*  -52  M-L  */ 0,
550         /*  -51  M-M  */ 0,
551         /*  -50  M-N  */ 0,
552         /*  -49  M-O  */ 0,
553         /*  -48  M-P  */ 0,
554         /*  -47  M-Q  */ 0,
555         /*  -46  M-R  */ 0,
556         /*  -45  M-S  */ 0,
557         /*  -44  M-T  */ 0,
558         /*  -43  M-U  */ 0,
559         /*  -42  M-V  */ 0,
560         /*  -41  M-W  */ 0,
561         /*  -40  M-X  */ 0,
562         /*  -39  M-Y  */ 0,
563         /*  -38  M-Z  */ 0,
564         /*  -37  M-[  */ 0,
565         /*  -36  M-\  */ 0,
566         /*  -35  M-]  */ 0,
567         /*  -34  M-^  */ 0,
568         /*  -33  M-_  */ 0,
569         /*  -32  M-`  */ 0,
570         /*  -31  M-a  */ 0,
571         /*  -30  M-b  */ 0,
572         /*  -29  M-c  */ 0,
573         /*  -28  M-d  */ 0,
574         /*  -27  M-e  */ 0,
575         /*  -26  M-f  */ 0,
576         /*  -25  M-g  */ 0,
577         /*  -24  M-h  */ 0,
578         /*  -23  M-i  */ 0,
579         /*  -22  M-j  */ 0,
580         /*  -21  M-k  */ 0,
581         /*  -20  M-l  */ 0,
582         /*  -19  M-m  */ 0,
583         /*  -18  M-n  */ 0,
584         /*  -17  M-o  */ 0,
585         /*  -16  M-p  */ 0,
586         /*  -15  M-q  */ 0,
587         /*  -14  M-r  */ 0,
588         /*  -13  M-s  */ 0,
589         /*  -12  M-t  */ 0,
590         /*  -11  M-u  */ 0,
591         /*  -10  M-v  */ 0,
592         /*   -9  M-w  */ 0,
593         /*   -8  M-x  */ 0,
594         /*   -7  M-y  */ 0,
595         /*   -6  M-z  */ 0,
596         /*   -5  M-{  */ 0,
597         /*   -4  M-|  */ 0,
598         /*   -3  M-}  */ 0,
599         /*   -2  M-~  */ 0,
600 #endif /* __UCLIBC_HAS_CTYPE_SIGNED__*/ 
601         /*   -1  M-^? */ 0,
602         /*    0  ^@   */ _IScntrl,
603         /*    1  ^A   */ _IScntrl,
604         /*    2  ^B   */ _IScntrl,
605         /*    3  ^C   */ _IScntrl,
606         /*    4  ^D   */ _IScntrl,
607         /*    5  ^E   */ _IScntrl,
608         /*    6  ^F   */ _IScntrl,
609         /*    7  ^G   */ _IScntrl,
610         /*    8  ^H   */ _IScntrl,
611         /*    9  ^I   */ _ISspace|_ISblank|_IScntrl,
612         /*   10  ^J   */ _ISspace|_IScntrl,
613         /*   11  ^K   */ _ISspace|_IScntrl,
614         /*   12  ^L   */ _ISspace|_IScntrl,
615         /*   13  ^M   */ _ISspace|_IScntrl,
616         /*   14  ^N   */ _IScntrl,
617         /*   15  ^O   */ _IScntrl,
618         /*   16  ^P   */ _IScntrl,
619         /*   17  ^Q   */ _IScntrl,
620         /*   18  ^R   */ _IScntrl,
621         /*   19  ^S   */ _IScntrl,
622         /*   20  ^T   */ _IScntrl,
623         /*   21  ^U   */ _IScntrl,
624         /*   22  ^V   */ _IScntrl,
625         /*   23  ^W   */ _IScntrl,
626         /*   24  ^X   */ _IScntrl,
627         /*   25  ^Y   */ _IScntrl,
628         /*   26  ^Z   */ _IScntrl,
629         /*   27  ^[   */ _IScntrl,
630         /*   28  ^\   */ _IScntrl,
631         /*   29  ^]   */ _IScntrl,
632         /*   30  ^^   */ _IScntrl,
633         /*   31  ^_   */ _IScntrl,
634         /*   32       */ _ISspace|_ISprint|_ISblank,
635         /*   33  !    */ _ISprint|_ISgraph|_ISpunct,
636         /*   34  "    */ _ISprint|_ISgraph|_ISpunct,
637         /*   35  #    */ _ISprint|_ISgraph|_ISpunct,
638         /*   36  $    */ _ISprint|_ISgraph|_ISpunct,
639         /*   37  %    */ _ISprint|_ISgraph|_ISpunct,
640         /*   38  &    */ _ISprint|_ISgraph|_ISpunct,
641         /*   39  '    */ _ISprint|_ISgraph|_ISpunct,
642         /*   40  (    */ _ISprint|_ISgraph|_ISpunct,
643         /*   41  )    */ _ISprint|_ISgraph|_ISpunct,
644         /*   42  *    */ _ISprint|_ISgraph|_ISpunct,
645         /*   43  +    */ _ISprint|_ISgraph|_ISpunct,
646         /*   44  ,    */ _ISprint|_ISgraph|_ISpunct,
647         /*   45  -    */ _ISprint|_ISgraph|_ISpunct,
648         /*   46  .    */ _ISprint|_ISgraph|_ISpunct,
649         /*   47  /    */ _ISprint|_ISgraph|_ISpunct,
650         /*   48  0    */ _ISdigit|_ISxdigit|_ISprint|_ISgraph|_ISalnum,
651         /*   49  1    */ _ISdigit|_ISxdigit|_ISprint|_ISgraph|_ISalnum,
652         /*   50  2    */ _ISdigit|_ISxdigit|_ISprint|_ISgraph|_ISalnum,
653         /*   51  3    */ _ISdigit|_ISxdigit|_ISprint|_ISgraph|_ISalnum,
654         /*   52  4    */ _ISdigit|_ISxdigit|_ISprint|_ISgraph|_ISalnum,
655         /*   53  5    */ _ISdigit|_ISxdigit|_ISprint|_ISgraph|_ISalnum,
656         /*   54  6    */ _ISdigit|_ISxdigit|_ISprint|_ISgraph|_ISalnum,
657         /*   55  7    */ _ISdigit|_ISxdigit|_ISprint|_ISgraph|_ISalnum,
658         /*   56  8    */ _ISdigit|_ISxdigit|_ISprint|_ISgraph|_ISalnum,
659         /*   57  9    */ _ISdigit|_ISxdigit|_ISprint|_ISgraph|_ISalnum,
660         /*   58  :    */ _ISprint|_ISgraph|_ISpunct,
661         /*   59  ;    */ _ISprint|_ISgraph|_ISpunct,
662         /*   60  <    */ _ISprint|_ISgraph|_ISpunct,
663         /*   61  =    */ _ISprint|_ISgraph|_ISpunct,
664         /*   62  >    */ _ISprint|_ISgraph|_ISpunct,
665         /*   63  ?    */ _ISprint|_ISgraph|_ISpunct,
666         /*   64  @    */ _ISprint|_ISgraph|_ISpunct,
667         /*   65  A    */ _ISupper|_ISalpha|_ISxdigit|_ISprint|_ISgraph|_ISalnum,
668         /*   66  B    */ _ISupper|_ISalpha|_ISxdigit|_ISprint|_ISgraph|_ISalnum,
669         /*   67  C    */ _ISupper|_ISalpha|_ISxdigit|_ISprint|_ISgraph|_ISalnum,
670         /*   68  D    */ _ISupper|_ISalpha|_ISxdigit|_ISprint|_ISgraph|_ISalnum,
671         /*   69  E    */ _ISupper|_ISalpha|_ISxdigit|_ISprint|_ISgraph|_ISalnum,
672         /*   70  F    */ _ISupper|_ISalpha|_ISxdigit|_ISprint|_ISgraph|_ISalnum,
673         /*   71  G    */ _ISupper|_ISalpha|_ISprint|_ISgraph|_ISalnum,
674         /*   72  H    */ _ISupper|_ISalpha|_ISprint|_ISgraph|_ISalnum,
675         /*   73  I    */ _ISupper|_ISalpha|_ISprint|_ISgraph|_ISalnum,
676         /*   74  J    */ _ISupper|_ISalpha|_ISprint|_ISgraph|_ISalnum,
677         /*   75  K    */ _ISupper|_ISalpha|_ISprint|_ISgraph|_ISalnum,
678         /*   76  L    */ _ISupper|_ISalpha|_ISprint|_ISgraph|_ISalnum,
679         /*   77  M    */ _ISupper|_ISalpha|_ISprint|_ISgraph|_ISalnum,
680         /*   78  N    */ _ISupper|_ISalpha|_ISprint|_ISgraph|_ISalnum,
681         /*   79  O    */ _ISupper|_ISalpha|_ISprint|_ISgraph|_ISalnum,
682         /*   80  P    */ _ISupper|_ISalpha|_ISprint|_ISgraph|_ISalnum,
683         /*   81  Q    */ _ISupper|_ISalpha|_ISprint|_ISgraph|_ISalnum,
684         /*   82  R    */ _ISupper|_ISalpha|_ISprint|_ISgraph|_ISalnum,
685         /*   83  S    */ _ISupper|_ISalpha|_ISprint|_ISgraph|_ISalnum,
686         /*   84  T    */ _ISupper|_ISalpha|_ISprint|_ISgraph|_ISalnum,
687         /*   85  U    */ _ISupper|_ISalpha|_ISprint|_ISgraph|_ISalnum,
688         /*   86  V    */ _ISupper|_ISalpha|_ISprint|_ISgraph|_ISalnum,
689         /*   87  W    */ _ISupper|_ISalpha|_ISprint|_ISgraph|_ISalnum,
690         /*   88  X    */ _ISupper|_ISalpha|_ISprint|_ISgraph|_ISalnum,
691         /*   89  Y    */ _ISupper|_ISalpha|_ISprint|_ISgraph|_ISalnum,
692         /*   90  Z    */ _ISupper|_ISalpha|_ISprint|_ISgraph|_ISalnum,
693         /*   91  [    */ _ISprint|_ISgraph|_ISpunct,
694         /*   92  \    */ _ISprint|_ISgraph|_ISpunct,
695         /*   93  ]    */ _ISprint|_ISgraph|_ISpunct,
696         /*   94  ^    */ _ISprint|_ISgraph|_ISpunct,
697         /*   95  _    */ _ISprint|_ISgraph|_ISpunct,
698         /*   96  `    */ _ISprint|_ISgraph|_ISpunct,
699         /*   97  a    */ _ISlower|_ISalpha|_ISxdigit|_ISprint|_ISgraph|_ISalnum,
700         /*   98  b    */ _ISlower|_ISalpha|_ISxdigit|_ISprint|_ISgraph|_ISalnum,
701         /*   99  c    */ _ISlower|_ISalpha|_ISxdigit|_ISprint|_ISgraph|_ISalnum,
702         /*  100  d    */ _ISlower|_ISalpha|_ISxdigit|_ISprint|_ISgraph|_ISalnum,
703         /*  101  e    */ _ISlower|_ISalpha|_ISxdigit|_ISprint|_ISgraph|_ISalnum,
704         /*  102  f    */ _ISlower|_ISalpha|_ISxdigit|_ISprint|_ISgraph|_ISalnum,
705         /*  103  g    */ _ISlower|_ISalpha|_ISprint|_ISgraph|_ISalnum,
706         /*  104  h    */ _ISlower|_ISalpha|_ISprint|_ISgraph|_ISalnum,
707         /*  105  i    */ _ISlower|_ISalpha|_ISprint|_ISgraph|_ISalnum,
708         /*  106  j    */ _ISlower|_ISalpha|_ISprint|_ISgraph|_ISalnum,
709         /*  107  k    */ _ISlower|_ISalpha|_ISprint|_ISgraph|_ISalnum,
710         /*  108  l    */ _ISlower|_ISalpha|_ISprint|_ISgraph|_ISalnum,
711         /*  109  m    */ _ISlower|_ISalpha|_ISprint|_ISgraph|_ISalnum,
712         /*  110  n    */ _ISlower|_ISalpha|_ISprint|_ISgraph|_ISalnum,
713         /*  111  o    */ _ISlower|_ISalpha|_ISprint|_ISgraph|_ISalnum,
714         /*  112  p    */ _ISlower|_ISalpha|_ISprint|_ISgraph|_ISalnum,
715         /*  113  q    */ _ISlower|_ISalpha|_ISprint|_ISgraph|_ISalnum,
716         /*  114  r    */ _ISlower|_ISalpha|_ISprint|_ISgraph|_ISalnum,
717         /*  115  s    */ _ISlower|_ISalpha|_ISprint|_ISgraph|_ISalnum,
718         /*  116  t    */ _ISlower|_ISalpha|_ISprint|_ISgraph|_ISalnum,
719         /*  117  u    */ _ISlower|_ISalpha|_ISprint|_ISgraph|_ISalnum,
720         /*  118  v    */ _ISlower|_ISalpha|_ISprint|_ISgraph|_ISalnum,
721         /*  119  w    */ _ISlower|_ISalpha|_ISprint|_ISgraph|_ISalnum,
722         /*  120  x    */ _ISlower|_ISalpha|_ISprint|_ISgraph|_ISalnum,
723         /*  121  y    */ _ISlower|_ISalpha|_ISprint|_ISgraph|_ISalnum,
724         /*  122  z    */ _ISlower|_ISalpha|_ISprint|_ISgraph|_ISalnum,
725         /*  123  {    */ _ISprint|_ISgraph|_ISpunct,
726         /*  124  |    */ _ISprint|_ISgraph|_ISpunct,
727         /*  125  }    */ _ISprint|_ISgraph|_ISpunct,
728         /*  126  ~    */ _ISprint|_ISgraph|_ISpunct,
729         /*  127  ^?   */ _IScntrl,
730         /*  128  M-^@ */ 0,
731         /*  129  M-^A */ 0,
732         /*  130  M-^B */ 0,
733         /*  131  M-^C */ 0,
734         /*  132  M-^D */ 0,
735         /*  133  M-^E */ 0,
736         /*  134  M-^F */ 0,
737         /*  135  M-^G */ 0,
738         /*  136  M-^H */ 0,
739         /*  137  M-^I */ 0,
740         /*  138  M-^J */ 0,
741         /*  139  M-^K */ 0,
742         /*  140  M-^L */ 0,
743         /*  141  M-^M */ 0,
744         /*  142  M-^N */ 0,
745         /*  143  M-^O */ 0,
746         /*  144  M-^P */ 0,
747         /*  145  M-^Q */ 0,
748         /*  146  M-^R */ 0,
749         /*  147  M-^S */ 0,
750         /*  148  M-^T */ 0,
751         /*  149  M-^U */ 0,
752         /*  150  M-^V */ 0,
753         /*  151  M-^W */ 0,
754         /*  152  M-^X */ 0,
755         /*  153  M-^Y */ 0,
756         /*  154  M-^Z */ 0,
757         /*  155  M-^[ */ 0,
758         /*  156  M-^\ */ 0,
759         /*  157  M-^] */ 0,
760         /*  158  M-^^ */ 0,
761         /*  159  M-^_ */ 0,
762         /*  160  M-   */ 0,
763         /*  161  M-!  */ 0,
764         /*  162  M-"  */ 0,
765         /*  163  M-#  */ 0,
766         /*  164  M-$  */ 0,
767         /*  165  M-%  */ 0,
768         /*  166  M-&  */ 0,
769         /*  167  M-'  */ 0,
770         /*  168  M-(  */ 0,
771         /*  169  M-)  */ 0,
772         /*  170  M-*  */ 0,
773         /*  171  M-+  */ 0,
774         /*  172  M-,  */ 0,
775         /*  173  M--  */ 0,
776         /*  174  M-.  */ 0,
777         /*  175  M-/  */ 0,
778         /*  176  M-0  */ 0,
779         /*  177  M-1  */ 0,
780         /*  178  M-2  */ 0,
781         /*  179  M-3  */ 0,
782         /*  180  M-4  */ 0,
783         /*  181  M-5  */ 0,
784         /*  182  M-6  */ 0,
785         /*  183  M-7  */ 0,
786         /*  184  M-8  */ 0,
787         /*  185  M-9  */ 0,
788         /*  186  M-:  */ 0,
789         /*  187  M-;  */ 0,
790         /*  188  M-<  */ 0,
791         /*  189  M-=  */ 0,
792         /*  190  M->  */ 0,
793         /*  191  M-?  */ 0,
794         /*  192  M-@  */ 0,
795         /*  193  M-A  */ 0,
796         /*  194  M-B  */ 0,
797         /*  195  M-C  */ 0,
798         /*  196  M-D  */ 0,
799         /*  197  M-E  */ 0,
800         /*  198  M-F  */ 0,
801         /*  199  M-G  */ 0,
802         /*  200  M-H  */ 0,
803         /*  201  M-I  */ 0,
804         /*  202  M-J  */ 0,
805         /*  203  M-K  */ 0,
806         /*  204  M-L  */ 0,
807         /*  205  M-M  */ 0,
808         /*  206  M-N  */ 0,
809         /*  207  M-O  */ 0,
810         /*  208  M-P  */ 0,
811         /*  209  M-Q  */ 0,
812         /*  210  M-R  */ 0,
813         /*  211  M-S  */ 0,
814         /*  212  M-T  */ 0,
815         /*  213  M-U  */ 0,
816         /*  214  M-V  */ 0,
817         /*  215  M-W  */ 0,
818         /*  216  M-X  */ 0,
819         /*  217  M-Y  */ 0,
820         /*  218  M-Z  */ 0,
821         /*  219  M-[  */ 0,
822         /*  220  M-\  */ 0,
823         /*  221  M-]  */ 0,
824         /*  222  M-^  */ 0,
825         /*  223  M-_  */ 0,
826         /*  224  M-`  */ 0,
827         /*  225  M-a  */ 0,
828         /*  226  M-b  */ 0,
829         /*  227  M-c  */ 0,
830         /*  228  M-d  */ 0,
831         /*  229  M-e  */ 0,
832         /*  230  M-f  */ 0,
833         /*  231  M-g  */ 0,
834         /*  232  M-h  */ 0,
835         /*  233  M-i  */ 0,
836         /*  234  M-j  */ 0,
837         /*  235  M-k  */ 0,
838         /*  236  M-l  */ 0,
839         /*  237  M-m  */ 0,
840         /*  238  M-n  */ 0,
841         /*  239  M-o  */ 0,
842         /*  240  M-p  */ 0,
843         /*  241  M-q  */ 0,
844         /*  242  M-r  */ 0,
845         /*  243  M-s  */ 0,
846         /*  244  M-t  */ 0,
847         /*  245  M-u  */ 0,
848         /*  246  M-v  */ 0,
849         /*  247  M-w  */ 0,
850         /*  248  M-x  */ 0,
851         /*  249  M-y  */ 0,
852         /*  250  M-z  */ 0,
853         /*  251  M-{  */ 0,
854         /*  252  M-|  */ 0,
855         /*  253  M-}  */ 0,
856         /*  254  M-~  */ 0,
857         /*  255  M-^? */ 0
858 };
859 libc_hidden_data_def(__C_ctype_b_data)
860
861 libc_hidden_proto(__C_ctype_b)
862 const __ctype_mask_t *__C_ctype_b = __C_ctype_b_data + __UCLIBC_CTYPE_B_TBL_OFFSET;
863 libc_hidden_data_def(__C_ctype_b)
864
865 #ifndef __UCLIBC_HAS_XLOCALE__
866
867 const __ctype_mask_t *__ctype_b = __C_ctype_b_data + __UCLIBC_CTYPE_B_TBL_OFFSET;
868 libc_hidden_data_def(__ctype_b)
869
870 #endif
871
872 #endif
873 /**********************************************************************/
874 #ifdef L___C_ctype_tolower
875
876 extern const __ctype_touplow_t __C_ctype_tolower_data[];
877 libc_hidden_proto(__C_ctype_tolower_data)
878 const __ctype_touplow_t __C_ctype_tolower_data[] = {
879 #ifdef __UCLIBC_HAS_CTYPE_SIGNED__
880         -128,         -127,         -126,         -125,
881         -124,         -123,         -122,         -121,
882         -120,         -119,         -118,         -117,
883         -116,         -115,         -114,         -113,
884         -112,         -111,         -110,         -109,
885         -108,         -107,         -106,         -105,
886         -104,         -103,         -102,         -101,
887         -100,          -99,          -98,          -97,
888          -96,          -95,          -94,          -93,
889          -92,          -91,          -90,          -89,
890          -88,          -87,          -86,          -85,
891          -84,          -83,          -82,          -81,
892          -80,          -79,          -78,          -77,
893          -76,          -75,          -74,          -73,
894          -72,          -71,          -70,          -69,
895          -68,          -67,          -66,          -65,
896          -64,          -63,          -62,          -61,
897          -60,          -59,          -58,          -57,
898          -56,          -55,          -54,          -53,
899          -52,          -51,          -50,          -49,
900          -48,          -47,          -46,          -45,
901          -44,          -43,          -42,          -41,
902          -40,          -39,          -38,          -37,
903          -36,          -35,          -34,          -33,
904          -32,          -31,          -30,          -29,
905          -28,          -27,          -26,          -25,
906          -24,          -23,          -22,          -21,
907          -20,          -19,          -18,          -17,
908          -16,          -15,          -14,          -13,
909          -12,          -11,          -10,           -9,
910           -8,           -7,           -6,           -5,
911           -4,           -3,           -2,           -1,
912 #endif /* __UCLIBC_HAS_CTYPE_SIGNED__*/ 
913            0,            1,            2,            3,
914            4,            5,            6,            7,
915            8,            9,           10,           11,
916           12,           13,           14,           15,
917           16,           17,           18,           19,
918           20,           21,           22,           23,
919           24,           25,           26,           27,
920           28,           29,           30,           31,
921           32,           33,           34,           35,
922           36,           37,           38,           39,
923           40,           41,           42,           43,
924           44,           45,           46,           47,
925           48,           49,           50,           51,
926           52,           53,           54,           55,
927           56,           57,           58,           59,
928           60,           61,           62,           63,
929           64,           97 /* a */,   98 /* b */,   99 /* c */,
930          100 /* d */,  101 /* e */,  102 /* f */,  103 /* g */,
931          104 /* h */,  105 /* i */,  106 /* j */,  107 /* k */,
932          108 /* l */,  109 /* m */,  110 /* n */,  111 /* o */,
933          112 /* p */,  113 /* q */,  114 /* r */,  115 /* s */,
934          116 /* t */,  117 /* u */,  118 /* v */,  119 /* w */,
935          120 /* x */,  121 /* y */,  122 /* z */,   91,
936           92,           93,           94,           95,
937           96,           97,           98,           99,
938          100,          101,          102,          103,
939          104,          105,          106,          107,
940          108,          109,          110,          111,
941          112,          113,          114,          115,
942          116,          117,          118,          119,
943          120,          121,          122,          123,
944          124,          125,          126,          127,
945          128,          129,          130,          131,
946          132,          133,          134,          135,
947          136,          137,          138,          139,
948          140,          141,          142,          143,
949          144,          145,          146,          147,
950          148,          149,          150,          151,
951          152,          153,          154,          155,
952          156,          157,          158,          159,
953          160,          161,          162,          163,
954          164,          165,          166,          167,
955          168,          169,          170,          171,
956          172,          173,          174,          175,
957          176,          177,          178,          179,
958          180,          181,          182,          183,
959          184,          185,          186,          187,
960          188,          189,          190,          191,
961          192,          193,          194,          195,
962          196,          197,          198,          199,
963          200,          201,          202,          203,
964          204,          205,          206,          207,
965          208,          209,          210,          211,
966          212,          213,          214,          215,
967          216,          217,          218,          219,
968          220,          221,          222,          223,
969          224,          225,          226,          227,
970          228,          229,          230,          231,
971          232,          233,          234,          235,
972          236,          237,          238,          239,
973          240,          241,          242,          243,
974          244,          245,          246,          247,
975          248,          249,          250,          251,
976          252,          253,          254,          255
977 };
978 libc_hidden_data_def(__C_ctype_tolower_data)
979
980 libc_hidden_proto(__C_ctype_tolower)
981 const __ctype_touplow_t *__C_ctype_tolower = __C_ctype_tolower_data
982                                                                                         + __UCLIBC_CTYPE_TO_TBL_OFFSET;
983 libc_hidden_data_def(__C_ctype_tolower)
984
985 #ifndef __UCLIBC_HAS_XLOCALE__
986
987 libc_hidden_proto(__ctype_tolower)
988 const __ctype_touplow_t *__ctype_tolower = __C_ctype_tolower_data
989                                                                                         + __UCLIBC_CTYPE_TO_TBL_OFFSET;
990 libc_hidden_data_def(__ctype_tolower)
991
992 #endif
993
994 #endif
995 /**********************************************************************/
996 #ifdef L___C_ctype_toupper
997
998 extern const __ctype_touplow_t __C_ctype_toupper_data[];
999 libc_hidden_proto(__C_ctype_toupper_data)
1000 const __ctype_touplow_t __C_ctype_toupper_data[] = {
1001 #ifdef __UCLIBC_HAS_CTYPE_SIGNED__
1002         -128,         -127,         -126,         -125,
1003         -124,         -123,         -122,         -121,
1004         -120,         -119,         -118,         -117,
1005         -116,         -115,         -114,         -113,
1006         -112,         -111,         -110,         -109,
1007         -108,         -107,         -106,         -105,
1008         -104,         -103,         -102,         -101,
1009         -100,          -99,          -98,          -97,
1010          -96,          -95,          -94,          -93,
1011          -92,          -91,          -90,          -89,
1012          -88,          -87,          -86,          -85,
1013          -84,          -83,          -82,          -81,
1014          -80,          -79,          -78,          -77,
1015          -76,          -75,          -74,          -73,
1016          -72,          -71,          -70,          -69,
1017          -68,          -67,          -66,          -65,
1018          -64,          -63,          -62,          -61,
1019          -60,          -59,          -58,          -57,
1020          -56,          -55,          -54,          -53,
1021          -52,          -51,          -50,          -49,
1022          -48,          -47,          -46,          -45,
1023          -44,          -43,          -42,          -41,
1024          -40,          -39,          -38,          -37,
1025          -36,          -35,          -34,          -33,
1026          -32,          -31,          -30,          -29,
1027          -28,          -27,          -26,          -25,
1028          -24,          -23,          -22,          -21,
1029          -20,          -19,          -18,          -17,
1030          -16,          -15,          -14,          -13,
1031          -12,          -11,          -10,           -9,
1032           -8,           -7,           -6,           -5,
1033           -4,           -3,           -2,           -1,
1034 #endif /* __UCLIBC_HAS_CTYPE_SIGNED__*/ 
1035            0,            1,            2,            3,
1036            4,            5,            6,            7,
1037            8,            9,           10,           11,
1038           12,           13,           14,           15,
1039           16,           17,           18,           19,
1040           20,           21,           22,           23,
1041           24,           25,           26,           27,
1042           28,           29,           30,           31,
1043           32,           33,           34,           35,
1044           36,           37,           38,           39,
1045           40,           41,           42,           43,
1046           44,           45,           46,           47,
1047           48,           49,           50,           51,
1048           52,           53,           54,           55,
1049           56,           57,           58,           59,
1050           60,           61,           62,           63,
1051           64,           65,           66,           67,
1052           68,           69,           70,           71,
1053           72,           73,           74,           75,
1054           76,           77,           78,           79,
1055           80,           81,           82,           83,
1056           84,           85,           86,           87,
1057           88,           89,           90,           91,
1058           92,           93,           94,           95,
1059           96,           65 /* A */,   66 /* B */,   67 /* C */,
1060           68 /* D */,   69 /* E */,   70 /* F */,   71 /* G */,
1061           72 /* H */,   73 /* I */,   74 /* J */,   75 /* K */,
1062           76 /* L */,   77 /* M */,   78 /* N */,   79 /* O */,
1063           80 /* P */,   81 /* Q */,   82 /* R */,   83 /* S */,
1064           84 /* T */,   85 /* U */,   86 /* V */,   87 /* W */,
1065           88 /* X */,   89 /* Y */,   90 /* Z */,  123,
1066          124,          125,          126,          127,
1067          128,          129,          130,          131,
1068          132,          133,          134,          135,
1069          136,          137,          138,          139,
1070          140,          141,          142,          143,
1071          144,          145,          146,          147,
1072          148,          149,          150,          151,
1073          152,          153,          154,          155,
1074          156,          157,          158,          159,
1075          160,          161,          162,          163,
1076          164,          165,          166,          167,
1077          168,          169,          170,          171,
1078          172,          173,          174,          175,
1079          176,          177,          178,          179,
1080          180,          181,          182,          183,
1081          184,          185,          186,          187,
1082          188,          189,          190,          191,
1083          192,          193,          194,          195,
1084          196,          197,          198,          199,
1085          200,          201,          202,          203,
1086          204,          205,          206,          207,
1087          208,          209,          210,          211,
1088          212,          213,          214,          215,
1089          216,          217,          218,          219,
1090          220,          221,          222,          223,
1091          224,          225,          226,          227,
1092          228,          229,          230,          231,
1093          232,          233,          234,          235,
1094          236,          237,          238,          239,
1095          240,          241,          242,          243,
1096          244,          245,          246,          247,
1097          248,          249,          250,          251,
1098          252,          253,          254,          255
1099 };
1100 libc_hidden_data_def(__C_ctype_toupper_data)
1101
1102 libc_hidden_proto(__C_ctype_toupper)
1103 const __ctype_touplow_t *__C_ctype_toupper = __C_ctype_toupper_data
1104                                                                                         + __UCLIBC_CTYPE_TO_TBL_OFFSET;
1105 libc_hidden_data_def(__C_ctype_toupper)
1106
1107 #ifndef __UCLIBC_HAS_XLOCALE__
1108
1109 libc_hidden_proto(__ctype_toupper)
1110 const __ctype_touplow_t *__ctype_toupper = __C_ctype_toupper_data
1111                                                                                         + __UCLIBC_CTYPE_TO_TBL_OFFSET;
1112 libc_hidden_data_def(__ctype_toupper)
1113
1114 #endif
1115
1116 #endif
1117 /**********************************************************************/