val = NCC_AND; break;
case '#':
val = NCC_HASH; break;
+#ifndef CONFIG_URL_ESCAPE_COMPAT
case '$':
val = NCC_DOLLAR; break;
case '+':
val = NCC_PLUS; break;
case ',':
val = NCC_COMMA; break;
+#endif
}
*d++ = val;
s += 3;
if (d >= end)
return URL_ERR_TOO_LONG;
if (Calnum(c) || /* RFC 2396 (2.1-2.3): Only alphanumerics ... */
- c == '-' || c == '_' || c == '.' || c == '+' || c == '~' || /* ... and several other exceptions ... */
- c == '!' || c == '*' || c == '\'' || c == '(' || c == ')' ||
- c == '/' || c == '?' || c == ':' || c == '@' || /* ... and reserved chars used for reserved purpose */
- c == '=' || c == '&' || c == '#' || c == ';' ||
- c == '$' || c == '+' || c == ',')
+ c == '!' || c == '*' || c == '\'' || c == '(' || c == ')' || /* ... and some exceptions and reserved chars */
+ c == '$' || c == '-' || c == '_' || c == '.' || c == '+' ||
+ c == ',' || c == '=' || c == '&' || c == '#' || c == ';' ||
+ c == '/' || c == '?' || c == ':' || c == '@'
+#ifndef CONFIG_URL_ESCAPE_COMPAT
+ || c == '~'
+#endif
+ )
*d++ = *s++;
else
{
NCC_EQUAL = 6,
NCC_AND = 7,
NCC_HASH = 8,
+#ifdef CONFIG_URL_ESCAPE_COMPAT
+ NCC_MAX = 9
+#else
// Avoid 9 (\t) and 10 (\n)
NCC_DOLLAR = 11,
NCC_PLUS = 12,
// Avoid 13 (\r)
NCC_COMMA = 14,
NCC_MAX = 15
+#endif
};
+#ifdef CONFIG_URL_ESCAPE_COMPAT
+#define NCC_CHARS " ;/?:@=&#"
+#else
#define NCC_CHARS " ;/?:@=&#\t\n$+\r,"
+#endif
/* Remove/Introduce '%' escapes */