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

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

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


Revision 1.1.1.1 - (hide annotations) (download) (as text) (vendor branch)
Mon Jul 26 21:11:06 2010 UTC (9 years, 2 months ago) by simple
Branch: eggheads, MAIN
CVS Tags: v1, HEAD
Branch point for: gettext
Changes since 1.1: +0 -0 lines
File MIME type: text/x-chdr
Imported Eggdrop 1.6.20

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

webmaster@eggheads.org
ViewVC Help
Powered by ViewVC 1.1.23