commit 7b4064bbcbaded5f627787c07d30e19288fd86c6
Author: Kornel Benko <[email protected]>
Date:   Tue Jan 5 17:27:49 2016 +0100

    Cmake url tests: Add special handling for some ftp-urls

diff --git a/development/checkurls/CheckURL.pm 
b/development/checkurls/CheckURL.pm
index d0a8fad..4ab70ab 100755
--- a/development/checkurls/CheckURL.pm
+++ b/development/checkurls/CheckURL.pm
@@ -25,7 +25,7 @@ sub check_http_url($$$$);
 sub check_ftp_dir_entry($$);
 sub check_ftp_url($$$$);
 sub check_unknown_url($$$$);
-sub check_url($);
+sub check_url($$);
 ################
 
 sub check_http_url($$$$)
@@ -104,6 +104,50 @@ sub check_ftp_dir_entry($$)
   return(1,$isdir);
 }
 
+sub check_ftp2_url($$$$)
+{
+  my ($protocol, $host, $path, $file) = @_;
+
+  my $checkentry = 1;
+  print "\nhost $host\n";
+  print "path $path\n";
+  print "file $file\n";
+  my $url = "$protocol://$host";
+  $path =~ s/\/$//;
+  if (defined($file)) {
+    $url = "$url/$path/$file";
+  }
+  else {
+    $url = "$url/$path/.";
+  }
+  print "curl $url, file = $file\n";
+  my %listfiles = ();
+  if (open(FFTP, "curl --anyauth -l $url|")) {
+    while (my $l = <FFTP>) {
+      chomp($l);
+      $listfiles{$l} = 1;
+    }
+    close(FFTP);
+  }
+  if (%listfiles) {
+    if (! defined($file)) {
+      return(0, "OK");
+    }
+    elsif (defined($listfiles{$file})) {
+      return(0, "OK");
+    }
+    elsif (defined($listfiles{"ftpinfo.txt"})) {
+      return(0, "Probably a directory");
+    }
+    else {
+      return(1, "Not found");
+    }
+  }
+  else {
+    return(1, "Error");
+  }
+}
+
 sub check_ftp_url($$$$)
 {
   use Net::FTP;
@@ -200,9 +244,9 @@ sub check_unknown_url($$$$)
 
 #
 # Main entry
-sub check_url($)
+sub check_url($$)
 {
-  my($url) = @_;
+  my($url,$use_curl) = @_;
   my $file = undef;
   my ($protocol,$host,$path);
 
@@ -232,7 +276,12 @@ sub check_url($)
   }
   elsif ($protocol eq "ftp") {
     my $message;
-    ($res, $message) = check_ftp_url($protocol, $host, $path, $file);
+    if ($use_curl) {
+      ($res, $message) = check_ftp2_url($protocol, $host, $path, $file);
+    }
+    else {
+      ($res, $message) = check_ftp_url($protocol, $host, $path, $file);
+    }
     return $res;
   }
   else {
diff --git a/development/checkurls/knownToRegisterURLS 
b/development/checkurls/knownToRegisterURLS
index fe1d362..335deae 100644
--- a/development/checkurls/knownToRegisterURLS
+++ b/development/checkurls/knownToRegisterURLS
@@ -14,4 +14,5 @@ http://www.photogrammetry.ethz.ch/tarasp_workshop/isprs.cls
 # The following ftp url is correct, but
 # ftp commands like 'dir', 'get' do not work.
 # We get a timeout. Reading with firefox is OK.
-ftp://ftp.edpsciences.org/pub/aa/readme.html
+# Read with curl works too, added a flag
+UseCurl ftp://ftp.edpsciences.org/pub/aa/readme.html
diff --git a/development/checkurls/search_url.pl 
b/development/checkurls/search_url.pl
index c656dfe..8bba11c 100755
--- a/development/checkurls/search_url.pl
+++ b/development/checkurls/search_url.pl
@@ -103,6 +103,8 @@ for my $arg (@ARGV) {
 }
 
 my @urls = sort keys %URLS, keys %extraURLS;
+# Tests
+#my @urls = ("ftp://ftp.edpsciences.org/pub/aa/readme.html";, 
"ftp://ftp.springer.de/pub/tex/latex/compsc/proc/author";);
 my $errorcount = 0;
 
 my $URLScount = 0;
@@ -112,7 +114,15 @@ for my $u (@urls) {
     $ignoredURLS{$u}->{count} += 1;
     next;
   }
-  next if (defined($knownToRegisterURLS{$u}));
+  my $use_curl = 0;
+  if (defined($knownToRegisterURLS{$u})) {
+    if ($knownToRegisterURLS{$u}->{use_curl}) {
+      $use_curl = 1;
+    }
+    else {
+      next;
+    }
+  }
   if (defined($selectedURLS{$u})) {
     ${selectedURLS}{$u}->{count} += 1;
   }
@@ -121,7 +131,7 @@ for my $u (@urls) {
   print "Checking '$u': ";
   my ($res, $prnt, $outSum);
   try {
-    $res = check_url($u);
+    $res = check_url($u, $use_curl);
     if ($res) {
       print "Failed\n";
       $prnt = "";
@@ -224,8 +234,12 @@ sub readUrls($\%)
     $l =~ s/\s*\#.*$//;                # remove comment
     $l = &replaceSpecialChar($l);
     next if ($l eq "");
+    my $use_curl = 0;
+    if ($l =~ s/^\s*UseCurl\s*//) {
+      $use_curl = 1;
+    }
     if (! defined($rUrls->{$l} )) {
-      $rUrls->{$l} = {$file => $line, count => 1};
+      $rUrls->{$l} = {$file => $line, count => 1, use_curl => $use_curl};
     }
   }
   close(ULIST);

Reply via email to