const char *t = txt;
while(t && *t){
int c = *t;
- if (c=='<' || c=='>' || c=='\'' || c=='\"') {
+ if (c=='<' || c=='>' || c=='\'' || c=='\"' || c=='&') {
html_raw(txt, t - txt);
if (c=='>')
html(">");
html("'");
else if (c=='"')
html(""");
+ else if (c=='&')
+ html("&");
txt = t+1;
}
t++;
{
const char *t = txt;
while(t && *t){
- int c = *t;
+ unsigned char c = *t;
const char *e = url_escape_table[c];
if (e && c!='+' && c!='&') {
html_raw(txt, t - txt);
{
const char *t = txt;
while(t && *t){
- int c = *t;
+ unsigned char c = *t;
const char *e = url_escape_table[c];
if (c == ' ')
e = "+";
int http_parse_querystring(const char *txt_, void (*fn)(const char *name, const char *value))
{
- char *t, *txt, *value = NULL, c;
+ char *o, *t, *txt, *value = NULL, c;
if (!txt_)
return 0;
- t = txt = strdup(txt_);
+ o = t = txt = strdup(txt_);
if (t == NULL) {
printf("Out of memory\n");
exit(1);
}
if (t!=txt)
(*fn)(txt, value);
+ free(o);
return 0;
}