mirror of
https://github.com/moparisthebest/wget
synced 2024-07-03 16:38:41 -04:00
[svn] Allow match_tail to be case insensitive.
Published in <sxsznzabirr.fsf@florida.munich.redhat.com>.
This commit is contained in:
parent
291693c3c2
commit
fd42ae1311
@ -1,3 +1,14 @@
|
|||||||
|
2002-05-08 Hrvoje Niksic <hniksic@arsdigita.com>
|
||||||
|
|
||||||
|
* cookies.c (check_domain_match): Use match_tail in case
|
||||||
|
insensitive mode.
|
||||||
|
|
||||||
|
* utils.c (match_tail): Allow the caller to specify case
|
||||||
|
insensitive mode.
|
||||||
|
|
||||||
|
* cookies.c (store_cookie): When expiry_time is 0, print it as
|
||||||
|
undefined, not indefinite.
|
||||||
|
|
||||||
2002-05-07 Ian Abbott <abbotti@mev.co.uk>
|
2002-05-07 Ian Abbott <abbotti@mev.co.uk>
|
||||||
|
|
||||||
* cookies.c (cookie_jar_process_set_cookie): Do not store
|
* cookies.c (cookie_jar_process_set_cookie): Do not store
|
||||||
|
@ -230,7 +230,7 @@ store_cookie (struct cookie_jar *jar, struct cookie *cookie)
|
|||||||
cookie->permanent ? "permanent" : "nonpermanent",
|
cookie->permanent ? "permanent" : "nonpermanent",
|
||||||
cookie->secure,
|
cookie->secure,
|
||||||
cookie->expiry_time
|
cookie->expiry_time
|
||||||
? asctime (localtime (&cookie->expiry_time)) : "<indefinitely>",
|
? asctime (localtime (&cookie->expiry_time)) : "<undefined>",
|
||||||
cookie->attr, cookie->value));
|
cookie->attr, cookie->value));
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -676,7 +676,7 @@ check_domain_match (const char *cookie_domain, const char *host)
|
|||||||
DEBUGP ((" 3"));
|
DEBUGP ((" 3"));
|
||||||
|
|
||||||
/* HOST must match the tail of cookie_domain. */
|
/* HOST must match the tail of cookie_domain. */
|
||||||
if (!match_tail (host, cookie_domain))
|
if (!match_tail (host, cookie_domain, 1))
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
/* We know that COOKIE_DOMAIN is a subset of HOST; however, we must
|
/* We know that COOKIE_DOMAIN is a subset of HOST; however, we must
|
||||||
@ -754,7 +754,7 @@ check_domain_match (const char *cookie_domain, const char *host)
|
|||||||
".com", ".edu", ".net", ".org", ".gov", ".mil", ".int"
|
".com", ".edu", ".net", ".org", ".gov", ".mil", ".int"
|
||||||
};
|
};
|
||||||
for (i = 0; i < ARRAY_SIZE (known_toplevel_domains); i++)
|
for (i = 0; i < ARRAY_SIZE (known_toplevel_domains); i++)
|
||||||
if (match_tail (cookie_domain, known_toplevel_domains[i]))
|
if (match_tail (cookie_domain, known_toplevel_domains[i], 1))
|
||||||
{
|
{
|
||||||
known_toplevel = 1;
|
known_toplevel = 1;
|
||||||
break;
|
break;
|
||||||
|
12
src/ftp.c
12
src/ftp.c
@ -698,6 +698,18 @@ Error in server response, closing control connection.\n"));
|
|||||||
|
|
||||||
if (cmd & DO_RETR)
|
if (cmd & DO_RETR)
|
||||||
{
|
{
|
||||||
|
/* If we're in spider mode, don't really retrieve anything. The
|
||||||
|
fact that we got to this point should be proof enough that
|
||||||
|
the file exists, vaguely akin to HTTP's concept of a "HEAD"
|
||||||
|
request. */
|
||||||
|
if (opt.spider)
|
||||||
|
{
|
||||||
|
CLOSE (csock);
|
||||||
|
closeport (dtsock);
|
||||||
|
rbuf_uninitialize (&con->rbuf);
|
||||||
|
return RETRFINISHED;
|
||||||
|
}
|
||||||
|
|
||||||
if (opt.verbose)
|
if (opt.verbose)
|
||||||
{
|
{
|
||||||
if (!opt.server_response)
|
if (!opt.server_response)
|
||||||
|
35
src/utils.c
35
src/utils.c
@ -755,20 +755,37 @@ accdir (const char *directory, enum accd flags)
|
|||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Match the end of STRING against PATTERN. For instance:
|
/* Return non-zero if STRING ends with TAIL. For instance:
|
||||||
|
|
||||||
|
match_tail ("abc", "bc", 0) -> 1
|
||||||
|
match_tail ("abc", "ab", 0) -> 0
|
||||||
|
match_tail ("abc", "abc", 0) -> 1
|
||||||
|
|
||||||
|
If FOLD_CASE_P is non-zero, the comparison will be
|
||||||
|
case-insensitive. */
|
||||||
|
|
||||||
match_backwards ("abc", "bc") -> 1
|
|
||||||
match_backwards ("abc", "ab") -> 0
|
|
||||||
match_backwards ("abc", "abc") -> 1 */
|
|
||||||
int
|
int
|
||||||
match_tail (const char *string, const char *pattern)
|
match_tail (const char *string, const char *tail, int fold_case_p)
|
||||||
{
|
{
|
||||||
int i, j;
|
int i, j;
|
||||||
|
|
||||||
for (i = strlen (string), j = strlen (pattern); i >= 0 && j >= 0; i--, j--)
|
/* We want this to be fast, so we code two loops, one with
|
||||||
if (string[i] != pattern[j])
|
case-folding, one without. */
|
||||||
|
|
||||||
|
if (!fold_case_p)
|
||||||
|
{
|
||||||
|
for (i = strlen (string), j = strlen (tail); i >= 0 && j >= 0; i--, j--)
|
||||||
|
if (string[i] != tail[j])
|
||||||
break;
|
break;
|
||||||
/* If the pattern was exhausted, the match was succesful. */
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
for (i = strlen (string), j = strlen (tail); i >= 0 && j >= 0; i--, j--)
|
||||||
|
if (TOLOWER (string[i]) != TOLOWER (tail[j]))
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* If the tail was exhausted, the match was succesful. */
|
||||||
if (j == -1)
|
if (j == -1)
|
||||||
return 1;
|
return 1;
|
||||||
else
|
else
|
||||||
@ -797,7 +814,7 @@ in_acclist (const char *const *accepts, const char *s, int backward)
|
|||||||
{
|
{
|
||||||
if (backward)
|
if (backward)
|
||||||
{
|
{
|
||||||
if (match_tail (s, *accepts))
|
if (match_tail (s, *accepts, 0))
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
@ -69,7 +69,7 @@ char *file_merge PARAMS ((const char *, const char *));
|
|||||||
int acceptable PARAMS ((const char *));
|
int acceptable PARAMS ((const char *));
|
||||||
int accdir PARAMS ((const char *s, enum accd));
|
int accdir PARAMS ((const char *s, enum accd));
|
||||||
char *suffix PARAMS ((const char *s));
|
char *suffix PARAMS ((const char *s));
|
||||||
int match_tail PARAMS ((const char *, const char *));
|
int match_tail PARAMS ((const char *, const char *, int));
|
||||||
|
|
||||||
int has_html_suffix_p PARAMS ((const char *));
|
int has_html_suffix_p PARAMS ((const char *));
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user