From 7b4064bbcbaded5f627787c07d30e19288fd86c6 Mon Sep 17 00:00:00 2001 From: Kornel Benko Date: Tue, 5 Jan 2016 17:27:49 +0100 Subject: [PATCH] Cmake url tests: Add special handling for some ftp-urls --- development/checkurls/CheckURL.pm | 57 +++++++++++++++++++++-- development/checkurls/knownToRegisterURLS | 3 +- development/checkurls/search_url.pl | 20 ++++++-- 3 files changed, 72 insertions(+), 8 deletions(-) diff --git a/development/checkurls/CheckURL.pm b/development/checkurls/CheckURL.pm index d0a8fad65c..4ab70abfcb 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 = ) { + 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 fe1d362391..335deae1d8 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 c656dfe92e..8bba11c1fc 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); -- 2.39.5