Upgrade diffutils from 2.8.7 to 3.0 on the vendor branch
[dragonfly.git] / contrib / diffutils / lib / c-ctype.c
1 /* -*- buffer-read-only: t -*- vi: set ro: */
2 /* DO NOT EDIT! GENERATED AUTOMATICALLY! */
3 /* Character handling in C locale.
4
5    Copyright 2000-2003, 2006, 2009-2010 Free Software Foundation, Inc.
6
7 This program is free software; you can redistribute it and/or modify
8 it under the terms of the GNU General Public License as published by
9 the Free Software Foundation; either version 3 of the License, or
10 (at your option) any later version.
11
12 This program is distributed in the hope that it will be useful,
13 but WITHOUT ANY WARRANTY; without even the implied warranty of
14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15 GNU General Public License for more details.
16
17 You should have received a copy of the GNU General Public License
18 along with this program; if not, write to the Free Software Foundation,
19 Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.  */
20
21 #include <config.h>
22
23 /* Specification.  */
24 #define NO_C_CTYPE_MACROS
25 #include "c-ctype.h"
26
27 /* The function isascii is not locale dependent. Its use in EBCDIC is
28    questionable. */
29 bool
30 c_isascii (int c)
31 {
32   return (c >= 0x00 && c <= 0x7f);
33 }
34
35 bool
36 c_isalnum (int c)
37 {
38 #if C_CTYPE_CONSECUTIVE_DIGITS \
39     && C_CTYPE_CONSECUTIVE_UPPERCASE && C_CTYPE_CONSECUTIVE_LOWERCASE
40 #if C_CTYPE_ASCII
41   return ((c >= '0' && c <= '9')
42           || ((c & ~0x20) >= 'A' && (c & ~0x20) <= 'Z'));
43 #else
44   return ((c >= '0' && c <= '9')
45           || (c >= 'A' && c <= 'Z')
46           || (c >= 'a' && c <= 'z'));
47 #endif
48 #else
49   switch (c)
50     {
51     case '0': case '1': case '2': case '3': case '4': case '5':
52     case '6': case '7': case '8': case '9':
53     case 'A': case 'B': case 'C': case 'D': case 'E': case 'F':
54     case 'G': case 'H': case 'I': case 'J': case 'K': case 'L':
55     case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R':
56     case 'S': case 'T': case 'U': case 'V': case 'W': case 'X':
57     case 'Y': case 'Z':
58     case 'a': case 'b': case 'c': case 'd': case 'e': case 'f':
59     case 'g': case 'h': case 'i': case 'j': case 'k': case 'l':
60     case 'm': case 'n': case 'o': case 'p': case 'q': case 'r':
61     case 's': case 't': case 'u': case 'v': case 'w': case 'x':
62     case 'y': case 'z':
63       return 1;
64     default:
65       return 0;
66     }
67 #endif
68 }
69
70 bool
71 c_isalpha (int c)
72 {
73 #if C_CTYPE_CONSECUTIVE_UPPERCASE && C_CTYPE_CONSECUTIVE_LOWERCASE
74 #if C_CTYPE_ASCII
75   return ((c & ~0x20) >= 'A' && (c & ~0x20) <= 'Z');
76 #else
77   return ((c >= 'A' && c <= 'Z') || (c >= 'a' && c <= 'z'));
78 #endif
79 #else
80   switch (c)
81     {
82     case 'A': case 'B': case 'C': case 'D': case 'E': case 'F':
83     case 'G': case 'H': case 'I': case 'J': case 'K': case 'L':
84     case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R':
85     case 'S': case 'T': case 'U': case 'V': case 'W': case 'X':
86     case 'Y': case 'Z':
87     case 'a': case 'b': case 'c': case 'd': case 'e': case 'f':
88     case 'g': case 'h': case 'i': case 'j': case 'k': case 'l':
89     case 'm': case 'n': case 'o': case 'p': case 'q': case 'r':
90     case 's': case 't': case 'u': case 'v': case 'w': case 'x':
91     case 'y': case 'z':
92       return 1;
93     default:
94       return 0;
95     }
96 #endif
97 }
98
99 bool
100 c_isblank (int c)
101 {
102   return (c == ' ' || c == '\t');
103 }
104
105 bool
106 c_iscntrl (int c)
107 {
108 #if C_CTYPE_ASCII
109   return ((c & ~0x1f) == 0 || c == 0x7f);
110 #else
111   switch (c)
112     {
113     case ' ': case '!': case '"': case '#': case '$': case '%':
114     case '&': case '\'': case '(': case ')': case '*': case '+':
115     case ',': case '-': case '.': case '/':
116     case '0': case '1': case '2': case '3': case '4': case '5':
117     case '6': case '7': case '8': case '9':
118     case ':': case ';': case '<': case '=': case '>': case '?':
119     case '@':
120     case 'A': case 'B': case 'C': case 'D': case 'E': case 'F':
121     case 'G': case 'H': case 'I': case 'J': case 'K': case 'L':
122     case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R':
123     case 'S': case 'T': case 'U': case 'V': case 'W': case 'X':
124     case 'Y': case 'Z':
125     case '[': case '\\': case ']': case '^': case '_': case '`':
126     case 'a': case 'b': case 'c': case 'd': case 'e': case 'f':
127     case 'g': case 'h': case 'i': case 'j': case 'k': case 'l':
128     case 'm': case 'n': case 'o': case 'p': case 'q': case 'r':
129     case 's': case 't': case 'u': case 'v': case 'w': case 'x':
130     case 'y': case 'z':
131     case '{': case '|': case '}': case '~':
132       return 0;
133     default:
134       return 1;
135     }
136 #endif
137 }
138
139 bool
140 c_isdigit (int c)
141 {
142 #if C_CTYPE_CONSECUTIVE_DIGITS
143   return (c >= '0' && c <= '9');
144 #else
145   switch (c)
146     {
147     case '0': case '1': case '2': case '3': case '4': case '5':
148     case '6': case '7': case '8': case '9':
149       return 1;
150     default:
151       return 0;
152     }
153 #endif
154 }
155
156 bool
157 c_islower (int c)
158 {
159 #if C_CTYPE_CONSECUTIVE_LOWERCASE
160   return (c >= 'a' && c <= 'z');
161 #else
162   switch (c)
163     {
164     case 'a': case 'b': case 'c': case 'd': case 'e': case 'f':
165     case 'g': case 'h': case 'i': case 'j': case 'k': case 'l':
166     case 'm': case 'n': case 'o': case 'p': case 'q': case 'r':
167     case 's': case 't': case 'u': case 'v': case 'w': case 'x':
168     case 'y': case 'z':
169       return 1;
170     default:
171       return 0;
172     }
173 #endif
174 }
175
176 bool
177 c_isgraph (int c)
178 {
179 #if C_CTYPE_ASCII
180   return (c >= '!' && c <= '~');
181 #else
182   switch (c)
183     {
184     case '!': case '"': case '#': case '$': case '%': case '&':
185     case '\'': case '(': case ')': case '*': case '+': case ',':
186     case '-': case '.': case '/':
187     case '0': case '1': case '2': case '3': case '4': case '5':
188     case '6': case '7': case '8': case '9':
189     case ':': case ';': case '<': case '=': case '>': case '?':
190     case '@':
191     case 'A': case 'B': case 'C': case 'D': case 'E': case 'F':
192     case 'G': case 'H': case 'I': case 'J': case 'K': case 'L':
193     case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R':
194     case 'S': case 'T': case 'U': case 'V': case 'W': case 'X':
195     case 'Y': case 'Z':
196     case '[': case '\\': case ']': case '^': case '_': case '`':
197     case 'a': case 'b': case 'c': case 'd': case 'e': case 'f':
198     case 'g': case 'h': case 'i': case 'j': case 'k': case 'l':
199     case 'm': case 'n': case 'o': case 'p': case 'q': case 'r':
200     case 's': case 't': case 'u': case 'v': case 'w': case 'x':
201     case 'y': case 'z':
202     case '{': case '|': case '}': case '~':
203       return 1;
204     default:
205       return 0;
206     }
207 #endif
208 }
209
210 bool
211 c_isprint (int c)
212 {
213 #if C_CTYPE_ASCII
214   return (c >= ' ' && c <= '~');
215 #else
216   switch (c)
217     {
218     case ' ': case '!': case '"': case '#': case '$': case '%':
219     case '&': case '\'': case '(': case ')': case '*': case '+':
220     case ',': case '-': case '.': case '/':
221     case '0': case '1': case '2': case '3': case '4': case '5':
222     case '6': case '7': case '8': case '9':
223     case ':': case ';': case '<': case '=': case '>': case '?':
224     case '@':
225     case 'A': case 'B': case 'C': case 'D': case 'E': case 'F':
226     case 'G': case 'H': case 'I': case 'J': case 'K': case 'L':
227     case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R':
228     case 'S': case 'T': case 'U': case 'V': case 'W': case 'X':
229     case 'Y': case 'Z':
230     case '[': case '\\': case ']': case '^': case '_': case '`':
231     case 'a': case 'b': case 'c': case 'd': case 'e': case 'f':
232     case 'g': case 'h': case 'i': case 'j': case 'k': case 'l':
233     case 'm': case 'n': case 'o': case 'p': case 'q': case 'r':
234     case 's': case 't': case 'u': case 'v': case 'w': case 'x':
235     case 'y': case 'z':
236     case '{': case '|': case '}': case '~':
237       return 1;
238     default:
239       return 0;
240     }
241 #endif
242 }
243
244 bool
245 c_ispunct (int c)
246 {
247 #if C_CTYPE_ASCII
248   return ((c >= '!' && c <= '~')
249           && !((c >= '0' && c <= '9')
250                || ((c & ~0x20) >= 'A' && (c & ~0x20) <= 'Z')));
251 #else
252   switch (c)
253     {
254     case '!': case '"': case '#': case '$': case '%': case '&':
255     case '\'': case '(': case ')': case '*': case '+': case ',':
256     case '-': case '.': case '/':
257     case ':': case ';': case '<': case '=': case '>': case '?':
258     case '@':
259     case '[': case '\\': case ']': case '^': case '_': case '`':
260     case '{': case '|': case '}': case '~':
261       return 1;
262     default:
263       return 0;
264     }
265 #endif
266 }
267
268 bool
269 c_isspace (int c)
270 {
271   return (c == ' ' || c == '\t'
272           || c == '\n' || c == '\v' || c == '\f' || c == '\r');
273 }
274
275 bool
276 c_isupper (int c)
277 {
278 #if C_CTYPE_CONSECUTIVE_UPPERCASE
279   return (c >= 'A' && c <= 'Z');
280 #else
281   switch (c)
282     {
283     case 'A': case 'B': case 'C': case 'D': case 'E': case 'F':
284     case 'G': case 'H': case 'I': case 'J': case 'K': case 'L':
285     case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R':
286     case 'S': case 'T': case 'U': case 'V': case 'W': case 'X':
287     case 'Y': case 'Z':
288       return 1;
289     default:
290       return 0;
291     }
292 #endif
293 }
294
295 bool
296 c_isxdigit (int c)
297 {
298 #if C_CTYPE_CONSECUTIVE_DIGITS \
299     && C_CTYPE_CONSECUTIVE_UPPERCASE && C_CTYPE_CONSECUTIVE_LOWERCASE
300 #if C_CTYPE_ASCII
301   return ((c >= '0' && c <= '9')
302           || ((c & ~0x20) >= 'A' && (c & ~0x20) <= 'F'));
303 #else
304   return ((c >= '0' && c <= '9')
305           || (c >= 'A' && c <= 'F')
306           || (c >= 'a' && c <= 'f'));
307 #endif
308 #else
309   switch (c)
310     {
311     case '0': case '1': case '2': case '3': case '4': case '5':
312     case '6': case '7': case '8': case '9':
313     case 'A': case 'B': case 'C': case 'D': case 'E': case 'F':
314     case 'a': case 'b': case 'c': case 'd': case 'e': case 'f':
315       return 1;
316     default:
317       return 0;
318     }
319 #endif
320 }
321
322 int
323 c_tolower (int c)
324 {
325 #if C_CTYPE_CONSECUTIVE_UPPERCASE && C_CTYPE_CONSECUTIVE_LOWERCASE
326   return (c >= 'A' && c <= 'Z' ? c - 'A' + 'a' : c);
327 #else
328   switch (c)
329     {
330     case 'A': return 'a';
331     case 'B': return 'b';
332     case 'C': return 'c';
333     case 'D': return 'd';
334     case 'E': return 'e';
335     case 'F': return 'f';
336     case 'G': return 'g';
337     case 'H': return 'h';
338     case 'I': return 'i';
339     case 'J': return 'j';
340     case 'K': return 'k';
341     case 'L': return 'l';
342     case 'M': return 'm';
343     case 'N': return 'n';
344     case 'O': return 'o';
345     case 'P': return 'p';
346     case 'Q': return 'q';
347     case 'R': return 'r';
348     case 'S': return 's';
349     case 'T': return 't';
350     case 'U': return 'u';
351     case 'V': return 'v';
352     case 'W': return 'w';
353     case 'X': return 'x';
354     case 'Y': return 'y';
355     case 'Z': return 'z';
356     default: return c;
357     }
358 #endif
359 }
360
361 int
362 c_toupper (int c)
363 {
364 #if C_CTYPE_CONSECUTIVE_UPPERCASE && C_CTYPE_CONSECUTIVE_LOWERCASE
365   return (c >= 'a' && c <= 'z' ? c - 'a' + 'A' : c);
366 #else
367   switch (c)
368     {
369     case 'a': return 'A';
370     case 'b': return 'B';
371     case 'c': return 'C';
372     case 'd': return 'D';
373     case 'e': return 'E';
374     case 'f': return 'F';
375     case 'g': return 'G';
376     case 'h': return 'H';
377     case 'i': return 'I';
378     case 'j': return 'J';
379     case 'k': return 'K';
380     case 'l': return 'L';
381     case 'm': return 'M';
382     case 'n': return 'N';
383     case 'o': return 'O';
384     case 'p': return 'P';
385     case 'q': return 'Q';
386     case 'r': return 'R';
387     case 's': return 'S';
388     case 't': return 'T';
389     case 'u': return 'U';
390     case 'v': return 'V';
391     case 'w': return 'W';
392     case 'x': return 'X';
393     case 'y': return 'Y';
394     case 'z': return 'Z';
395     default: return c;
396     }
397 #endif
398 }