$problems .= $_;
next;
}
- /^([a-f0-9]{32})\s+((ftp|http|no-url|no-url-copy):\/\/([a-z0-9A-Z:\+\~\.\-\/_]|\%[0-9])+)\s*$/
+ /^([a-f0-9]{32})\s+((ftp|http|no-url|no-url-copy):\/\/([=\?a-z0-9A-Z:\+\~\.\-\/_]|\%[0-9])+)\s*$/
or die "$file: corrupted";
push @md5, $1;
$url{$1} = $2;
{
my ($md5, $url) = @_;
my $out = "";
+ my $all_out = "";
my $bn = basename($url);
my $local = "$tmp_dir/$md5/$bn";
my $cmd = "wget -nv -O $local \"$url\"";
+ my $cmd2 = "wget -nv --passive-ftp -O $local \"$url\"";
push @files, $bn;
open(W, "$cmd 2>&1 |");
while (<W>) {
+ $all_out .= $_;
/URL:.*\s+\-\>\s+.*/ and next;
$out .= $_;
}
if ($out ne "") {
$problems .= "$cmd:\n$out\n\n";
}
+ if (-f $local && -s $local > 0 && $url =~ /^ftp:/) {
+ open(W, "$cmd2 2>&1 |");
+ while (<W>) {
+ $all_out .= $_;
+ /URL:.*\s+\-\>\s+.*/ and next;
+ $out .= $_;
+ }
+ close(W);
+ if ($out ne "") {
+ $problems .= "$cmd:\n$out\n\n";
+ }
+ }
if (-f $local && -s $local > 0) {
my $computed_md5 = md5($local);
if ($computed_md5 ne $md5) {
$problems .= "FATAL: $url md5 mismatch, needed $md5, got $computed_md5\n";
} else {
- move_file($md5, $url, $local);
+ my $testcmd = "file \"$local\" |";
+ my $testres = "";
+ if ($url =~ /^http:/ && $local =~ /\.(tar\.(bz2|gz)|tgz|zip|jar|xpi)$/) {
+ open(T, $testcmd) or die;
+ $testres = <T>;
+ close(T);
+ }
+ if ($testres =~ /empty|(ASCII|HTML|SGML).*text/) {
+ $testres =~ s/.*://;
+ $problems .= "FATAL: data returned from $url: $testres";
+ } else {
+ move_file($md5, $url, $local);
+ }
}
} else {
- $problems .= "FATAL: $url ($md5) was not fetched\n";
+ $problems .= "FATAL: $url ($md5) was not fetched ($cmd: $all_out)\n";
}
# save space
unlink($local);
if ($tmp_dir ne "" && -d $tmp_dir);
}
+umask(002);
+
find_file_in_spool();
read_spool_file();
make_tmp_dir();