Magellan Linux

Contents of /trunk/mkinitrd-magellan/klibc/usr/include/ctype.h

Parent Directory Parent Directory | Revision Log Revision Log


Revision 532 - (show annotations) (download)
Sat Sep 1 22:45:15 2007 UTC (16 years, 8 months ago) by niro
File MIME type: text/plain
File size: 2804 byte(s)
-import if magellan mkinitrd; it is a fork of redhats mkinitrd-5.0.8 with all magellan patches and features; deprecates magellan-src/mkinitrd

1 /*
2 * ctype.h
3 *
4 * This assumes ISO 8859-1, being a reasonable superset of ASCII.
5 */
6
7 #ifndef _CTYPE_H
8 #define _CTYPE_H
9
10 #include <klibc/extern.h>
11
12 /*
13 * This relies on the following definitions:
14 *
15 * cntrl = !print
16 * alpha = upper|lower
17 * graph = punct|alpha|digit
18 * blank = '\t' || ' ' (per POSIX requirement)
19 */
20 enum {
21 __ctype_upper = (1 << 0),
22 __ctype_lower = (1 << 1),
23 __ctype_digit = (1 << 2),
24 __ctype_xdigit = (1 << 3),
25 __ctype_space = (1 << 4),
26 __ctype_print = (1 << 5),
27 __ctype_punct = (1 << 6),
28 __ctype_cntrl = (1 << 7),
29 };
30
31 extern const unsigned char __ctypes[];
32
33 static inline int __ctype_isalnum(int __c)
34 {
35 return __ctypes[__c + 1] &
36 (__ctype_upper | __ctype_lower | __ctype_digit);
37 }
38
39 static inline int __ctype_isalpha(int __c)
40 {
41 return __ctypes[__c + 1] & (__ctype_upper | __ctype_lower);
42 }
43
44 static inline int __ctype_isascii(int __c)
45 {
46 return !(__c & ~0x7f);
47 }
48
49 static inline int __ctype_isblank(int __c)
50 {
51 return (__c == '\t') || (__c == ' ');
52 }
53
54 static inline int __ctype_iscntrl(int __c)
55 {
56 return __ctypes[__c + 1] & __ctype_cntrl;
57 }
58
59 static inline int __ctype_isdigit(int __c)
60 {
61 return ((unsigned)__c - '0') <= 9;
62 }
63
64 static inline int __ctype_isgraph(int __c)
65 {
66 return __ctypes[__c + 1] &
67 (__ctype_upper | __ctype_lower | __ctype_digit | __ctype_punct);
68 }
69
70 static inline int __ctype_islower(int __c)
71 {
72 return __ctypes[__c + 1] & __ctype_lower;
73 }
74
75 static inline int __ctype_isprint(int __c)
76 {
77 return __ctypes[__c + 1] & __ctype_print;
78 }
79
80 static inline int __ctype_ispunct(int __c)
81 {
82 return __ctypes[__c + 1] & __ctype_punct;
83 }
84
85 static inline int __ctype_isspace(int __c)
86 {
87 return __ctypes[__c + 1] & __ctype_space;
88 }
89
90 static inline int __ctype_isupper(int __c)
91 {
92 return __ctypes[__c + 1] & __ctype_upper;
93 }
94
95 static inline int __ctype_isxdigit(int __c)
96 {
97 return __ctypes[__c + 1] & __ctype_xdigit;
98 }
99
100 /* Note: this is decimal, not hex, to avoid accidental promotion to unsigned */
101 #define _toupper(__c) ((__c) & ~32)
102 #define _tolower(__c) ((__c) | 32)
103
104 static inline int __ctype_toupper(int __c)
105 {
106 return __ctype_islower(__c) ? _toupper(__c) : __c;
107 }
108
109 static inline int __ctype_tolower(int __c)
110 {
111 return __ctype_isupper(__c) ? _tolower(__c) : __c;
112 }
113
114 #ifdef __CTYPE_NO_INLINE
115 # define __CTYPEFUNC(X) \
116 __extern int X(int);
117 #else
118 #define __CTYPEFUNC(X) \
119 __extern inline int X(int __c) \
120 { \
121 return __ctype_##X(__c); \
122 }
123 #endif
124
125 __CTYPEFUNC(isalnum)
126 __CTYPEFUNC(isalpha)
127 __CTYPEFUNC(isascii)
128 __CTYPEFUNC(isblank)
129 __CTYPEFUNC(iscntrl)
130 __CTYPEFUNC(isdigit)
131 __CTYPEFUNC(isgraph)
132 __CTYPEFUNC(islower)
133 __CTYPEFUNC(isprint)
134 __CTYPEFUNC(ispunct)
135 __CTYPEFUNC(isspace)
136 __CTYPEFUNC(isupper)
137 __CTYPEFUNC(isxdigit)
138 __CTYPEFUNC(toupper)
139 __CTYPEFUNC(tolower)
140 #endif /* _CTYPE_H */