Security Plugin: set http status for URL rule match
[MonkeyD.git] / src / chars.c
blob9adb77746be834258de60925598c33ee01089fe0
1 /* Monkey HTTP Daemon
2 * ------------------
3 * Copyright (C) 2001-2010, Eduardo Silva P. <edsiper@gmail.com>
5 * This program is free software; you can redistribute it and/or modify
6 * it under the terms of the GNU General Public License as published by
7 * the Free Software Foundation; either version 2 of the License, or
8 * (at your option) any later version.
10 * This program is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 * GNU Library General Public License for more details.
15 * You should have received a copy of the GNU General Public License
16 * along with this program; if not, write to the Free Software
17 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
20 #include <stdio.h>
22 /* iso_8859_15 (man iso_8859_15) */
23 int get_char(int code)
25 switch (code) {
26 /* Perl is great :) */
27 case 160:
28 return ' ';
29 case 161:
30 return '¡';
31 case 162:
32 return '¢';
33 case 163:
34 return '£';
35 case 164:
36 return '¤';
37 case 165:
38 return '¥';
39 case 166:
40 return '¦';
41 case 167:
42 return '§';
43 case 168:
44 return '¨';
45 case 169:
46 return '©';
47 case 170:
48 return 'ª';
49 case 171:
50 return '«';
51 case 172:
52 return '¬';
53 case 173:
54 return '­';
55 case 174:
56 return '®';
57 case 175:
58 return '¯';
59 case 176:
60 return '°';
61 case 177:
62 return '±';
63 case 178:
64 return '²';
65 case 179:
66 return '³';
67 case 180:
68 return '´';
69 case 181:
70 return 'µ';
71 case 182:
72 return '¶';
73 case 183:
74 return '·';
75 case 184:
76 return '¸';
77 case 185:
78 return '¹';
79 case 186:
80 return 'º';
81 case 187:
82 return '»';
83 case 188:
84 return '¼';
85 case 189:
86 return '½';
87 case 190:
88 return '¾';
89 case 191:
90 return '¿';
91 case 192:
92 return 'À';
93 case 193:
94 return 'Á';
95 case 194:
96 return 'Â';
97 case 195:
98 return 'Ã';
99 case 196:
100 return 'Ä';
101 case 197:
102 return 'Å';
103 case 198:
104 return 'Æ';
105 case 199:
106 return 'Ç';
107 case 200:
108 return 'È';
109 case 201:
110 return 'É';
111 case 202:
112 return 'Ê';
113 case 203:
114 return 'Ë';
115 case 204:
116 return 'Ì';
117 case 205:
118 return 'Í';
119 case 206:
120 return 'Î';
121 case 207:
122 return 'Ï';
123 case 208:
124 return 'Ð';
125 case 209:
126 return 'Ñ';
127 case 210:
128 return 'Ò';
129 case 211:
130 return 'Ó';
131 case 212:
132 return 'Ô';
133 case 213:
134 return 'Õ';
135 case 214:
136 return 'Ö';
137 case 215:
138 return '×';
139 case 216:
140 return 'Ø';
141 case 217:
142 return 'Ù';
143 case 218:
144 return 'Ú';
145 case 219:
146 return 'Û';
147 case 220:
148 return 'Ü';
149 case 221:
150 return 'Ý';
151 case 222:
152 return 'Þ';
153 case 223:
154 return 'ß';
155 case 224:
156 return 'à';
157 case 225:
158 return 'á';
159 case 226:
160 return 'â';
161 case 227:
162 return 'ã';
163 case 228:
164 return 'ä';
165 case 229:
166 return 'å';
167 case 230:
168 return 'æ';
169 case 231:
170 return 'ç';
171 case 232:
172 return 'è';
173 case 233:
174 return 'é';
175 case 234:
176 return 'ê';
177 case 235:
178 return 'ë';
179 case 236:
180 return 'ì';
181 case 237:
182 return 'í';
183 case 238:
184 return 'î';
185 case 239:
186 return 'ï';
187 case 240:
188 return 'ð';
189 case 241:
190 return 'ñ';
191 case 242:
192 return 'ò';
193 case 243:
194 return 'ó';
195 case 244:
196 return 'ô';
197 case 245:
198 return 'õ';
199 case 246:
200 return 'ö';
201 case 247:
202 return '÷';
203 case 248:
204 return 'ø';
205 case 249:
206 return 'ù';
207 case 250:
208 return 'ú';
209 case 251:
210 return 'û';
211 case 252:
212 return 'ü';
213 case 253:
214 return 'ý';
215 case 254:
216 return 'þ';
217 case 255:
218 return 'ÿ';
220 return -1;
223 /* Convert hexadecimal to int */
224 int hex2int(char *pChars)
226 int Hi;
227 int Lo;
228 int Result;
230 Hi = pChars[0];
231 if ('0' <= Hi && Hi <= '9') {
232 Hi -= '0';
234 else if ('a' <= Hi && Hi <= 'f') {
235 Hi -= ('a' - 10);
237 else if ('A' <= Hi && Hi <= 'F') {
238 Hi -= ('A' - 10);
240 Lo = pChars[1];
241 if ('0' <= Lo && Lo <= '9') {
242 Lo -= '0';
244 else if ('a' <= Lo && Lo <= 'f') {
245 Lo -= ('a' - 10);
247 else if ('A' <= Lo && Lo <= 'F') {
248 Lo -= ('A' - 10);
250 Result = Lo + (16 * Hi);
252 return (Result);