diff options
Diffstat (limited to 'html.c')
-rw-r--r-- | html.c | 15 |
1 files changed, 9 insertions, 6 deletions
@@ -18,7 +18,7 @@ static const char* url_escape_table[256] = { | |||
18 | "%00", "%01", "%02", "%03", "%04", "%05", "%06", "%07", "%08", "%09", | 18 | "%00", "%01", "%02", "%03", "%04", "%05", "%06", "%07", "%08", "%09", |
19 | "%0a", "%0b", "%0c", "%0d", "%0e", "%0f", "%10", "%11", "%12", "%13", | 19 | "%0a", "%0b", "%0c", "%0d", "%0e", "%0f", "%10", "%11", "%12", "%13", |
20 | "%14", "%15", "%16", "%17", "%18", "%19", "%1a", "%1b", "%1c", "%1d", | 20 | "%14", "%15", "%16", "%17", "%18", "%19", "%1a", "%1b", "%1c", "%1d", |
21 | "%1e", "%1f", "+", 0, "%22", "%23", 0, "%25", "%26", "%27", 0, 0, 0, | 21 | "%1e", "%1f", "%20", 0, "%22", "%23", 0, "%25", "%26", "%27", 0, 0, 0, |
22 | "%2b", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, "%3c", "%3d", | 22 | "%2b", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, "%3c", "%3d", |
23 | "%3e", "%3f", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, | 23 | "%3e", "%3f", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, |
24 | 0, 0, 0, 0, 0, 0, 0, 0, 0, "%5c", 0, "%5e", 0, "%60", 0, 0, 0, 0, 0, | 24 | 0, 0, 0, 0, 0, 0, 0, 0, 0, "%5c", 0, "%5e", 0, "%60", 0, 0, 0, 0, 0, |
@@ -162,9 +162,9 @@ void html_url_path(const char *txt) | |||
162 | while(t && *t){ | 162 | while(t && *t){ |
163 | int c = *t; | 163 | int c = *t; |
164 | const char *e = url_escape_table[c]; | 164 | const char *e = url_escape_table[c]; |
165 | if (e && c!='+' && c!='&' && c!='+') { | 165 | if (e && c!='+' && c!='&') { |
166 | html_raw(txt, t - txt); | 166 | html_raw(txt, t - txt); |
167 | html_raw(e, 3); | 167 | html(e); |
168 | txt = t+1; | 168 | txt = t+1; |
169 | } | 169 | } |
170 | t++; | 170 | t++; |
@@ -179,9 +179,11 @@ void html_url_arg(const char *txt) | |||
179 | while(t && *t){ | 179 | while(t && *t){ |
180 | int c = *t; | 180 | int c = *t; |
181 | const char *e = url_escape_table[c]; | 181 | const char *e = url_escape_table[c]; |
182 | if (c == ' ') | ||
183 | e = "+"; | ||
182 | if (e) { | 184 | if (e) { |
183 | html_raw(txt, t - txt); | 185 | html_raw(txt, t - txt); |
184 | html_raw(e, strlen(e)); | 186 | html(e); |
185 | txt = t+1; | 187 | txt = t+1; |
186 | } | 188 | } |
187 | t++; | 189 | t++; |
@@ -296,12 +298,12 @@ char *convert_query_hexchar(char *txt) | |||
296 | 298 | ||
297 | int http_parse_querystring(const char *txt_, void (*fn)(const char *name, const char *value)) | 299 | int http_parse_querystring(const char *txt_, void (*fn)(const char *name, const char *value)) |
298 | { | 300 | { |
299 | char *t, *txt, *value = NULL, c; | 301 | char *o, *t, *txt, *value = NULL, c; |
300 | 302 | ||
301 | if (!txt_) | 303 | if (!txt_) |
302 | return 0; | 304 | return 0; |
303 | 305 | ||
304 | t = txt = strdup(txt_); | 306 | o = t = txt = strdup(txt_); |
305 | if (t == NULL) { | 307 | if (t == NULL) { |
306 | printf("Out of memory\n"); | 308 | printf("Out of memory\n"); |
307 | exit(1); | 309 | exit(1); |
@@ -324,5 +326,6 @@ int http_parse_querystring(const char *txt_, void (*fn)(const char *name, const | |||
324 | } | 326 | } |
325 | if (t!=txt) | 327 | if (t!=txt) |
326 | (*fn)(txt, value); | 328 | (*fn)(txt, value); |
329 | free(o); | ||
327 | return 0; | 330 | return 0; |
328 | } | 331 | } |