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);