Home | History | Annotate | Download | only in common
      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