mirror of
https://github.com/cesanta/mongoose.git
synced 2026-10-23 11:44:53 +00:00
directory ops moved to directory.c
This commit is contained in:
1 parent
45347bd44c
commit
37751a2875
7 files changed
+520
-673
No files matched your search
@@ -266,3 +266,22 @@ static void remove_double_dots_and_double_slashes(char *s) {
|
||||
*p = '\0';
|
||||
}
|
||||
|
||||
void mg_url_encode(const char *src, char *dst, size_t dst_len) {
|
||||
static const char *dont_escape = "._-$,;~()";
|
||||
static const char *hex = "0123456789abcdef";
|
||||
const char *end = dst + dst_len - 1;
|
||||
|
||||
for (; *src != '\0' && dst < end; src++, dst++) {
|
||||
if (isalnum(*(const unsigned char *) src) ||
|
||||
strchr(dont_escape, * (const unsigned char *) src) != NULL) {
|
||||
*dst = *src;
|
||||
} else if (dst + 2 < end) {
|
||||
dst[0] = '%';
|
||||
dst[1] = hex[(* (const unsigned char *) src) >> 4];
|
||||
dst[2] = hex[(* (const unsigned char *) src) & 0xf];
|
||||
dst += 2;
|
||||
}
|
||||
}
|
||||
|
||||
*dst = '\0';
|
||||
}
|
||||
Reference in new issue
Block a user