const char *mget_iri_escape_path(const char *src, mget_buffer_t *buf) { const char *begin; for (begin = src; *src; src++) { if (!mget_iri_isunreserved_path(*src)) { if (begin != src) mget_buffer_memcat(buf, begin, src - begin); begin = src + 1; mget_buffer_printf_append2(buf, "%%%02X", (unsigned char)*src); } } if (begin != src) mget_buffer_memcat(buf, begin, src - begin); return buf->data; }
const char *mget_iri_escape_query(const char *src, mget_buffer_t *buf) { const char *begin; for (begin = src; *src; src++) { if (!mget_iri_isunreserved_path(*src) && *src != '=') { if (begin != src) mget_buffer_memcat(buf, begin, src - begin); begin = src + 1; if (*src == ' ') mget_buffer_memcat(buf, "+", 1); else mget_buffer_printf_append2(buf, "%%%02x", (unsigned char)*src); } } if (begin != src) mget_buffer_memcat(buf, begin, src - begin); return buf->data; }