1 /* 2 * Copyright (c) 1989, 1993 3 * The Regents of the University of California. All rights reserved. 4 * (c) UNIX System Laboratories, Inc. 5 * All or some portions of this file are derived from material licensed 6 * to the University of California by American Telephone and Telegraph 7 * Co. or Unix System Laboratories, Inc. and are reproduced herein with 8 * the permission of UNIX System Laboratories, Inc. 9 * 10 * This code is derived from software contributed to Berkeley by 11 * Paul Borman at Krystal Technologies. 12 * 13 * Redistribution and use in source and binary forms, with or without 14 * modification, are permitted provided that the following conditions 15 * are met: 16 * 1. Redistributions of source code must retain the above copyright 17 * notice, this list of conditions and the following disclaimer. 18 * 2. Redistributions in binary form must reproduce the above copyright 19 * notice, this list of conditions and the following disclaimer in the 20 * documentation and/or other materials provided with the distribution. 21 * 3. Neither the name of the University nor the names of its contributors 22 * may be used to endorse or promote products derived from this software 23 * without specific prior written permission. 24 * 25 * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND 26 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 27 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 28 * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE 29 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 30 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 31 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 32 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 33 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 34 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 35 * SUCH DAMAGE. 36 * 37 * @(#)isctype.c 8.3 (Berkeley) 2/24/94 38 * $FreeBSD: head/lib/libc/locale/isctype.c 172619 2007-10-13 16:28:22Z ache $ 39 */ 40 41 42 #include <ctype.h> 43 44 #undef digittoint 45 int 46 digittoint(int c) 47 { 48 return (__sbmaskrune(c, 0xFF)); 49 } 50 51 #undef isalnum 52 int 53 isalnum(int c) 54 { 55 return (__sbistype(c, _CTYPE_A|_CTYPE_N)); 56 } 57 58 #undef isalpha 59 int 60 isalpha(int c) 61 { 62 return (__sbistype(c, _CTYPE_A)); 63 } 64 65 #undef isascii 66 int 67 isascii(int c) 68 { 69 return ((c & ~0x7F) == 0); 70 } 71 72 #undef isblank 73 int 74 isblank(int c) 75 { 76 return (__sbistype(c, _CTYPE_B)); 77 } 78 79 #undef iscntrl 80 int 81 iscntrl(int c) 82 { 83 return (__sbistype(c, _CTYPE_C)); 84 } 85 86 #undef isdigit 87 int 88 isdigit(int c) 89 { 90 return (__isctype(c, _CTYPE_D)); 91 } 92 93 #undef isgraph 94 int 95 isgraph(int c) 96 { 97 return (__sbistype(c, _CTYPE_G)); 98 } 99 100 #undef ishexnumber 101 int 102 ishexnumber(int c) 103 { 104 return (__sbistype(c, _CTYPE_X)); 105 } 106 107 #undef isideogram 108 int 109 isideogram(int c) 110 { 111 return (__sbistype(c, _CTYPE_I)); 112 } 113 114 #undef islower 115 int 116 islower(int c) 117 { 118 return (__sbistype(c, _CTYPE_L)); 119 } 120 121 #undef isnumber 122 int 123 isnumber(int c) 124 { 125 return (__sbistype(c, _CTYPE_N)); 126 } 127 128 #undef isphonogram 129 int 130 isphonogram(int c) 131 { 132 return (__sbistype(c, _CTYPE_Q)); 133 } 134 135 #undef isprint 136 int 137 isprint(int c) 138 { 139 return (__sbistype(c, _CTYPE_R)); 140 } 141 142 #undef ispunct 143 int 144 ispunct(int c) 145 { 146 return (__sbistype(c, _CTYPE_P)); 147 } 148 149 #undef isrune 150 int 151 isrune(int c) 152 { 153 return (__sbistype(c, 0xFFFFFF00L)); 154 } 155 156 #undef isspace 157 int 158 isspace(int c) 159 { 160 return (__sbistype(c, _CTYPE_S)); 161 } 162 163 #undef isspecial 164 int 165 isspecial(int c) 166 { 167 return (__sbistype(c, _CTYPE_T)); 168 } 169 170 #undef isupper 171 int 172 isupper(int c) 173 { 174 return (__sbistype(c, _CTYPE_U)); 175 } 176 177 #undef isxdigit 178 int 179 isxdigit(int c) 180 { 181 return (__isctype(c, _CTYPE_X)); 182 } 183 184 #undef toascii 185 int 186 toascii(int c) 187 { 188 return (c & 0x7F); 189 } 190 191 #undef tolower 192 int 193 tolower(int c) 194 { 195 return (__sbtolower(c)); 196 } 197 198 #undef toupper 199 int 200 toupper(int c) 201 { 202 return (__sbtoupper(c)); 203 } 204 205