/[cvs]/eggdrop1.9/src/rfc1459.c
ViewVC logotype

Contents of /eggdrop1.9/src/rfc1459.c

Parent Directory Parent Directory | Revision Log Revision Log | View Revision Graph Revision Graph


Revision 1.5 - (show annotations) (download) (as text)
Thu Oct 11 18:24:01 2001 UTC (18 years ago) by tothwolf
Branch: MAIN
CVS Tags: HEAD
Changes since 1.4: +1 -1 lines
File MIME type: text/x-chdr
FILE REMOVED
* rfc1459.c cleaned up and renamed to irccmp.c
* rfc_casecmp() renamed to irccmp()
* rfc_ncasecmp() renamed to ircncmp()
* rfc_toupper() renamed to irctoupper()
* rfc_tolower() renamed to irctolower()
* more match.c cleanups

1 /*
2 * rfc1459.c
3 *
4 * $Id: rfc1459.c,v 1.4 2000/12/10 15:10:27 guppy Exp $
5 */
6 /*
7 * This code was more or less cloned from the ircd-hybrid 5.3 source.
8 * The original code was written by Otto Harkoonen and even though it
9 * it not entirely in synch with section 2.2 of RFC1459 in that it
10 * additionally defines carat as an uppercase version of tilde, it's
11 * what is in the servers themselves so we're going with it this way.
12 *
13 * If for some reason someone who maintains the source for ircd decides
14 * to change the code to be completely RFC compliant, the change here
15 * would be absolutely miniscule.
16 *
17 * BTW, since carat characters are allowed in nicknames and tildes are
18 * not, I stronly suggest that people convert to uppercase when doing
19 * comparisons or creation of hash elements (which tcl laughably calls
20 * arrays) to avoid making entries with impossible nicknames in them.
21 *
22 * --+ Dagmar
23 */
24
25 #include "main.h"
26
27 int _rfc_casecmp(const char *s1, const char *s2)
28 {
29 register unsigned char *str1 = (unsigned char *) s1;
30 register unsigned char *str2 = (unsigned char *) s2;
31 register int res;
32
33 while (!(res = rfc_toupper(*str1) - rfc_toupper(*str2))) {
34 if (*str1 == '\0')
35 return 0;
36 str1++;
37 str2++;
38 }
39 return (res);
40 }
41
42 int _rfc_ncasecmp(const char *str1, const char *str2, int n)
43 {
44 register unsigned char *s1 = (unsigned char *) str1;
45 register unsigned char *s2 = (unsigned char *) str2;
46 register int res;
47
48 while (!(res = rfc_toupper(*s1) - rfc_toupper(*s2))) {
49 s1++;
50 s2++;
51 n--;
52 if (!n || (*s1 == '\0' && *s2 == '\0'))
53 return 0;
54 }
55 return (res);
56 }
57
58 unsigned char rfc_tolowertab[];
59 unsigned char rfc_touppertab[];
60
61 int _rfc_tolower(int c)
62 {
63 return rfc_tolowertab[(unsigned char)(c)];
64 }
65
66 int _rfc_toupper(int c)
67 {
68 return rfc_touppertab[(unsigned char)(c)];
69 }
70
71 unsigned char rfc_tolowertab[] =
72 {0, 0x1, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7, 0x8, 0x9, 0xa,
73 0xb, 0xc, 0xd, 0xe, 0xf, 0x10, 0x11, 0x12, 0x13, 0x14,
74 0x15, 0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d,
75 0x1e, 0x1f,
76 ' ', '!', '"', '#', '$', '%', '&', 0x27, '(', ')',
77 '*', '+', ',', '-', '.', '/',
78 '0', '1', '2', '3', '4', '5', '6', '7', '8', '9',
79 ':', ';', '<', '=', '>', '?',
80 '@', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i',
81 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's',
82 't', 'u', 'v', 'w', 'x', 'y', 'z', '{', '|', '}', '~',
83 '_',
84 '`', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i',
85 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's',
86 't', 'u', 'v', 'w', 'x', 'y', 'z', '{', '|', '}', '~',
87 0x7f,
88 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89,
89 0x8a, 0x8b, 0x8c, 0x8d, 0x8e, 0x8f,
90 0x90, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97, 0x98, 0x99,
91 0x9a, 0x9b, 0x9c, 0x9d, 0x9e, 0x9f,
92 0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7, 0xa8, 0xa9,
93 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf,
94 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7, 0xb8, 0xb9,
95 0xba, 0xbb, 0xbc, 0xbd, 0xbe, 0xbf,
96 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, 0xc8, 0xc9,
97 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf,
98 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, 0xd8, 0xd9,
99 0xda, 0xdb, 0xdc, 0xdd, 0xde, 0xdf,
100 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, 0xe8, 0xe9,
101 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef,
102 0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, 0xf8, 0xf9,
103 0xfa, 0xfb, 0xfc, 0xfd, 0xfe, 0xff};
104
105 unsigned char rfc_touppertab[] =
106 {0, 0x1, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7, 0x8, 0x9, 0xa,
107 0xb, 0xc, 0xd, 0xe, 0xf, 0x10, 0x11, 0x12, 0x13, 0x14,
108 0x15, 0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d,
109 0x1e, 0x1f,
110 ' ', '!', '"', '#', '$', '%', '&', 0x27, '(', ')',
111 '*', '+', ',', '-', '.', '/',
112 '0', '1', '2', '3', '4', '5', '6', '7', '8', '9',
113 ':', ';', '<', '=', '>', '?',
114 '@', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I',
115 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S',
116 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', '[', '\\', ']', '^',
117 0x5f,
118 '`', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I',
119 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S',
120 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', '[', '\\', ']', '^',
121 0x7f,
122 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89,
123 0x8a, 0x8b, 0x8c, 0x8d, 0x8e, 0x8f,
124 0x90, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97, 0x98, 0x99,
125 0x9a, 0x9b, 0x9c, 0x9d, 0x9e, 0x9f,
126 0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7, 0xa8, 0xa9,
127 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf,
128 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7, 0xb8, 0xb9,
129 0xba, 0xbb, 0xbc, 0xbd, 0xbe, 0xbf,
130 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, 0xc8, 0xc9,
131 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf,
132 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, 0xd8, 0xd9,
133 0xda, 0xdb, 0xdc, 0xdd, 0xde, 0xdf,
134 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, 0xe8, 0xe9,
135 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef,
136 0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, 0xf8, 0xf9,
137 0xfa, 0xfb, 0xfc, 0xfd, 0xfe, 0xff};
138

webmaster@eggheads.org
ViewVC Help
Powered by ViewVC 1.1.23