X-Git-Url: http://sjero.net/git/?a=blobdiff_plain;f=src%2Furl.c;h=72bb7b90d735c6eca5a73a450dda6b0d4e60a1cf;hb=aa4991b8f74668f04b0ea5e2a73607df3150b257;hp=683a7745f1b7eeb9ea7d3c9eddf8ac90b8c06976;hpb=02a54e9919538821a8cd5f8bfb09303e039ac62b;p=wget diff --git a/src/url.c b/src/url.c index 683a7745..72bb7b90 100644 --- a/src/url.c +++ b/src/url.c @@ -1,5 +1,6 @@ /* URL handling. - Copyright (C) 1996-2007 Free Software Foundation, Inc. + Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, + 2004, 2005, 2006, 2007 Free Software Foundation, Inc. This file is part of GNU Wget. @@ -1939,10 +1940,7 @@ getchar_from_escaped_string (const char *str, char *c) if (p[0] == '%') { - if (p[1] == 0) - return 0; /* error: invalid string */ - - if (p[1] == '%') + if (!ISXDIGIT(p[1]) || !ISXDIGIT(p[2])) { *c = '%'; return 1; @@ -1953,8 +1951,13 @@ getchar_from_escaped_string (const char *str, char *c) return 0; /* error: invalid string */ *c = X2DIGITS_TO_NUM (p[1], p[2]); - - return 3; + if (URL_RESERVED_CHAR(*c)) + { + *c = '%'; + return 1; + } + else + return 3; } } else