ustream_printf(cl->us, "%X\r\n", len);
ustream_write(cl->us, data, len, true);
if (chunked)
- ustream_printf(cl->us, "\r\n", len);
+ ustream_printf(cl->us, "\r\n");
}
void uh_chunk_vprintf(struct client *cl, const char *format, va_list arg)
ustream_write(cl->us, buf, len, true);
else
ustream_vprintf(cl->us, format, arg);
- ustream_printf(cl->us, "\r\n", len);
+ ustream_printf(cl->us, "\r\n");
}
void uh_chunk_printf(struct client *cl, const char *format, ...)
if (strncmp(url, prefix, len) != 0)
return false;
- return url[len] == '/' || url[len] == 0;
+ return url[len] == '/' || url[len] == '?' || url[len] == 0;
}
char *uh_split_header(char *str)
char *uh_htmlescape(const char *str)
{
- size_t len;
+ size_t i, len;
char *p, *copy;
- for (p = str, len = 1; *p; p++)
- if (is_html_special_char(*p))
+ for (i = 0, len = 1; str[i]; i++)
+ if (is_html_special_char(str[i]))
len += 6; /* &#x??; */
else
len++;
if (!copy)
return NULL;
- for (p = copy; *str; str++)
- if (is_html_special_char(*str))
- p += sprintf(p, "&#x%02x;", (unsigned int)*str);
+ for (i = 0, p = copy; str[i]; i++)
+ if (is_html_special_char(str[i]))
+ p += sprintf(p, "&#x%02x;", (unsigned int)str[i]);
else
- *p++ = *str;
+ *p++ = str[i];
return copy;
}