~ubuntu-branches/ubuntu/trusty/wget/trusty-updates

« back to all changes in this revision

Viewing changes to lib/c-ctype.c

  • Committer: Bazaar Package Importer
  • Author(s): Marc Deslauriers
  • Date: 2009-12-12 08:15:59 UTC
  • mfrom: (2.1.5 squeeze)
  • Revision ID: james.westby@ubuntu.com-20091212081559-mvccl4kzdqb138y3
Tags: 1.12-1.1ubuntu1
* Merge from debian testing, remaining changes:
  - Add wget-udeb to ship wget.gnu as alternative to busybox wget
    implementation.
* Keep build dependencies in main:
  - debian/control: remove info2man build-dep
  - debian/patches/00list: disable wget-infopod_generated_manpage.dpatch

Show diffs side-by-side

added added

removed removed

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