1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19: #define __NO_CTYPE
20: #include <ctype.h>
21:
22:
23:
24: #define func(name, type) \
25: int name (int c) { return __isctype (c, type); }
26:
27: func (isalnum, _ISalnum)
28: func (isalpha, _ISalpha)
29: func (iscntrl, _IScntrl)
30: func (isdigit, _ISdigit)
31: func (islower, _ISlower)
32: func (isgraph, _ISgraph)
33: func (isprint, _ISprint)
34: func (ispunct, _ISpunct)
35: func (isspace, _ISspace)
36: func (isupper, _ISupper)
37: func (isxdigit, _ISxdigit)
38:
39: #define __ctype_tolower \
40: ((int32_t *) _NL_CURRENT (LC_CTYPE, _NL_CTYPE_TOLOWER) + 128)
41: #define __ctype_toupper \
42: ((int32_t *) _NL_CURRENT (LC_CTYPE, _NL_CTYPE_TOUPPER) + 128)
43:
44: int
45: tolower (int c)
46: {
47: return c >= -128 && c < 256 ? __ctype_tolower[c] : c;
48: }
49:
50: int
51: toupper (int c)
52: {
53: return c >= -128 && c < 256 ? __ctype_toupper[c] : c;
54: }