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

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

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


Revision 1.1 - (hide annotations) (download) (as text)
Wed Jun 23 19:51:31 1999 UTC (20 years, 2 months ago) by segfault
Branch: MAIN
Branch point for: eggdev
File MIME type: text/x-chdr
Initial revision

1 segfault 1.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