2 * ctype.c: Character classification routines
4 * ====================================================================
5 * Copyright (c) 2000-2004 CollabNet. All rights reserved.
7 * This software is licensed as described in the file COPYING, which
8 * you should have received as part of this distribution. The terms
9 * are also available at http://subversion.tigris.org/license-1.html.
10 * If newer versions of this license are posted there, you may use a
11 * newer version instead, at your option.
13 * This software consists of voluntary contributions made by many
14 * individuals. For exact contribution history, see the revision
15 * history and logs, available at http://subversion.tigris.org/.
16 * ====================================================================
21 #include "svn_ctype.h"
23 const apr_uint32_t svn_ctype_table_internal
[256] =
25 /* **** DO NOT EDIT! ****
26 This table was generated by genctype.py, make changes there. */
27 /* nul */ SVN_CTYPE_ASCII
| SVN_CTYPE_CNTRL
,
28 /* soh */ SVN_CTYPE_ASCII
| SVN_CTYPE_CNTRL
,
29 /* stx */ SVN_CTYPE_ASCII
| SVN_CTYPE_CNTRL
,
30 /* etx */ SVN_CTYPE_ASCII
| SVN_CTYPE_CNTRL
,
31 /* eot */ SVN_CTYPE_ASCII
| SVN_CTYPE_CNTRL
,
32 /* enq */ SVN_CTYPE_ASCII
| SVN_CTYPE_CNTRL
,
33 /* ack */ SVN_CTYPE_ASCII
| SVN_CTYPE_CNTRL
,
34 /* bel */ SVN_CTYPE_ASCII
| SVN_CTYPE_CNTRL
,
35 /* bs */ SVN_CTYPE_ASCII
| SVN_CTYPE_CNTRL
,
36 /* ht */ SVN_CTYPE_ASCII
| SVN_CTYPE_CNTRL
| SVN_CTYPE_SPACE
,
37 /* nl */ SVN_CTYPE_ASCII
| SVN_CTYPE_CNTRL
| SVN_CTYPE_SPACE
,
38 /* vt */ SVN_CTYPE_ASCII
| SVN_CTYPE_CNTRL
| SVN_CTYPE_SPACE
,
39 /* np */ SVN_CTYPE_ASCII
| SVN_CTYPE_CNTRL
| SVN_CTYPE_SPACE
,
40 /* cr */ SVN_CTYPE_ASCII
| SVN_CTYPE_CNTRL
| SVN_CTYPE_SPACE
,
41 /* so */ SVN_CTYPE_ASCII
| SVN_CTYPE_CNTRL
,
42 /* si */ SVN_CTYPE_ASCII
| SVN_CTYPE_CNTRL
,
43 /* dle */ SVN_CTYPE_ASCII
| SVN_CTYPE_CNTRL
,
44 /* dc1 */ SVN_CTYPE_ASCII
| SVN_CTYPE_CNTRL
,
45 /* dc2 */ SVN_CTYPE_ASCII
| SVN_CTYPE_CNTRL
,
46 /* dc3 */ SVN_CTYPE_ASCII
| SVN_CTYPE_CNTRL
,
47 /* dc4 */ SVN_CTYPE_ASCII
| SVN_CTYPE_CNTRL
,
48 /* nak */ SVN_CTYPE_ASCII
| SVN_CTYPE_CNTRL
,
49 /* syn */ SVN_CTYPE_ASCII
| SVN_CTYPE_CNTRL
,
50 /* etb */ SVN_CTYPE_ASCII
| SVN_CTYPE_CNTRL
,
51 /* can */ SVN_CTYPE_ASCII
| SVN_CTYPE_CNTRL
,
52 /* em */ SVN_CTYPE_ASCII
| SVN_CTYPE_CNTRL
,
53 /* sub */ SVN_CTYPE_ASCII
| SVN_CTYPE_CNTRL
,
54 /* esc */ SVN_CTYPE_ASCII
| SVN_CTYPE_CNTRL
,
55 /* fs */ SVN_CTYPE_ASCII
| SVN_CTYPE_CNTRL
,
56 /* gs */ SVN_CTYPE_ASCII
| SVN_CTYPE_CNTRL
,
57 /* rs */ SVN_CTYPE_ASCII
| SVN_CTYPE_CNTRL
,
58 /* us */ SVN_CTYPE_ASCII
| SVN_CTYPE_CNTRL
,
59 /* sp */ SVN_CTYPE_ASCII
| SVN_CTYPE_SPACE
,
60 /* ! */ SVN_CTYPE_ASCII
| SVN_CTYPE_PUNCT
,
61 /* " */ SVN_CTYPE_ASCII
| SVN_CTYPE_PUNCT
,
62 /* # */ SVN_CTYPE_ASCII
| SVN_CTYPE_PUNCT
,
63 /* $ */ SVN_CTYPE_ASCII
| SVN_CTYPE_PUNCT
,
64 /* % */ SVN_CTYPE_ASCII
| SVN_CTYPE_PUNCT
,
65 /* & */ SVN_CTYPE_ASCII
| SVN_CTYPE_PUNCT
,
66 /* ' */ SVN_CTYPE_ASCII
| SVN_CTYPE_PUNCT
,
67 /* ( */ SVN_CTYPE_ASCII
| SVN_CTYPE_PUNCT
,
68 /* ) */ SVN_CTYPE_ASCII
| SVN_CTYPE_PUNCT
,
69 /* * */ SVN_CTYPE_ASCII
| SVN_CTYPE_PUNCT
,
70 /* + */ SVN_CTYPE_ASCII
| SVN_CTYPE_PUNCT
,
71 /* , */ SVN_CTYPE_ASCII
| SVN_CTYPE_PUNCT
,
72 /* - */ SVN_CTYPE_ASCII
| SVN_CTYPE_PUNCT
,
73 /* . */ SVN_CTYPE_ASCII
| SVN_CTYPE_PUNCT
,
74 /* / */ SVN_CTYPE_ASCII
| SVN_CTYPE_PUNCT
,
75 /* 0 */ SVN_CTYPE_ASCII
| SVN_CTYPE_DIGIT
,
76 /* 1 */ SVN_CTYPE_ASCII
| SVN_CTYPE_DIGIT
,
77 /* 2 */ SVN_CTYPE_ASCII
| SVN_CTYPE_DIGIT
,
78 /* 3 */ SVN_CTYPE_ASCII
| SVN_CTYPE_DIGIT
,
79 /* 4 */ SVN_CTYPE_ASCII
| SVN_CTYPE_DIGIT
,
80 /* 5 */ SVN_CTYPE_ASCII
| SVN_CTYPE_DIGIT
,
81 /* 6 */ SVN_CTYPE_ASCII
| SVN_CTYPE_DIGIT
,
82 /* 7 */ SVN_CTYPE_ASCII
| SVN_CTYPE_DIGIT
,
83 /* 8 */ SVN_CTYPE_ASCII
| SVN_CTYPE_DIGIT
,
84 /* 9 */ SVN_CTYPE_ASCII
| SVN_CTYPE_DIGIT
,
85 /* : */ SVN_CTYPE_ASCII
| SVN_CTYPE_PUNCT
,
86 /* ; */ SVN_CTYPE_ASCII
| SVN_CTYPE_PUNCT
,
87 /* < */ SVN_CTYPE_ASCII
| SVN_CTYPE_PUNCT
,
88 /* = */ SVN_CTYPE_ASCII
| SVN_CTYPE_PUNCT
,
89 /* > */ SVN_CTYPE_ASCII
| SVN_CTYPE_PUNCT
,
90 /* ? */ SVN_CTYPE_ASCII
| SVN_CTYPE_PUNCT
,
91 /* @ */ SVN_CTYPE_ASCII
| SVN_CTYPE_PUNCT
,
92 /* A */ SVN_CTYPE_ASCII
| SVN_CTYPE_UPPER
| SVN_CTYPE_XALPHA
,
93 /* B */ SVN_CTYPE_ASCII
| SVN_CTYPE_UPPER
| SVN_CTYPE_XALPHA
,
94 /* C */ SVN_CTYPE_ASCII
| SVN_CTYPE_UPPER
| SVN_CTYPE_XALPHA
,
95 /* D */ SVN_CTYPE_ASCII
| SVN_CTYPE_UPPER
| SVN_CTYPE_XALPHA
,
96 /* E */ SVN_CTYPE_ASCII
| SVN_CTYPE_UPPER
| SVN_CTYPE_XALPHA
,
97 /* F */ SVN_CTYPE_ASCII
| SVN_CTYPE_UPPER
| SVN_CTYPE_XALPHA
,
98 /* G */ SVN_CTYPE_ASCII
| SVN_CTYPE_UPPER
,
99 /* H */ SVN_CTYPE_ASCII
| SVN_CTYPE_UPPER
,
100 /* I */ SVN_CTYPE_ASCII
| SVN_CTYPE_UPPER
,
101 /* J */ SVN_CTYPE_ASCII
| SVN_CTYPE_UPPER
,
102 /* K */ SVN_CTYPE_ASCII
| SVN_CTYPE_UPPER
,
103 /* L */ SVN_CTYPE_ASCII
| SVN_CTYPE_UPPER
,
104 /* M */ SVN_CTYPE_ASCII
| SVN_CTYPE_UPPER
,
105 /* N */ SVN_CTYPE_ASCII
| SVN_CTYPE_UPPER
,
106 /* O */ SVN_CTYPE_ASCII
| SVN_CTYPE_UPPER
,
107 /* P */ SVN_CTYPE_ASCII
| SVN_CTYPE_UPPER
,
108 /* Q */ SVN_CTYPE_ASCII
| SVN_CTYPE_UPPER
,
109 /* R */ SVN_CTYPE_ASCII
| SVN_CTYPE_UPPER
,
110 /* S */ SVN_CTYPE_ASCII
| SVN_CTYPE_UPPER
,
111 /* T */ SVN_CTYPE_ASCII
| SVN_CTYPE_UPPER
,
112 /* U */ SVN_CTYPE_ASCII
| SVN_CTYPE_UPPER
,
113 /* V */ SVN_CTYPE_ASCII
| SVN_CTYPE_UPPER
,
114 /* W */ SVN_CTYPE_ASCII
| SVN_CTYPE_UPPER
,
115 /* X */ SVN_CTYPE_ASCII
| SVN_CTYPE_UPPER
,
116 /* Y */ SVN_CTYPE_ASCII
| SVN_CTYPE_UPPER
,
117 /* Z */ SVN_CTYPE_ASCII
| SVN_CTYPE_UPPER
,
118 /* [ */ SVN_CTYPE_ASCII
| SVN_CTYPE_PUNCT
,
119 /* \ */ SVN_CTYPE_ASCII
| SVN_CTYPE_PUNCT
,
120 /* ] */ SVN_CTYPE_ASCII
| SVN_CTYPE_PUNCT
,
121 /* ^ */ SVN_CTYPE_ASCII
| SVN_CTYPE_PUNCT
,
122 /* _ */ SVN_CTYPE_ASCII
| SVN_CTYPE_PUNCT
,
123 /* ` */ SVN_CTYPE_ASCII
| SVN_CTYPE_PUNCT
,
124 /* a */ SVN_CTYPE_ASCII
| SVN_CTYPE_LOWER
| SVN_CTYPE_XALPHA
,
125 /* b */ SVN_CTYPE_ASCII
| SVN_CTYPE_LOWER
| SVN_CTYPE_XALPHA
,
126 /* c */ SVN_CTYPE_ASCII
| SVN_CTYPE_LOWER
| SVN_CTYPE_XALPHA
,
127 /* d */ SVN_CTYPE_ASCII
| SVN_CTYPE_LOWER
| SVN_CTYPE_XALPHA
,
128 /* e */ SVN_CTYPE_ASCII
| SVN_CTYPE_LOWER
| SVN_CTYPE_XALPHA
,
129 /* f */ SVN_CTYPE_ASCII
| SVN_CTYPE_LOWER
| SVN_CTYPE_XALPHA
,
130 /* g */ SVN_CTYPE_ASCII
| SVN_CTYPE_LOWER
,
131 /* h */ SVN_CTYPE_ASCII
| SVN_CTYPE_LOWER
,
132 /* i */ SVN_CTYPE_ASCII
| SVN_CTYPE_LOWER
,
133 /* j */ SVN_CTYPE_ASCII
| SVN_CTYPE_LOWER
,
134 /* k */ SVN_CTYPE_ASCII
| SVN_CTYPE_LOWER
,
135 /* l */ SVN_CTYPE_ASCII
| SVN_CTYPE_LOWER
,
136 /* m */ SVN_CTYPE_ASCII
| SVN_CTYPE_LOWER
,
137 /* n */ SVN_CTYPE_ASCII
| SVN_CTYPE_LOWER
,
138 /* o */ SVN_CTYPE_ASCII
| SVN_CTYPE_LOWER
,
139 /* p */ SVN_CTYPE_ASCII
| SVN_CTYPE_LOWER
,
140 /* q */ SVN_CTYPE_ASCII
| SVN_CTYPE_LOWER
,
141 /* r */ SVN_CTYPE_ASCII
| SVN_CTYPE_LOWER
,
142 /* s */ SVN_CTYPE_ASCII
| SVN_CTYPE_LOWER
,
143 /* t */ SVN_CTYPE_ASCII
| SVN_CTYPE_LOWER
,
144 /* u */ SVN_CTYPE_ASCII
| SVN_CTYPE_LOWER
,
145 /* v */ SVN_CTYPE_ASCII
| SVN_CTYPE_LOWER
,
146 /* w */ SVN_CTYPE_ASCII
| SVN_CTYPE_LOWER
,
147 /* x */ SVN_CTYPE_ASCII
| SVN_CTYPE_LOWER
,
148 /* y */ SVN_CTYPE_ASCII
| SVN_CTYPE_LOWER
,
149 /* z */ SVN_CTYPE_ASCII
| SVN_CTYPE_LOWER
,
150 /* { */ SVN_CTYPE_ASCII
| SVN_CTYPE_PUNCT
,
151 /* | */ SVN_CTYPE_ASCII
| SVN_CTYPE_PUNCT
,
152 /* } */ SVN_CTYPE_ASCII
| SVN_CTYPE_PUNCT
,
153 /* ~ */ SVN_CTYPE_ASCII
| SVN_CTYPE_PUNCT
,
154 /* del */ SVN_CTYPE_ASCII
| SVN_CTYPE_CNTRL
,
155 /* x80 */ SVN_CTYPE_UTF8CONT
,
156 /* x81 */ SVN_CTYPE_UTF8CONT
,
157 /* x82 */ SVN_CTYPE_UTF8CONT
,
158 /* x83 */ SVN_CTYPE_UTF8CONT
,
159 /* x84 */ SVN_CTYPE_UTF8CONT
,
160 /* x85 */ SVN_CTYPE_UTF8CONT
,
161 /* x86 */ SVN_CTYPE_UTF8CONT
,
162 /* x87 */ SVN_CTYPE_UTF8CONT
,
163 /* x88 */ SVN_CTYPE_UTF8CONT
,
164 /* x89 */ SVN_CTYPE_UTF8CONT
,
165 /* x8a */ SVN_CTYPE_UTF8CONT
,
166 /* x8b */ SVN_CTYPE_UTF8CONT
,
167 /* x8c */ SVN_CTYPE_UTF8CONT
,
168 /* x8d */ SVN_CTYPE_UTF8CONT
,
169 /* x8e */ SVN_CTYPE_UTF8CONT
,
170 /* x8f */ SVN_CTYPE_UTF8CONT
,
171 /* x90 */ SVN_CTYPE_UTF8CONT
,
172 /* x91 */ SVN_CTYPE_UTF8CONT
,
173 /* x92 */ SVN_CTYPE_UTF8CONT
,
174 /* x93 */ SVN_CTYPE_UTF8CONT
,
175 /* x94 */ SVN_CTYPE_UTF8CONT
,
176 /* x95 */ SVN_CTYPE_UTF8CONT
,
177 /* x96 */ SVN_CTYPE_UTF8CONT
,
178 /* x97 */ SVN_CTYPE_UTF8CONT
,
179 /* x98 */ SVN_CTYPE_UTF8CONT
,
180 /* x99 */ SVN_CTYPE_UTF8CONT
,
181 /* x9a */ SVN_CTYPE_UTF8CONT
,
182 /* x9b */ SVN_CTYPE_UTF8CONT
,
183 /* x9c */ SVN_CTYPE_UTF8CONT
,
184 /* x9d */ SVN_CTYPE_UTF8CONT
,
185 /* x9e */ SVN_CTYPE_UTF8CONT
,
186 /* x9f */ SVN_CTYPE_UTF8CONT
,
187 /* xa0 */ SVN_CTYPE_UTF8CONT
,
188 /* xa1 */ SVN_CTYPE_UTF8CONT
,
189 /* xa2 */ SVN_CTYPE_UTF8CONT
,
190 /* xa3 */ SVN_CTYPE_UTF8CONT
,
191 /* xa4 */ SVN_CTYPE_UTF8CONT
,
192 /* xa5 */ SVN_CTYPE_UTF8CONT
,
193 /* xa6 */ SVN_CTYPE_UTF8CONT
,
194 /* xa7 */ SVN_CTYPE_UTF8CONT
,
195 /* xa8 */ SVN_CTYPE_UTF8CONT
,
196 /* xa9 */ SVN_CTYPE_UTF8CONT
,
197 /* xaa */ SVN_CTYPE_UTF8CONT
,
198 /* xab */ SVN_CTYPE_UTF8CONT
,
199 /* xac */ SVN_CTYPE_UTF8CONT
,
200 /* xad */ SVN_CTYPE_UTF8CONT
,
201 /* xae */ SVN_CTYPE_UTF8CONT
,
202 /* xaf */ SVN_CTYPE_UTF8CONT
,
203 /* xb0 */ SVN_CTYPE_UTF8CONT
,
204 /* xb1 */ SVN_CTYPE_UTF8CONT
,
205 /* xb2 */ SVN_CTYPE_UTF8CONT
,
206 /* xb3 */ SVN_CTYPE_UTF8CONT
,
207 /* xb4 */ SVN_CTYPE_UTF8CONT
,
208 /* xb5 */ SVN_CTYPE_UTF8CONT
,
209 /* xb6 */ SVN_CTYPE_UTF8CONT
,
210 /* xb7 */ SVN_CTYPE_UTF8CONT
,
211 /* xb8 */ SVN_CTYPE_UTF8CONT
,
212 /* xb9 */ SVN_CTYPE_UTF8CONT
,
213 /* xba */ SVN_CTYPE_UTF8CONT
,
214 /* xbb */ SVN_CTYPE_UTF8CONT
,
215 /* xbc */ SVN_CTYPE_UTF8CONT
,
216 /* xbd */ SVN_CTYPE_UTF8CONT
,
217 /* xbe */ SVN_CTYPE_UTF8CONT
,
218 /* xbf */ SVN_CTYPE_UTF8CONT
,
220 /* xc1 */ SVN_CTYPE_UTF8LEAD
,
221 /* xc2 */ SVN_CTYPE_UTF8LEAD
,
222 /* xc3 */ SVN_CTYPE_UTF8LEAD
,
223 /* xc4 */ SVN_CTYPE_UTF8LEAD
,
224 /* xc5 */ SVN_CTYPE_UTF8LEAD
,
225 /* xc6 */ SVN_CTYPE_UTF8LEAD
,
226 /* xc7 */ SVN_CTYPE_UTF8LEAD
,
227 /* xc8 */ SVN_CTYPE_UTF8LEAD
,
228 /* xc9 */ SVN_CTYPE_UTF8LEAD
,
229 /* xca */ SVN_CTYPE_UTF8LEAD
,
230 /* xcb */ SVN_CTYPE_UTF8LEAD
,
231 /* xcc */ SVN_CTYPE_UTF8LEAD
,
232 /* xcd */ SVN_CTYPE_UTF8LEAD
,
233 /* xce */ SVN_CTYPE_UTF8LEAD
,
234 /* xcf */ SVN_CTYPE_UTF8LEAD
,
235 /* xd0 */ SVN_CTYPE_UTF8LEAD
,
236 /* xd1 */ SVN_CTYPE_UTF8LEAD
,
237 /* xd2 */ SVN_CTYPE_UTF8LEAD
,
238 /* xd3 */ SVN_CTYPE_UTF8LEAD
,
239 /* xd4 */ SVN_CTYPE_UTF8LEAD
,
240 /* xd5 */ SVN_CTYPE_UTF8LEAD
,
241 /* xd6 */ SVN_CTYPE_UTF8LEAD
,
242 /* xd7 */ SVN_CTYPE_UTF8LEAD
,
243 /* xd8 */ SVN_CTYPE_UTF8LEAD
,
244 /* xd9 */ SVN_CTYPE_UTF8LEAD
,
245 /* xda */ SVN_CTYPE_UTF8LEAD
,
246 /* xdb */ SVN_CTYPE_UTF8LEAD
,
247 /* xdc */ SVN_CTYPE_UTF8LEAD
,
248 /* xdd */ SVN_CTYPE_UTF8LEAD
,
249 /* xde */ SVN_CTYPE_UTF8LEAD
,
250 /* xdf */ SVN_CTYPE_UTF8LEAD
,
252 /* xe1 */ SVN_CTYPE_UTF8LEAD
,
253 /* xe2 */ SVN_CTYPE_UTF8LEAD
,
254 /* xe3 */ SVN_CTYPE_UTF8LEAD
,
255 /* xe4 */ SVN_CTYPE_UTF8LEAD
,
256 /* xe5 */ SVN_CTYPE_UTF8LEAD
,
257 /* xe6 */ SVN_CTYPE_UTF8LEAD
,
258 /* xe7 */ SVN_CTYPE_UTF8LEAD
,
259 /* xe8 */ SVN_CTYPE_UTF8LEAD
,
260 /* xe9 */ SVN_CTYPE_UTF8LEAD
,
261 /* xea */ SVN_CTYPE_UTF8LEAD
,
262 /* xeb */ SVN_CTYPE_UTF8LEAD
,
263 /* xec */ SVN_CTYPE_UTF8LEAD
,
264 /* xed */ SVN_CTYPE_UTF8LEAD
,
265 /* xee */ SVN_CTYPE_UTF8LEAD
,
266 /* xef */ SVN_CTYPE_UTF8LEAD
,
268 /* xf1 */ SVN_CTYPE_UTF8LEAD
,
269 /* xf2 */ SVN_CTYPE_UTF8LEAD
,
270 /* xf3 */ SVN_CTYPE_UTF8LEAD
,
271 /* xf4 */ SVN_CTYPE_UTF8LEAD
,
272 /* xf5 */ SVN_CTYPE_UTF8LEAD
,
273 /* xf6 */ SVN_CTYPE_UTF8LEAD
,
274 /* xf7 */ SVN_CTYPE_UTF8LEAD
,
276 /* xf9 */ SVN_CTYPE_UTF8LEAD
,
277 /* xfa */ SVN_CTYPE_UTF8LEAD
,
278 /* xfb */ SVN_CTYPE_UTF8LEAD
,
280 /* xfd */ SVN_CTYPE_UTF8LEAD
,
285 const apr_uint32_t
*const svn_ctype_table
= svn_ctype_table_internal
;
287 static const unsigned char casefold_table
[256] =
289 /* Identity, except {97:122} => {65:90} */
290 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
291 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
292 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
293 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
294 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79,
295 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95,
296 96, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79,
297 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90,123,124,125,126,127,
298 128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,
299 144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,
300 160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,
301 176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,
302 192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,
303 208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,
304 224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,
305 240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255
309 svn_ctype_casecmp(int a
, int b
)
311 const int A
= casefold_table
[(unsigned char)a
];
312 const int B
= casefold_table
[(unsigned char)b
];