--- toast 2003/08/25 17:23:59 1.181 +++ toast 2003/08/25 23:51:27 1.182 @@ -1448,6 +1448,7 @@ error("too many links: $url") unless $ttl; my($basename) = basename(stripquery($url)); + $basename = "index" if $basename eq ""; my($file) = path($dir, $basename); geturl($url, $file); @@ -1460,15 +1461,26 @@ if($header =~ /^\<.*\bHTML\b/i) { seek(FILE, 0, 0) || error("rewind $file: $!"); - my($link); - for $link (linksfromstream(*FILE, $url)) + my(@links) = reverse(sort cmpab linksfromstream(*FILE, $url)); + for (@links) { - $redir = $link if !$redir && basename(stripquery($link)) eq $basename; + $redir = $_ if !$redir && basename(stripquery($_)) eq $basename; } + my($ext); + for $ext (qw[.tar.bz2 .tar.gz .tgz .zip .rpm]) + { + for (@links) + { + $redir = $_ if !$redir && stripquery($_) =~ /\Q$ext\E$/i; + } + } } close(FILE) || error("close $file: $!"); - return $redir ? &smartgeturl($redir, $dir, $ttl - 1) : true; + return true unless $redir; + + rm($file); + return &smartgeturl($redir, $dir, $ttl - 1); } sub autorename($$) @@ -2386,7 +2398,6 @@ sub build(@) { my($name, $version, $build, @urls) = @_; - $name || error; $build && error; ($name, $version) = get(@_) if !isstored($name, $version);