diff options
author | Marc Espie <espie@cvs.openbsd.org> | 2007-05-26 23:45:45 +0000 |
---|---|---|
committer | Marc Espie <espie@cvs.openbsd.org> | 2007-05-26 23:45:45 +0000 |
commit | ef0b9acb6ff85b97cc28b523035522ff9fa4b56c (patch) | |
tree | 8b8897c271e30fa0cf7bf3c4fca1f9cc64472ce9 /usr.sbin/pkg_add | |
parent | b45172b7903c2207bad81aa1e94ffac5396b706d (diff) |
simplify error logic a bit more, always let prepare_to_add return a
handle.
Also kill very old @exec tests.
Diffstat (limited to 'usr.sbin/pkg_add')
-rw-r--r-- | usr.sbin/pkg_add/OpenBSD/Replace.pm | 10 | ||||
-rw-r--r-- | usr.sbin/pkg_add/pkg_add | 48 |
2 files changed, 20 insertions, 38 deletions
diff --git a/usr.sbin/pkg_add/OpenBSD/Replace.pm b/usr.sbin/pkg_add/OpenBSD/Replace.pm index 65e8063e5dc..22958136d4c 100644 --- a/usr.sbin/pkg_add/OpenBSD/Replace.pm +++ b/usr.sbin/pkg_add/OpenBSD/Replace.pm @@ -1,5 +1,5 @@ # ex:ts=8 sw=4: -# $OpenBSD: Replace.pm,v 1.17 2007/05/22 11:02:57 espie Exp $ +# $OpenBSD: Replace.pm,v 1.18 2007/05/26 23:45:44 espie Exp $ # # Copyright (c) 2004-2006 Marc Espie <espie@openbsd.org> # @@ -142,13 +142,7 @@ sub update_issue($$) return if $_[1]; my $self = $_[0]; - # those are deemed innocuous - if ($self->{expanded} =~ m|^/sbin/ldconfig\s+\-R\b| or - $self->{expanded} =~ m|^install-info\s+\-\-delete\b|) { - return; - } else { - return '@unexec '.$self->{expanded}; - } + return '@unexec '.$self->{expanded}; } package OpenBSD::PackingElement::Dependency; diff --git a/usr.sbin/pkg_add/pkg_add b/usr.sbin/pkg_add/pkg_add index 266e2b2e885..013d64e7d61 100644 --- a/usr.sbin/pkg_add/pkg_add +++ b/usr.sbin/pkg_add/pkg_add @@ -1,7 +1,7 @@ #! /usr/bin/perl # ex:ts=8 sw=4: -# $OpenBSD: pkg_add,v 1.268 2007/05/26 12:25:29 espie Exp $ +# $OpenBSD: pkg_add,v 1.269 2007/05/26 23:45:44 espie Exp $ # # Copyright (c) 2003-2007 Marc Espie <espie@openbsd.org> # @@ -194,29 +194,27 @@ sub can_install # package information sub prepare_to_add { - my ($pkg, $state, $handle) = @_; + my ($pkg, $state) = @_; + my $handle = OpenBSD::Handle->new; my $location = OpenBSD::PackageLocator->find($pkg, $state->{arch}); if (!$location) { print $state->deptree_header($pkg); print "Can't find $pkg\n"; $handle->set_error(OpenBSD::Handle::NOT_FOUND); - return; - } - if ($location->{finished}) { - $handle->set_error(OpenBSD::Handle::CANT_INSTALL); - return; + return $handle; } + $handle->{location} = $location; my $plist = $location->{plist} = $location->plist; unless (defined $plist) { print "Can't find CONTENTS from $pkg\n"; $handle->set_error(OpenBSD::Handle::BAD_PACKAGE); - return; + return $handle; } if ($plist->localbase ne $state->{localbase}) { print "Localbase mismatch: package has: ", $plist->localbase, " , user wants: ", $state->{localbase}, "\n"; $handle->set_error(OpenBSD::Handle::BAD_PACKAGE); - return; + return $handle; } my $pkgname = $location->{pkgname} = $plist->pkgname; if ($pkg ne '-') { @@ -224,23 +222,20 @@ sub prepare_to_add OpenBSD::PackageName::url2pkgname($pkg) ne $pkgname) { print "Package name is not consistent ???\n"; $handle->set_error(OpenBSD::Handle::BAD_PACKAGE); - return; + return $handle; } } if ($state->{verbose}) { print $state->deptree_header($pkg); print "parsing $pkgname\n"; } - if (can_install($plist, $state, $handle)) { - return $location; - } else { + if (!can_install($plist, $state, $handle)) { $location->close_with_client_error; $location->wipe_info; delete $location->{plist}; - $location->{finished} = 1; $handle->set_error(OpenBSD::Handle::CANT_INSTALL); - return; } + return $handle; } @@ -506,29 +501,22 @@ sub install_package my ($pkg, $state, @todo) = @_; my $cache = $state->{cache}; - my $handle = OpenBSD::Handle->new; - if (!defined $cache->{$pkg}) { - $cache->{$pkg} = prepare_to_add($pkg, $state, $handle); + $cache->{$pkg} = prepare_to_add($pkg, $state); } - my $location = $cache->{$pkg}; - if ($state->{forced}->{kitchensink}) { - if ($handle->has_error(OpenBSD::Handle::BAD_PACKAGE)) { - $state->set_pkgname($pkg); - $state->fatal("Fatal error") unless defined $location; - } else { - return () unless defined $location; - } - } else { - if ($handle->has_error) { + my $handle = $cache->{$pkg}; + if ($handle->has_error) { + if (!$state->{forced}->{kitchensink} || + $handle->has_error(OpenBSD::Handle::BAD_PACKAGE)) { $state->set_pkgname($pkg); - $state->fatal("Fatal error") unless defined $location; + $state->fatal("Fatal error"); } else { - return () unless defined $location; + return (); } } + my $location = $handle->{location}; if ($state->is_installed($location->{pkgname})) { $location->close_now; return (); |