--- toast 2005/11/27 05:47:57 1.431 +++ toast 2005/11/27 07:01:15 1.432 @@ -76,14 +76,22 @@ } } +sub msg($@) +{ + my($default) = shift; + my($msg) = join('', @_) || $default; + $msg =~ s/\n+$//; + return $msg . "\n[" . trace(2) . "]\n"; +} + sub error(@) { - die(join('', @_) || "assertion failed", "\n[" . trace . "]\n"); + die(msg("assertion failed", @_)); } sub warning(@) { - warn(join('', @_) || "warning", "\n[" . trace . "]\n"); + warn(msg("warning", @_)); } ############################################################################## @@ -1121,10 +1129,32 @@ { my($url, $dest) = @_; + my($newurl); + eval q{ + use LWP::UserAgent; + $newurl = false; + explain("fetching $url to $dest"); + my($ua) = LWP::UserAgent->new; + $ua->proxy(["http", "https"], httpproxy) if httpproxy; + $ua->proxy("ftp", ftpproxy) if ftpproxy; + my($r) = $ua->get($url, ":content_file" => $dest); + my($msg) = $r->message; + die("unable to fetch $url: $msg\n") if $r->is_error; + $newurl = $r->base; + } if $url !~ /^(file|ssh)/; + error($@) if $@ && defined($newurl); + return $newurl if $newurl; + + if(defined($newurl)) + { + error($@) unless $newurl; + return $newurl; + } + local(*SOURCE, *DEST); explain("creating $dest"); safeopen(*DEST, ">", $dest); - my($newurl) = openurl(*SOURCE, $url); + $newurl = openurl(*SOURCE, $url); my($buf, $result); my(@dstat) = stat(DEST);