- From: Mercurial notifier <nobody@w3.org>
- Date: Thu, 05 Aug 2010 14:47:16 +0000
- To: link-checker updates <www-validator-cvs@w3.org>
changeset: 251:90a90ece0345 user: ville date: Sat Oct 25 19:37:21 2008 +0000 files: bin/checklink description: Check links in meta refresh tags. diff -r 77af7333b953 -r 90a90ece0345 bin/checklink --- a/bin/checklink Sat Oct 25 19:33:32 2008 +0000 +++ b/bin/checklink Sat Oct 25 19:37:21 2008 +0000 @@ -5,7 +5,7 @@ # (c) 1999-2008 World Wide Web Consortium # based on Renaud Bruyeron's checklink.pl # -# $Id: checklink,v 4.121 2008-10-25 19:33:32 ville Exp $ +# $Id: checklink,v 4.122 2008-10-25 19:37:21 ville Exp $ # # This program is licensed under the W3C(r) Software License: # http://www.w3.org/Consortium/Legal/copyright-software @@ -215,7 +215,8 @@ (exists($ENV{MOD_PERL_API_VERSION}) && $ENV{MOD_PERL_API_VERSION} >= 2); # Tag=>attribute mapping of things we treat as links. -# Note: base/@href gets a special treatment, see start() for details. +# Note: base/@href and meta/@http-equiv get special treatment, see start() +# for details. use constant LINK_ATTRS => { a => ['href'], area => ['href'], @@ -259,7 +260,7 @@ $PROGRAM = 'W3C-checklink'; $VERSION = '4.3'; $REVISION = sprintf('version %s (c) 1999-2008 W3C', $VERSION); - my ($cvsver) = q$Revision: 4.121 $ =~ /(\d+[\d\.]*\.\d+)/; + my ($cvsver) = q$Revision: 4.122 $ =~ /(\d+[\d\.]*\.\d+)/; $AGENT = sprintf('%s/%s [%s] %s', $PROGRAM, $VERSION, $cvsver, (W3C::UserAgent::USE_ROBOT_UA @@ -1584,6 +1585,8 @@ # Links if (!$self->{only_anchors}) { + my $tag_local_base = undef; + # Special case: base/@href # TODO: This should go away as soon as LWP::Protocol::collect() invokes # HTML::HeadParser (thus taking care of it in $response->base() @@ -1598,9 +1601,17 @@ # Note: base/@href intentionally not treated as a dereferenceable link: # http://www.w3.org/mid/200802091439.27764.ville.skytta%40iki.fi } - - my $tag_local_base = undef; - if ($tag eq 'applet' || $tag eq 'object') { + # Special case: meta[@http-equiv=Refresh]/@content + elsif ($tag eq 'meta') { + if ($attr->{'http-equiv'} && lc($attr->{'http-equiv'}) eq 'refresh') { + my $content = $attr->{content}; + if ($content && $content =~ /.*?;\s*(?:url=)?(.+)/i) { + $self->add_link($1, undef, $line); + } + } + } + # Special case: tags that have "local base" + elsif ($tag eq 'applet' || $tag eq 'object') { if (my $codebase = $attr->{codebase}) { # TODO: HTML 4 spec says applet/@codebase may only point to subdirs of # the directory containing the current document. Should we do
Received on Thursday, 5 August 2010 14:47:28 UTC