From: Michal Vaner Date: Fri, 7 Nov 2008 13:33:59 +0000 (+0100) Subject: Add flag to use old URL encoding X-Git-Tag: holmes-import~182 X-Git-Url: http://mj.ucw.cz/gitweb/?a=commitdiff_plain;h=d70378ca501c626a6e370ce067056bb25b5399cc;p=libucw.git Add flag to use old URL encoding The new encoding is not compatible with already running sherlock installation. Adds a CONFIG_URL_ESCAPE_COMPAT compile switch to keep the old behaviour. --- diff --git a/ucw/url.c b/ucw/url.c index 50ed2f7e..4b0ddeaa 100644 --- a/ucw/url.c +++ b/ucw/url.c @@ -92,12 +92,14 @@ url_deescape(const char *s, char *d) 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; @@ -137,11 +139,14 @@ url_enescape(const char *s, char *d) 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 { diff --git a/ucw/url.h b/ucw/url.h index d2689be5..c389fb16 100644 --- a/ucw/url.h +++ b/ucw/url.h @@ -24,15 +24,23 @@ enum { 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 */