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

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

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


Revision 1.1.1.1 - (show annotations) (download) (as text) (vendor branch)
Wed Jun 23 19:51:31 1999 UTC (20 years, 5 months ago) by segfault
Branch: eggdev
CVS Tags: start
Changes since 1.1: +0 -0 lines
File MIME type: text/x-chdr
Eggdrop 1.3.28 CVS Code

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

webmaster@eggheads.org
ViewVC Help
Powered by ViewVC 1.1.23