xref: /titanic_52/usr/src/lib/libbc/libc/gen/common/ctype_.c (revision 7c478bd95313f5f23a4c958a745db2134aa03244)
1 /*
2  * CDDL HEADER START
3  *
4  * The contents of this file are subject to the terms of the
5  * Common Development and Distribution License, Version 1.0 only
6  * (the "License").  You may not use this file except in compliance
7  * with the License.
8  *
9  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
10  * or http://www.opensolaris.org/os/licensing.
11  * See the License for the specific language governing permissions
12  * and limitations under the License.
13  *
14  * When distributing Covered Code, include this CDDL HEADER in each
15  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
16  * If applicable, add the following below this CDDL HEADER, with the
17  * fields enclosed by brackets "[]" replaced with your own identifying
18  * information: Portions Copyright [yyyy] [name of copyright owner]
19  *
20  * CDDL HEADER END
21  */
22 #pragma ident	"%Z%%M%	%I%	%E% SMI"
23 	  /* from UCB 4.2 83/07/08 */
24 
25 #include	<ctype.h>
26 #include	<stdlib.h>
27 
28 
29 char	_ctype_[] = { 0,
30 
31 /*	 0	 	1	 2	 3	 4	 5	 6	 7  */
32 
33 /* 0*/	_C,		_C,	_C,	_C,	_C,	_C,	_C,	_C,
34 /* 10*/	_C,		_S|_C,	_S|_C,	_S|_C,	_S|_C,	_S|_C,	_C,	_C,
35 /* 20*/	_C,		_C,	_C,	_C,	_C,	_C,	_C,	_C,
36 /* 30*/	_C,		_C,	_C,	_C,	_C,	_C,	_C,	_C,
37 /* 40*/	(char)(_S|_B),	_P,	_P,	_P,	_P,	_P,	_P,	_P,
38 /* 50*/	_P,		_P,	_P,	_P,	_P,	_P,	_P,	_P,
39 /* 60*/	_N|_X,		_N|_X,	_N|_X,	_N|_X,	_N|_X,	_N|_X,	_N|_X,	_N|_X,
40 /* 70*/	_N|_X,		_N|_X,	_P,	_P,	_P,	_P,	_P,	_P,
41 /*100*/	_P,		_U|_X,	_U|_X,	_U|_X,	_U|_X,	_U|_X,	_U|_X,	_U,
42 /*110*/	_U,		_U,	_U,	_U,	_U,	_U,	_U,	_U,
43 /*120*/	_U,		_U,	_U,	_U,	_U,	_U,	_U,	_U,
44 /*130*/	_U,		_U,	_U,	_P,	_P,	_P,	_P,	_P,
45 /*140*/	_P,		_L|_X,	_L|_X,	_L|_X,	_L|_X,	_L|_X,	_L|_X,	_L,
46 /*150*/	_L,		_L,	_L,	_L,	_L,	_L,	_L,	_L,
47 /*160*/	_L,		_L,	_L,	_L,	_L,	_L,	_L,	_L,
48 /*170*/	_L,		_L,	_L,	_P,	_P,	_P,	_P,	_C,
49 /*200*/	 0,	 	0,	 0,	 0,	 0,	 0,	 0,	 0,
50 	 0,	 	0,	 0,	 0,	 0,	 0,	 0,	 0,
51 	 0,	 	0,	 0,	 0,	 0,	 0,	 0,	 0,
52 	 0,	 	0,	 0,	 0,	 0,	 0,	 0,	 0,
53 	 0,	 	0,	 0,	 0,	 0,	 0,	 0,	 0,
54 	 0,	 	0,	 0,	 0,	 0,	 0,	 0,	 0,
55 	 0,	 	0,	 0,	 0,	 0,	 0,	 0,	 0,
56 	 0,	 	0,	 0,	 0,	 0,	 0,	 0,	 0,
57 	 0,	 	0,	 0,	 0,	 0,	 0,	 0,	 0,
58 	 0,	 	0,	 0,	 0,	 0,	 0,	 0,	 0,
59 	 0,	 	0,	 0,	 0,	 0,	 0,	 0,	 0,
60 	 0,	 	0,	 0,	 0,	 0,	 0,	 0,	 0,
61 	 0,	 	0,	 0,	 0,	 0,	 0,	 0,	 0,
62 	 0,	 	0,	 0,	 0,	 0,	 0,	 0,	 0,
63 	 0,	 	0,	 0,	 0,	 0,	 0,	 0,	 0,
64 	 0,	 	0,	 0,	 0,	 0,	 0,	 0,	 0
65 };
66 
67 unsigned int	_mb_cur_max;
68 
69 /* Now we also supply the functions in libc as well as the macros in
70  * ctype.h
71  */
72 
73 #undef	isalpha
74 #undef	isupper
75 #undef	islower
76 #undef	isdigit
77 #undef	isxdigit
78 #undef	isspace
79 #undef	ispunct
80 #undef	isalnum
81 #undef	isprint
82 #undef	isgraph
83 #undef	iscntrl
84 #undef	isascii
85 #undef	toascii
86 
87 extern int mbtowc();
88 
89 int isalpha(c)
90 register int c;
91 {
92 	return((_ctype_+1)[c]&(_U|_L));
93 }
94 
95 int isupper(c)
96 register int c;
97 {
98 	return((_ctype_+1)[c]&_U);
99 }
100 
101 int islower(c)
102 register int c;
103 {
104 	return((_ctype_+1)[c]&_L);
105 }
106 
107 int isdigit(c)
108 register int c;
109 {
110 	return((_ctype_+1)[c]&_N);
111 }
112 
113 int isxdigit(c)
114 register int c;
115 {
116 	return((_ctype_+1)[c]&_X);
117 }
118 
119 
120 int isspace(c)
121 register int c;
122 {
123 	return((_ctype_+1)[c]&_S);
124 }
125 
126 
127 int ispunct(c)
128 register int c;
129 {
130 	return((_ctype_+1)[c]&_P);
131 }
132 
133 
134 int isalnum(c)
135 register int c;
136 {
137 	return((_ctype_+1)[c]&(_U|_L|_N));
138 }
139 
140 
141 int isprint(c)
142 register int c;
143 {
144 	return((_ctype_+1)[c]&(_P|_U|_L|_N|_B));
145 }
146 
147 
148 int isgraph(c)
149 register int c;
150 {
151 	return((_ctype_+1)[c]&(_P|_U|_L|_N));
152 }
153 
154 
155 int iscntrl(c)
156 register int c;
157 {
158 	return((_ctype_+1)[c]&_C);
159 }
160 
161 int isascii(c)
162 register int c;
163 {
164 	return((unsigned)(c)<=0177);
165 }
166 
167 int toascii(c)
168 register int c;
169 {
170 	return((c)&0177);
171 }
172 
173