W3C home > Mailing lists > Public > www-validator-cvs@w3.org > July 2004

perl/modules/W3C/LinkChecker/bin checklink,4.1,4.2

From: Ville Skytta <ville@dev.w3.org>
Date: Sun, 11 Jul 2004 19:14:48 +0000
To: www-validator-cvs@w3.org
Message-ID: <E1Bjjmi-0005OL-3o@lionel-hutz.w3.org>

Update of /sources/public/perl/modules/W3C/LinkChecker/bin
In directory hutz:/tmp/cvs-serv20114/bin

Modified Files:
	checklink 
Log Message:
Fix bug in recursion logic: when parsing a document in recursive mode, we
are interested in links in it if it's in recursion scope, even if the document
retrieval is "only" caused by an anchor in a referring document.
http://lists.w3.org/Archives/Public/www-validator/2004Jun/0181.html


Index: checklink
===================================================================
RCS file: /sources/public/perl/modules/W3C/LinkChecker/bin/checklink,v
retrieving revision 4.1
retrieving revision 4.2
diff -u -d -r4.1 -r4.2
--- checklink	11 Jul 2004 16:45:13 -0000	4.1
+++ checklink	11 Jul 2004 19:14:46 -0000	4.2
@@ -739,7 +739,9 @@
     &hprintf("Checking link %s\n", $u) unless $Opts{Summary_Only};
 
     # Check that a link is valid
-    &check_validity($uri, $u, \%links, \%redirects);
+    &check_validity($uri, $u,
+                    ($depth != 0 && &in_recursion_scope($u)),
+                    \%links, \%redirects);
     &hprintf("\tReturn code: %s\n", $results{$u}{location}{code})
       if ($Opts{Verbose});
     if ($results{$u}{location}{success}) {
@@ -834,7 +836,7 @@
   my ($method, $uri, $in_recursion, $redirects) = @_;
   # $method contains the HTTP method the use (GET or HEAD)
   # $uri contains the identifier of the resource
-  # $in_recursion equals 1 if we are in recursion mode (i.e. it is at least
+  # $in_recursion is > 0 if we are in recursion mode (i.e. it is at least
   #                        the second resource checked)
   # $redirects is a pointer to the hash containing the map of the redirects
 
@@ -1089,7 +1091,7 @@
 # Parse a document #
 ####################
 
-sub parse_document ($$$$;$)
+sub parse_document ($$$$$)
 {
   my ($uri, $location, $document, $links, $rec_needs_links) = @_;
 
@@ -1301,11 +1303,12 @@
 # Check the validity of a link #
 ################################
 
-sub check_validity ($$\%\%)
+sub check_validity ($$$\%\%)
 {
-  my ($testing, $uri, $links, $redirects) = @_;
+  my ($testing, $uri, $in_recursion, $links, $redirects) = @_;
   # $testing is the URI of the document checked
   # $uri is the URI of the target that we are verifying
+  # $in_recursion is > 0 if we're in recursive mode
   # $links is a hash of the links in the documents checked
   # $redirects is a map of the redirects encountered
 
@@ -1357,7 +1360,7 @@
     }
     # Do it then
     $p = &parse_document($uri, $response->base(),
-                         $response->as_string(), 0);
+                         $response->as_string(), 0, $in_recursion);
   } else {
     # We already had the information
     $p->{Anchors} = $results{$uri}{parsing}{Anchors};
Received on Sunday, 11 July 2004 15:14:48 UTC

This archive was generated by hypermail 2.4.0 : Friday, 17 January 2020 23:02:06 UTC