--- toast 2005/09/19 04:47:38 1.409 +++ toast 2005/09/20 00:25:13 1.410 @@ -4439,11 +4439,12 @@ ############################################################################## -sub findnewerpkg($$@) +sub findnewerpkg($$$@) { my($name, $version, $build, @urls) = @_; error unless defined($name); error unless defined($version); + error if defined($build); @urls = pkgurls($name, $version) unless @urls; error unless @urls; @@ -4518,8 +4519,8 @@ error unless defined($name); error if defined($build); - my(@pkgs) = @urls || isadded($name, $version) - ? findnewerpkg($name, $version, @urls) + my(@pkgs) = defined($version) && (@urls || isadded($name, $version)) + ? findnewerpkg($name, $version, $build, @urls) : findnewpkg($name, $version); error unless @pkgs; @@ -4545,7 +4546,7 @@ my($name, $version, $build, @urls) = @_; error if defined($build); - my(@pkgs) = reverse(findnewerpkg($name, $version, @urls)); + my(@pkgs) = reverse(findnewerpkg($name, $version, $build, @urls)); my(@cmdargs) = @{$pkgs[0]}; my($newver) = $cmdargs[1]; @@ -5387,6 +5388,16 @@ @_; } +sub requirename(@) +{ + for(@_) + { + my($name, $version, $build, @urls) = @$_; + defined($name) || error("unable to guess package name from urls: @urls"); + } + @_; +} + sub requireurls(@) { for(@_) @@ -5417,7 +5428,7 @@ ############################################################################## -sub parse_find(@) { uselatestversion(emptytoall(rejectbuilds(parse(@_)))); } +sub parse_find(@) { requirename(uselatestversion(emptytoall(rejectbuilds(parse(@_))))); } sub parse_add(@) { rejectempty(parse(@_)); } sub parse_get(@) { uselatestversion(emptytoall(rejectbuilds(parse(@_)))); } sub parse_build(@) { uselatestversion(emptytoall(rejectbuilds(parse(@_)))); }