ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/svn/ircd-hybrid/trunk/src/match.c
Revision: 2945
Committed: Sun Jan 26 19:11:38 2014 UTC (11 years, 7 months ago) by michael
Content type: text/x-csrc
File size: 21215 byte(s)
Log Message:
- match.c: removed unused header include

File Contents

# Content
1 /*
2 * ircd-hybrid: an advanced, lightweight Internet Relay Chat Daemon (ircd)
3 *
4 * Copyright (c) 1997-2014 ircd-hybrid development team
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 2 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
18 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
19 * USA
20 */
21
22 /*! \file match.c
23 * \brief Functions to match/compare strings.
24 * \version $Id$
25 */
26
27 #include "stdinc.h"
28 #include "irc_string.h"
29
30
31 /*! \brief Check a string against a mask.
32 * This test checks using traditional IRC wildcards only: '*' means
33 * match zero or more characters of any type; '?' means match exactly
34 * one character of any type. A backslash escapes the next character
35 * so that a wildcard may be matched exactly.
36 * param mask Wildcard-containing mask.
37 * param name String to check against \a mask.
38 * return Zero if \a mask matches \a name, non-zero if no match.
39 */
40 int
41 match(const char *mask, const char *name)
42 {
43 const char *m = mask, *n = name;
44 const char *m_tmp = mask, *n_tmp = name;
45 int star = 0;
46
47 while (1)
48 {
49 switch (*m)
50 {
51 case '\0':
52 if (!*n)
53 return 0;
54 backtrack:
55 if (m_tmp == mask)
56 return 1;
57 m = m_tmp;
58 n = ++n_tmp;
59 if (*n == '\0')
60 return 1;
61 break;
62 case '\\':
63 m++;
64 /* allow escaping to force capitalization */
65 if (*m++ != *n++)
66 goto backtrack;
67 break;
68 case '*':
69 case '?':
70 for (star = 0; ; m++)
71 {
72 if (*m == '*')
73 star = 1;
74 else if (*m == '?')
75 {
76 if (!*n++)
77 goto backtrack;
78 }
79 else
80 break;
81 }
82
83 if (star)
84 {
85 if (!*m)
86 return 0;
87 else if (*m == '\\')
88 {
89 m_tmp = ++m;
90 if (!*m)
91 return 1;
92 for (n_tmp = n; *n && *n != *m; n++)
93 ;
94 }
95 else
96 {
97 m_tmp = m;
98 for (n_tmp = n; *n && ToLower(*n) != ToLower(*m); n++)
99 ;
100 }
101 }
102 /* and fall through */
103 default:
104 if (!*n)
105 return *m != '\0';
106 if (ToLower(*m) != ToLower(*n))
107 goto backtrack;
108 m++;
109 n++;
110 break;
111 }
112 }
113
114 return 1;
115 }
116
117 /*
118 * collapse()
119 * Collapse a pattern string into minimal components.
120 * This particular version is "in place", so that it changes the pattern
121 * which is to be reduced to a "minimal" size.
122 *
123 * (C) Carlo Wood - 6 Oct 1998
124 * Speedup rewrite by Andrea Cocito, December 1998.
125 * Note that this new optimized algorithm can *only* work in place.
126 */
127
128 /*! \brief Collapse a mask string to remove redundancies.
129 * Specifically, it replaces a sequence of '*' followed by additional
130 * '*' or '?' with the same number of '?'s as the input, followed by
131 * one '*'. This minimizes useless backtracking when matching later.
132 * \param mask Mask string to collapse.
133 * \return Pointer to the start of the string.
134 */
135 char *
136 collapse(char *mask)
137 {
138 int star = 0;
139 char *m = mask;
140 char *b = NULL;
141
142 if (m)
143 {
144 do
145 {
146 if ((*m == '*') && ((m[1] == '*') || (m[1] == '?')))
147 {
148 b = m;
149
150 do
151 {
152 if (*m == '*')
153 star = 1;
154 else
155 {
156 if (star && (*m != '?'))
157 {
158 *b++ = '*';
159 star = 0;
160 }
161
162 *b++ = *m;
163
164 if ((*m == '\\') && ((m[1] == '*') || (m[1] == '?')))
165 *b++ = *++m;
166 }
167 } while (*m++);
168
169 break;
170 }
171 else
172 {
173 if ((*m == '\\') && ((m[1] == '*') || (m[1] == '?')))
174 m++;
175 }
176 } while (*m++);
177 }
178
179 return mask;
180 }
181
182 /*
183 * irccmp - case insensitive comparison of two 0 terminated strings.
184 *
185 * returns 0, if s1 equal to s2
186 * 1, if not
187 */
188 int
189 irccmp(const char *s1, const char *s2)
190 {
191 const unsigned char *str1 = (const unsigned char *)s1;
192 const unsigned char *str2 = (const unsigned char *)s2;
193
194 assert(s1 != NULL);
195 assert(s2 != NULL);
196
197 for (; ToUpper(*str1) == ToUpper(*str2); ++str1, ++str2)
198 if (*str1 == '\0')
199 return 0;
200
201 return 1;
202 }
203
204 int
205 ircncmp(const char *s1, const char *s2, size_t n)
206 {
207 const unsigned char *str1 = (const unsigned char *)s1;
208 const unsigned char *str2 = (const unsigned char *)s2;
209
210 assert(s1 != NULL);
211 assert(s2 != NULL);
212 assert(n > 0);
213
214 if (n == 0)
215 return 0;
216
217 for (; ToUpper(*str1) == ToUpper(*str2); ++str1, ++str2)
218 if (--n == 0 || *str1 == '\0')
219 return 0;
220
221 return 1;
222 }
223
224 const unsigned char ToLowerTab[] =
225 {
226 0, 0x1, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7, 0x8, 0x9, 0xa,
227 0xb, 0xc, 0xd, 0xe, 0xf, 0x10, 0x11, 0x12, 0x13, 0x14,
228 0x15, 0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d,
229 0x1e, 0x1f,
230 ' ', '!', '"', '#', '$', '%', '&', 0x27, '(', ')',
231 '*', '+', ',', '-', '.', '/',
232 '0', '1', '2', '3', '4', '5', '6', '7', '8', '9',
233 ':', ';', '<', '=', '>', '?',
234 '@', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i',
235 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's',
236 't', 'u', 'v', 'w', 'x', 'y', 'z', '{', '|', '}', '~',
237 '_',
238 '`', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i',
239 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's',
240 't', 'u', 'v', 'w', 'x', 'y', 'z', '{', '|', '}', '~',
241 0x7f,
242 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89,
243 0x8a, 0x8b, 0x8c, 0x8d, 0x8e, 0x8f,
244 0x90, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97, 0x98, 0x99,
245 0x9a, 0x9b, 0x9c, 0x9d, 0x9e, 0x9f,
246 0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7, 0xa8, 0xa9,
247 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf,
248 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7, 0xb8, 0xb9,
249 0xba, 0xbb, 0xbc, 0xbd, 0xbe, 0xbf,
250 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, 0xc8, 0xc9,
251 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf,
252 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, 0xd8, 0xd9,
253 0xda, 0xdb, 0xdc, 0xdd, 0xde, 0xdf,
254 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, 0xe8, 0xe9,
255 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef,
256 0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, 0xf8, 0xf9,
257 0xfa, 0xfb, 0xfc, 0xfd, 0xfe, 0xff
258 };
259
260 const unsigned char ToUpperTab[] =
261 {
262 0, 0x1, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7, 0x8, 0x9, 0xa,
263 0xb, 0xc, 0xd, 0xe, 0xf, 0x10, 0x11, 0x12, 0x13, 0x14,
264 0x15, 0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d,
265 0x1e, 0x1f,
266 ' ', '!', '"', '#', '$', '%', '&', 0x27, '(', ')',
267 '*', '+', ',', '-', '.', '/',
268 '0', '1', '2', '3', '4', '5', '6', '7', '8', '9',
269 ':', ';', '<', '=', '>', '?',
270 '@', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I',
271 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S',
272 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', '[', '\\', ']', '^',
273 0x5f,
274 '`', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I',
275 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S',
276 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', '[', '\\', ']', '^',
277 0x7f,
278 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89,
279 0x8a, 0x8b, 0x8c, 0x8d, 0x8e, 0x8f,
280 0x90, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97, 0x98, 0x99,
281 0x9a, 0x9b, 0x9c, 0x9d, 0x9e, 0x9f,
282 0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7, 0xa8, 0xa9,
283 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf,
284 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7, 0xb8, 0xb9,
285 0xba, 0xbb, 0xbc, 0xbd, 0xbe, 0xbf,
286 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, 0xc8, 0xc9,
287 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf,
288 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, 0xd8, 0xd9,
289 0xda, 0xdb, 0xdc, 0xdd, 0xde, 0xdf,
290 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, 0xe8, 0xe9,
291 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef,
292 0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, 0xf8, 0xf9,
293 0xfa, 0xfb, 0xfc, 0xfd, 0xfe, 0xff
294 };
295
296 /*
297 * CharAttrs table
298 *
299 * NOTE: RFC 1459 sez: anything but a ^G, comma, or space is allowed
300 * for channel names
301 */
302 const unsigned int CharAttrs[] =
303 {
304 /* 0 */ CNTRL_C,
305 /* 1 */ CNTRL_C|CHAN_C|VCHAN_C|NONEOS_C,
306 /* 2 */ CNTRL_C|CHAN_C|NONEOS_C,
307 /* 3 */ CNTRL_C|CHAN_C|NONEOS_C,
308 /* 4 */ CNTRL_C|CHAN_C|VCHAN_C|NONEOS_C,
309 /* 5 */ CNTRL_C|CHAN_C|VCHAN_C|NONEOS_C,
310 /* 6 */ CNTRL_C|CHAN_C|VCHAN_C|NONEOS_C,
311 /* 7 BEL */ CNTRL_C|NONEOS_C,
312 /* 8 \b */ CNTRL_C|CHAN_C|VCHAN_C|NONEOS_C,
313 /* 9 \t */ CNTRL_C|SPACE_C|CHAN_C|VCHAN_C|NONEOS_C,
314 /* 10 \n */ CNTRL_C|SPACE_C|CHAN_C|VCHAN_C|NONEOS_C|EOL_C,
315 /* 11 \v */ CNTRL_C|SPACE_C|CHAN_C|VCHAN_C|NONEOS_C,
316 /* 12 \f */ CNTRL_C|SPACE_C|CHAN_C|VCHAN_C|NONEOS_C,
317 /* 13 \r */ CNTRL_C|SPACE_C|CHAN_C|VCHAN_C|NONEOS_C|EOL_C,
318 /* 14 */ CNTRL_C|CHAN_C|VCHAN_C|NONEOS_C,
319 /* 15 */ CNTRL_C|CHAN_C|NONEOS_C,
320 /* 16 */ CNTRL_C|CHAN_C|VCHAN_C|NONEOS_C,
321 /* 17 */ CNTRL_C|CHAN_C|VCHAN_C|NONEOS_C,
322 /* 18 */ CNTRL_C|CHAN_C|VCHAN_C|NONEOS_C,
323 /* 19 */ CNTRL_C|CHAN_C|VCHAN_C|NONEOS_C,
324 /* 20 */ CNTRL_C|CHAN_C|VCHAN_C|NONEOS_C,
325 /* 21 */ CNTRL_C|CHAN_C|VCHAN_C|NONEOS_C,
326 /* 22 */ CNTRL_C|CHAN_C|NONEOS_C,
327 /* 23 */ CNTRL_C|CHAN_C|VCHAN_C|NONEOS_C,
328 /* 24 */ CNTRL_C|CHAN_C|VCHAN_C|NONEOS_C,
329 /* 25 */ CNTRL_C|CHAN_C|VCHAN_C|NONEOS_C,
330 /* 26 */ CNTRL_C|CHAN_C|VCHAN_C|NONEOS_C,
331 /* 27 */ CNTRL_C|CHAN_C|VCHAN_C|NONEOS_C,
332 /* 28 */ CNTRL_C|CHAN_C|VCHAN_C|NONEOS_C,
333 /* 29 */ CNTRL_C|CHAN_C|NONEOS_C,
334 /* 30 */ CNTRL_C|CHAN_C|VCHAN_C|NONEOS_C,
335 /* 31 */ CNTRL_C|CHAN_C|NONEOS_C,
336 /* SP */ PRINT_C|SPACE_C,
337 /* ! */ PRINT_C|KWILD_C|CHAN_C|VCHAN_C|NONEOS_C,
338 /* " */ PRINT_C|CHAN_C|VCHAN_C|NONEOS_C,
339 /* # */ PRINT_C|CHANPFX_C|CHAN_C|VCHAN_C|NONEOS_C,
340 /* $ */ PRINT_C|CHAN_C|VCHAN_C|NONEOS_C|USER_C,
341 /* % */ PRINT_C|CHAN_C|VCHAN_C|NONEOS_C,
342 /* & */ PRINT_C|CHAN_C|VCHAN_C|NONEOS_C,
343 /* ' */ PRINT_C|CHAN_C|VCHAN_C|NONEOS_C,
344 /* ( */ PRINT_C|CHAN_C|VCHAN_C|NONEOS_C,
345 /* ) */ PRINT_C|CHAN_C|VCHAN_C|NONEOS_C,
346 /* * */ PRINT_C|KWILD_C|MWILD_C|CHAN_C|VCHAN_C|NONEOS_C|SERV_C,
347 /* + */ PRINT_C|CHAN_C|VCHAN_C|NONEOS_C,
348 /* , */ PRINT_C|NONEOS_C,
349 /* - */ PRINT_C|NICK_C|CHAN_C|VCHAN_C|NONEOS_C|USER_C|HOST_C,
350 /* . */ PRINT_C|KWILD_C|CHAN_C|VCHAN_C|NONEOS_C|USER_C|HOST_C|SERV_C,
351 /* / */ PRINT_C|CHAN_C|VCHAN_C|NONEOS_C,
352 /* 0 */ PRINT_C|DIGIT_C|NICK_C|CHAN_C|VCHAN_C|NONEOS_C|USER_C|HOST_C,
353 /* 1 */ PRINT_C|DIGIT_C|NICK_C|CHAN_C|VCHAN_C|NONEOS_C|USER_C|HOST_C,
354 /* 2 */ PRINT_C|DIGIT_C|NICK_C|CHAN_C|VCHAN_C|NONEOS_C|USER_C|HOST_C,
355 /* 3 */ PRINT_C|DIGIT_C|NICK_C|CHAN_C|VCHAN_C|NONEOS_C|USER_C|HOST_C,
356 /* 4 */ PRINT_C|DIGIT_C|NICK_C|CHAN_C|VCHAN_C|NONEOS_C|USER_C|HOST_C,
357 /* 5 */ PRINT_C|DIGIT_C|NICK_C|CHAN_C|VCHAN_C|NONEOS_C|USER_C|HOST_C,
358 /* 6 */ PRINT_C|DIGIT_C|NICK_C|CHAN_C|VCHAN_C|NONEOS_C|USER_C|HOST_C,
359 /* 7 */ PRINT_C|DIGIT_C|NICK_C|CHAN_C|VCHAN_C|NONEOS_C|USER_C|HOST_C,
360 /* 8 */ PRINT_C|DIGIT_C|NICK_C|CHAN_C|VCHAN_C|NONEOS_C|USER_C|HOST_C,
361 /* 9 */ PRINT_C|DIGIT_C|NICK_C|CHAN_C|VCHAN_C|NONEOS_C|USER_C|HOST_C,
362 /* : */ PRINT_C|KWILD_C|CHAN_C|VCHAN_C|NONEOS_C|HOST_C,
363 /* ; */ PRINT_C|CHAN_C|VCHAN_C|NONEOS_C,
364 /* < */ PRINT_C|CHAN_C|VCHAN_C|NONEOS_C,
365 /* = */ PRINT_C|CHAN_C|VCHAN_C|NONEOS_C,
366 /* > */ PRINT_C|CHAN_C|VCHAN_C|NONEOS_C,
367 /* ? */ PRINT_C|KWILD_C|MWILD_C|CHAN_C|VCHAN_C|NONEOS_C,
368 /* @ */ PRINT_C|KWILD_C|CHAN_C|VCHAN_C|NONEOS_C,
369 /* A */ PRINT_C|ALPHA_C|NICK_C|CHAN_C|VCHAN_C|NONEOS_C|USER_C|HOST_C,
370 /* B */ PRINT_C|ALPHA_C|NICK_C|CHAN_C|VCHAN_C|NONEOS_C|USER_C|HOST_C,
371 /* C */ PRINT_C|ALPHA_C|NICK_C|CHAN_C|VCHAN_C|NONEOS_C|USER_C|HOST_C,
372 /* D */ PRINT_C|ALPHA_C|NICK_C|CHAN_C|VCHAN_C|NONEOS_C|USER_C|HOST_C,
373 /* E */ PRINT_C|ALPHA_C|NICK_C|CHAN_C|VCHAN_C|NONEOS_C|USER_C|HOST_C,
374 /* F */ PRINT_C|ALPHA_C|NICK_C|CHAN_C|VCHAN_C|NONEOS_C|USER_C|HOST_C,
375 /* G */ PRINT_C|ALPHA_C|NICK_C|CHAN_C|VCHAN_C|NONEOS_C|USER_C|HOST_C,
376 /* H */ PRINT_C|ALPHA_C|NICK_C|CHAN_C|VCHAN_C|NONEOS_C|USER_C|HOST_C,
377 /* I */ PRINT_C|ALPHA_C|NICK_C|CHAN_C|VCHAN_C|NONEOS_C|USER_C|HOST_C,
378 /* J */ PRINT_C|ALPHA_C|NICK_C|CHAN_C|VCHAN_C|NONEOS_C|USER_C|HOST_C,
379 /* K */ PRINT_C|ALPHA_C|NICK_C|CHAN_C|VCHAN_C|NONEOS_C|USER_C|HOST_C,
380 /* L */ PRINT_C|ALPHA_C|NICK_C|CHAN_C|VCHAN_C|NONEOS_C|USER_C|HOST_C,
381 /* M */ PRINT_C|ALPHA_C|NICK_C|CHAN_C|VCHAN_C|NONEOS_C|USER_C|HOST_C,
382 /* N */ PRINT_C|ALPHA_C|NICK_C|CHAN_C|VCHAN_C|NONEOS_C|USER_C|HOST_C,
383 /* O */ PRINT_C|ALPHA_C|NICK_C|CHAN_C|VCHAN_C|NONEOS_C|USER_C|HOST_C,
384 /* P */ PRINT_C|ALPHA_C|NICK_C|CHAN_C|VCHAN_C|NONEOS_C|USER_C|HOST_C,
385 /* Q */ PRINT_C|ALPHA_C|NICK_C|CHAN_C|VCHAN_C|NONEOS_C|USER_C|HOST_C,
386 /* R */ PRINT_C|ALPHA_C|NICK_C|CHAN_C|VCHAN_C|NONEOS_C|USER_C|HOST_C,
387 /* S */ PRINT_C|ALPHA_C|NICK_C|CHAN_C|VCHAN_C|NONEOS_C|USER_C|HOST_C,
388 /* T */ PRINT_C|ALPHA_C|NICK_C|CHAN_C|VCHAN_C|NONEOS_C|USER_C|HOST_C,
389 /* U */ PRINT_C|ALPHA_C|NICK_C|CHAN_C|VCHAN_C|NONEOS_C|USER_C|HOST_C,
390 /* V */ PRINT_C|ALPHA_C|NICK_C|CHAN_C|VCHAN_C|NONEOS_C|USER_C|HOST_C,
391 /* W */ PRINT_C|ALPHA_C|NICK_C|CHAN_C|VCHAN_C|NONEOS_C|USER_C|HOST_C,
392 /* X */ PRINT_C|ALPHA_C|NICK_C|CHAN_C|VCHAN_C|NONEOS_C|USER_C|HOST_C,
393 /* Y */ PRINT_C|ALPHA_C|NICK_C|CHAN_C|VCHAN_C|NONEOS_C|USER_C|HOST_C,
394 /* Z */ PRINT_C|ALPHA_C|NICK_C|CHAN_C|VCHAN_C|NONEOS_C|USER_C|HOST_C,
395 /* [ */ PRINT_C|ALPHA_C|NICK_C|CHAN_C|VCHAN_C|NONEOS_C|USER_C,
396 /* \ */ PRINT_C|ALPHA_C|NICK_C|CHAN_C|VCHAN_C|NONEOS_C|USER_C,
397 /* ] */ PRINT_C|ALPHA_C|NICK_C|CHAN_C|VCHAN_C|NONEOS_C|USER_C,
398 /* ^ */ PRINT_C|ALPHA_C|NICK_C|CHAN_C|VCHAN_C|NONEOS_C|USER_C,
399 /* _ */ PRINT_C|NICK_C|CHAN_C|VCHAN_C|NONEOS_C|USER_C,
400 /* ` */ PRINT_C|NICK_C|CHAN_C|VCHAN_C|NONEOS_C|USER_C,
401 /* a */ PRINT_C|ALPHA_C|NICK_C|CHAN_C|VCHAN_C|NONEOS_C|USER_C|HOST_C,
402 /* b */ PRINT_C|ALPHA_C|NICK_C|CHAN_C|VCHAN_C|NONEOS_C|USER_C|HOST_C,
403 /* c */ PRINT_C|ALPHA_C|NICK_C|CHAN_C|VCHAN_C|NONEOS_C|USER_C|HOST_C,
404 /* d */ PRINT_C|ALPHA_C|NICK_C|CHAN_C|VCHAN_C|NONEOS_C|USER_C|HOST_C,
405 /* e */ PRINT_C|ALPHA_C|NICK_C|CHAN_C|VCHAN_C|NONEOS_C|USER_C|HOST_C,
406 /* f */ PRINT_C|ALPHA_C|NICK_C|CHAN_C|VCHAN_C|NONEOS_C|USER_C|HOST_C,
407 /* g */ PRINT_C|ALPHA_C|NICK_C|CHAN_C|VCHAN_C|NONEOS_C|USER_C|HOST_C,
408 /* h */ PRINT_C|ALPHA_C|NICK_C|CHAN_C|VCHAN_C|NONEOS_C|USER_C|HOST_C,
409 /* i */ PRINT_C|ALPHA_C|NICK_C|CHAN_C|VCHAN_C|NONEOS_C|USER_C|HOST_C,
410 /* j */ PRINT_C|ALPHA_C|NICK_C|CHAN_C|VCHAN_C|NONEOS_C|USER_C|HOST_C,
411 /* k */ PRINT_C|ALPHA_C|NICK_C|CHAN_C|VCHAN_C|NONEOS_C|USER_C|HOST_C,
412 /* l */ PRINT_C|ALPHA_C|NICK_C|CHAN_C|VCHAN_C|NONEOS_C|USER_C|HOST_C,
413 /* m */ PRINT_C|ALPHA_C|NICK_C|CHAN_C|VCHAN_C|NONEOS_C|USER_C|HOST_C,
414 /* n */ PRINT_C|ALPHA_C|NICK_C|CHAN_C|VCHAN_C|NONEOS_C|USER_C|HOST_C,
415 /* o */ PRINT_C|ALPHA_C|NICK_C|CHAN_C|VCHAN_C|NONEOS_C|USER_C|HOST_C,
416 /* p */ PRINT_C|ALPHA_C|NICK_C|CHAN_C|VCHAN_C|NONEOS_C|USER_C|HOST_C,
417 /* q */ PRINT_C|ALPHA_C|NICK_C|CHAN_C|VCHAN_C|NONEOS_C|USER_C|HOST_C,
418 /* r */ PRINT_C|ALPHA_C|NICK_C|CHAN_C|VCHAN_C|NONEOS_C|USER_C|HOST_C,
419 /* s */ PRINT_C|ALPHA_C|NICK_C|CHAN_C|VCHAN_C|NONEOS_C|USER_C|HOST_C,
420 /* t */ PRINT_C|ALPHA_C|NICK_C|CHAN_C|VCHAN_C|NONEOS_C|USER_C|HOST_C,
421 /* u */ PRINT_C|ALPHA_C|NICK_C|CHAN_C|VCHAN_C|NONEOS_C|USER_C|HOST_C,
422 /* v */ PRINT_C|ALPHA_C|NICK_C|CHAN_C|VCHAN_C|NONEOS_C|USER_C|HOST_C,
423 /* w */ PRINT_C|ALPHA_C|NICK_C|CHAN_C|VCHAN_C|NONEOS_C|USER_C|HOST_C,
424 /* x */ PRINT_C|ALPHA_C|NICK_C|CHAN_C|VCHAN_C|NONEOS_C|USER_C|HOST_C,
425 /* y */ PRINT_C|ALPHA_C|NICK_C|CHAN_C|VCHAN_C|NONEOS_C|USER_C|HOST_C,
426 /* z */ PRINT_C|ALPHA_C|NICK_C|CHAN_C|VCHAN_C|NONEOS_C|USER_C|HOST_C,
427 /* { */ PRINT_C|ALPHA_C|NICK_C|CHAN_C|VCHAN_C|NONEOS_C|USER_C,
428 /* | */ PRINT_C|ALPHA_C|NICK_C|CHAN_C|VCHAN_C|NONEOS_C|USER_C,
429 /* } */ PRINT_C|ALPHA_C|NICK_C|CHAN_C|VCHAN_C|NONEOS_C|USER_C,
430 /* ~ */ PRINT_C|ALPHA_C|CHAN_C|VCHAN_C|NONEOS_C|USER_C,
431 /* del */ CHAN_C|VCHAN_C|NONEOS_C,
432 /* 0x80 */ CHAN_C|VCHAN_C|NONEOS_C,
433 /* 0x81 */ CHAN_C|VCHAN_C|NONEOS_C,
434 /* 0x82 */ CHAN_C|VCHAN_C|NONEOS_C,
435 /* 0x83 */ CHAN_C|VCHAN_C|NONEOS_C,
436 /* 0x84 */ CHAN_C|VCHAN_C|NONEOS_C,
437 /* 0x85 */ CHAN_C|VCHAN_C|NONEOS_C,
438 /* 0x86 */ CHAN_C|VCHAN_C|NONEOS_C,
439 /* 0x87 */ CHAN_C|VCHAN_C|NONEOS_C,
440 /* 0x88 */ CHAN_C|VCHAN_C|NONEOS_C,
441 /* 0x89 */ CHAN_C|VCHAN_C|NONEOS_C,
442 /* 0x8A */ CHAN_C|VCHAN_C|NONEOS_C,
443 /* 0x8B */ CHAN_C|VCHAN_C|NONEOS_C,
444 /* 0x8C */ CHAN_C|VCHAN_C|NONEOS_C,
445 /* 0x8D */ CHAN_C|VCHAN_C|NONEOS_C,
446 /* 0x8E */ CHAN_C|VCHAN_C|NONEOS_C,
447 /* 0x8F */ CHAN_C|VCHAN_C|NONEOS_C,
448 /* 0x90 */ CHAN_C|VCHAN_C|NONEOS_C,
449 /* 0x91 */ CHAN_C|VCHAN_C|NONEOS_C,
450 /* 0x92 */ CHAN_C|VCHAN_C|NONEOS_C,
451 /* 0x93 */ CHAN_C|VCHAN_C|NONEOS_C,
452 /* 0x94 */ CHAN_C|VCHAN_C|NONEOS_C,
453 /* 0x95 */ CHAN_C|VCHAN_C|NONEOS_C,
454 /* 0x96 */ CHAN_C|VCHAN_C|NONEOS_C,
455 /* 0x97 */ CHAN_C|VCHAN_C|NONEOS_C,
456 /* 0x98 */ CHAN_C|VCHAN_C|NONEOS_C,
457 /* 0x99 */ CHAN_C|VCHAN_C|NONEOS_C,
458 /* 0x9A */ CHAN_C|VCHAN_C|NONEOS_C,
459 /* 0x9B */ CHAN_C|VCHAN_C|NONEOS_C,
460 /* 0x9C */ CHAN_C|VCHAN_C|NONEOS_C,
461 /* 0x9D */ CHAN_C|VCHAN_C|NONEOS_C,
462 /* 0x9E */ CHAN_C|VCHAN_C|NONEOS_C,
463 /* 0x9F */ CHAN_C|VCHAN_C|NONEOS_C,
464 /* 0xA0 */ CHAN_C|NONEOS_C,
465 /* 0xA1 */ CHAN_C|VCHAN_C|NONEOS_C,
466 /* 0xA2 */ CHAN_C|VCHAN_C|NONEOS_C,
467 /* 0xA3 */ CHAN_C|VCHAN_C|NONEOS_C,
468 /* 0xA4 */ CHAN_C|VCHAN_C|NONEOS_C,
469 /* 0xA5 */ CHAN_C|VCHAN_C|NONEOS_C,
470 /* 0xA6 */ CHAN_C|VCHAN_C|NONEOS_C,
471 /* 0xA7 */ CHAN_C|VCHAN_C|NONEOS_C,
472 /* 0xA8 */ CHAN_C|VCHAN_C|NONEOS_C,
473 /* 0xA9 */ CHAN_C|VCHAN_C|NONEOS_C,
474 /* 0xAA */ CHAN_C|VCHAN_C|NONEOS_C,
475 /* 0xAB */ CHAN_C|VCHAN_C|NONEOS_C,
476 /* 0xAC */ CHAN_C|VCHAN_C|NONEOS_C,
477 /* 0xAD */ CHAN_C|VCHAN_C|NONEOS_C,
478 /* 0xAE */ CHAN_C|VCHAN_C|NONEOS_C,
479 /* 0xAF */ CHAN_C|VCHAN_C|NONEOS_C,
480 /* 0xB0 */ CHAN_C|VCHAN_C|NONEOS_C,
481 /* 0xB1 */ CHAN_C|VCHAN_C|NONEOS_C,
482 /* 0xB2 */ CHAN_C|VCHAN_C|NONEOS_C,
483 /* 0xB3 */ CHAN_C|VCHAN_C|NONEOS_C,
484 /* 0xB4 */ CHAN_C|VCHAN_C|NONEOS_C,
485 /* 0xB5 */ CHAN_C|VCHAN_C|NONEOS_C,
486 /* 0xB6 */ CHAN_C|VCHAN_C|NONEOS_C,
487 /* 0xB7 */ CHAN_C|VCHAN_C|NONEOS_C,
488 /* 0xB8 */ CHAN_C|VCHAN_C|NONEOS_C,
489 /* 0xB9 */ CHAN_C|VCHAN_C|NONEOS_C,
490 /* 0xBA */ CHAN_C|VCHAN_C|NONEOS_C,
491 /* 0xBB */ CHAN_C|VCHAN_C|NONEOS_C,
492 /* 0xBC */ CHAN_C|VCHAN_C|NONEOS_C,
493 /* 0xBD */ CHAN_C|VCHAN_C|NONEOS_C,
494 /* 0xBE */ CHAN_C|VCHAN_C|NONEOS_C,
495 /* 0xBF */ CHAN_C|VCHAN_C|NONEOS_C,
496 /* 0xC0 */ CHAN_C|VCHAN_C|NONEOS_C,
497 /* 0xC1 */ CHAN_C|VCHAN_C|NONEOS_C,
498 /* 0xC2 */ CHAN_C|VCHAN_C|NONEOS_C,
499 /* 0xC3 */ CHAN_C|VCHAN_C|NONEOS_C,
500 /* 0xC4 */ CHAN_C|VCHAN_C|NONEOS_C,
501 /* 0xC5 */ CHAN_C|VCHAN_C|NONEOS_C,
502 /* 0xC6 */ CHAN_C|VCHAN_C|NONEOS_C,
503 /* 0xC7 */ CHAN_C|VCHAN_C|NONEOS_C,
504 /* 0xC8 */ CHAN_C|VCHAN_C|NONEOS_C,
505 /* 0xC9 */ CHAN_C|VCHAN_C|NONEOS_C,
506 /* 0xCA */ CHAN_C|VCHAN_C|NONEOS_C,
507 /* 0xCB */ CHAN_C|VCHAN_C|NONEOS_C,
508 /* 0xCC */ CHAN_C|VCHAN_C|NONEOS_C,
509 /* 0xCD */ CHAN_C|VCHAN_C|NONEOS_C,
510 /* 0xCE */ CHAN_C|VCHAN_C|NONEOS_C,
511 /* 0xCF */ CHAN_C|VCHAN_C|NONEOS_C,
512 /* 0xD0 */ CHAN_C|VCHAN_C|NONEOS_C,
513 /* 0xD1 */ CHAN_C|VCHAN_C|NONEOS_C,
514 /* 0xD2 */ CHAN_C|VCHAN_C|NONEOS_C,
515 /* 0xD3 */ CHAN_C|VCHAN_C|NONEOS_C,
516 /* 0xD4 */ CHAN_C|VCHAN_C|NONEOS_C,
517 /* 0xD5 */ CHAN_C|VCHAN_C|NONEOS_C,
518 /* 0xD6 */ CHAN_C|VCHAN_C|NONEOS_C,
519 /* 0xD7 */ CHAN_C|VCHAN_C|NONEOS_C,
520 /* 0xD8 */ CHAN_C|VCHAN_C|NONEOS_C,
521 /* 0xD9 */ CHAN_C|VCHAN_C|NONEOS_C,
522 /* 0xDA */ CHAN_C|VCHAN_C|NONEOS_C,
523 /* 0xDB */ CHAN_C|VCHAN_C|NONEOS_C,
524 /* 0xDC */ CHAN_C|VCHAN_C|NONEOS_C,
525 /* 0xDD */ CHAN_C|VCHAN_C|NONEOS_C,
526 /* 0xDE */ CHAN_C|VCHAN_C|NONEOS_C,
527 /* 0xDF */ CHAN_C|VCHAN_C|NONEOS_C,
528 /* 0xE0 */ CHAN_C|VCHAN_C|NONEOS_C,
529 /* 0xE1 */ CHAN_C|VCHAN_C|NONEOS_C,
530 /* 0xE2 */ CHAN_C|VCHAN_C|NONEOS_C,
531 /* 0xE3 */ CHAN_C|VCHAN_C|NONEOS_C,
532 /* 0xE4 */ CHAN_C|VCHAN_C|NONEOS_C,
533 /* 0xE5 */ CHAN_C|VCHAN_C|NONEOS_C,
534 /* 0xE6 */ CHAN_C|VCHAN_C|NONEOS_C,
535 /* 0xE7 */ CHAN_C|VCHAN_C|NONEOS_C,
536 /* 0xE8 */ CHAN_C|VCHAN_C|NONEOS_C,
537 /* 0xE9 */ CHAN_C|VCHAN_C|NONEOS_C,
538 /* 0xEA */ CHAN_C|VCHAN_C|NONEOS_C,
539 /* 0xEB */ CHAN_C|VCHAN_C|NONEOS_C,
540 /* 0xEC */ CHAN_C|VCHAN_C|NONEOS_C,
541 /* 0xED */ CHAN_C|VCHAN_C|NONEOS_C,
542 /* 0xEE */ CHAN_C|VCHAN_C|NONEOS_C,
543 /* 0xEF */ CHAN_C|VCHAN_C|NONEOS_C,
544 /* 0xF0 */ CHAN_C|VCHAN_C|NONEOS_C,
545 /* 0xF1 */ CHAN_C|VCHAN_C|NONEOS_C,
546 /* 0xF2 */ CHAN_C|VCHAN_C|NONEOS_C,
547 /* 0xF3 */ CHAN_C|VCHAN_C|NONEOS_C,
548 /* 0xF4 */ CHAN_C|VCHAN_C|NONEOS_C,
549 /* 0xF5 */ CHAN_C|VCHAN_C|NONEOS_C,
550 /* 0xF6 */ CHAN_C|VCHAN_C|NONEOS_C,
551 /* 0xF7 */ CHAN_C|VCHAN_C|NONEOS_C,
552 /* 0xF8 */ CHAN_C|VCHAN_C|NONEOS_C,
553 /* 0xF9 */ CHAN_C|VCHAN_C|NONEOS_C,
554 /* 0xFA */ CHAN_C|VCHAN_C|NONEOS_C,
555 /* 0xFB */ CHAN_C|VCHAN_C|NONEOS_C,
556 /* 0xFC */ CHAN_C|VCHAN_C|NONEOS_C,
557 /* 0xFD */ CHAN_C|VCHAN_C|NONEOS_C,
558 /* 0xFE */ CHAN_C|VCHAN_C|NONEOS_C,
559 /* 0xFF */ CHAN_C|VCHAN_C|NONEOS_C
560 };

Properties

Name Value
svn:eol-style native
svn:keywords Id Revision