190 } |
190 } |
191 } |
191 } |
192 return 500; |
192 return 500; |
193 } |
193 } |
194 |
194 |
|
195 NSAPI_PUBLIC int util_uri_unescape_strict(char *s) |
|
196 { |
|
197 char *t, *u, t1, t2; |
|
198 int rv = 1; |
|
199 |
|
200 for(t = s, u = s; *t; ++t, ++u) { |
|
201 if (*t == '%') { |
|
202 t1 = t[1] & 0xdf; /* [a-f] -> [A-F] */ |
|
203 if ((t1 < 'A' || t1 > 'F') && (t[1] < '0' || t[1] > '9')) |
|
204 rv = 0; |
|
205 |
|
206 t2 = t[2] & 0xdf; /* [a-f] -> [A-F] */ |
|
207 if ((t2 < 'A' || t2 > 'F') && (t[2] < '0' || t[2] > '9')) |
|
208 rv = 0; |
|
209 |
|
210 *u = ((t[1] >= 'A' ? ((t[1] & 0xdf) - 'A')+10 : (t[1] - '0'))*16) + |
|
211 (t[2] >= 'A' ? ((t[2] & 0xdf) - 'A')+10 : (t[2] - '0')); |
|
212 t += 2; |
|
213 } |
|
214 else if (u != t) |
|
215 *u = *t; |
|
216 } |
|
217 *u = *t; |
|
218 |
|
219 return rv; |
|
220 } |
195 |
221 |
196 NSAPI_PUBLIC |
222 NSAPI_PUBLIC |
197 sstr_t util_path_append(pool_handle_t *pool, char *path, char *ch) { |
223 sstr_t util_path_append(pool_handle_t *pool, char *path, char *ch) { |
198 sstr_t parent = sstr(path); |
224 sstr_t parent = sstr(path); |
199 sstr_t child = sstr(ch); |
225 sstr_t child = sstr(ch); |