CPAN
view release on metacpan or search on metacpan
lib/CPAN/FTP.pm view on Meta::CPAN
}
$some_dl_success++;
} else {
$CPAN::Frontend->myprint(qq{
No success, the file that lynx has downloaded is an empty file.
});
next DLPRG;
}
}
if ($wstatus == 0) {
if (-s $aslocal) {
# Looks good
$some_dl_success++;
}
$ThesiteURL = $ro_url;
return $aslocal;
} else {
my $estatus = $wstatus >> 8;
my $size = -f $aslocal ?
", left\n$aslocal with size ".-s _ :
"\nWarning: expected file [$aslocal] doesn't exist";
$CPAN::Frontend->myprint(qq{
Function system("$system")
returned status $estatus (wstat $wstatus)$size
});
}
return if $CPAN::Signal;
} # download/transfer programs (DLPRG)
} # host
return unless $any_attempt;
if ($some_dl_success) {
$CPAN::Frontend->mywarn("Warning: doesn't seem we had substantial success downloading '$aslocal'. Don't know how to proceed.\n");
} else {
$CPAN::Frontend->mywarn("Warning: no success downloading '$aslocal'. Giving up on it.\n");
}
return;
}
#-> CPAN::FTP::_proxy_vars
sub _proxy_vars {
my($self,$url) = @_;
my $ret = +{};
my $http_proxy = $CPAN::Config->{'http_proxy'} || $ENV{'http_proxy'};
if ($http_proxy) {
my($host) = $url =~ m|://([^/:]+)|;
my $want_proxy = 1;
my $noproxy = $CPAN::Config->{'no_proxy'} || $ENV{'no_proxy'} || "";
my @noproxy = split /\s*,\s*/, $noproxy;
if ($host) {
DOMAIN: for my $domain (@noproxy) {
if ($host =~ /\Q$domain\E$/) { # cf. LWP::UserAgent
$want_proxy = 0;
last DOMAIN;
}
}
} else {
$CPAN::Frontend->mywarn(" Could not determine host from http_proxy '$http_proxy'\n");
}
if ($want_proxy) {
my($user, $pass) =
CPAN::HTTP::Credentials->get_proxy_credentials();
$ret = {
proxy_user => $user,
proxy_pass => $pass,
http_proxy => $http_proxy
};
}
}
return $ret;
}
# package CPAN::FTP;
sub hostdlhardest {
my($self,$host_seq,$file,$aslocal,$stats) = @_;
return unless @$host_seq;
my($ro_url);
my($aslocal_dir) = dirname($aslocal);
mkpath($aslocal_dir);
my $ftpbin = $CPAN::Config->{ftp};
unless ($ftpbin && length $ftpbin && MM->maybe_command($ftpbin)) {
$CPAN::Frontend->myprint("No external ftp command available\n\n");
return;
}
$CPAN::Frontend->mywarn(qq{
As a last resort we now switch to the external ftp command '$ftpbin'
to get '$aslocal'.
Doing so often leads to problems that are hard to diagnose.
If you're the victim of such problems, please consider unsetting the
ftp config variable with
o conf ftp ""
o conf commit
});
$CPAN::Frontend->mysleep(2);
HOSTHARDEST: for $ro_url (@$host_seq) {
$self->_set_attempt($stats,"dlhardest",$ro_url);
my $url = "$ro_url$file";
$self->debug("localizing ftpwise[$url]") if $CPAN::DEBUG;
unless ($url =~ m|^ftp://(.*?)/(.*)/(.*)|) {
next;
}
my($host,$dir,$getfile) = ($1,$2,$3);
my $timestamp = 0;
my($dev,$ino,$mode,$nlink,$uid,$gid,$rdev,$size,$atime,$mtime,
$ctime,$blksize,$blocks) = stat($aslocal);
$timestamp = $mtime ||= 0;
my($netrc) = CPAN::FTP::netrc->new;
my($netrcfile) = $netrc->netrc;
my($verbose) = $CPAN::DEBUG{'FTP'} & $CPAN::DEBUG ? " -v" : "";
my $targetfile = File::Basename::basename($aslocal);
my(@dialog);
push(
@dialog,
"lcd $aslocal_dir",
"cd /",
map("cd $_", split /\//, $dir), # RFC 1738
"bin",
( run in 0.970 second using v1.01-cache-2.11-cpan-524268b4103 )