diff options
-rw-r--r-- | usr.sbin/pkg_add/OpenBSD/Vstat.pm | 6 | ||||
-rw-r--r-- | usr.sbin/pkg_add/pkg_add | 19 |
2 files changed, 17 insertions, 8 deletions
diff --git a/usr.sbin/pkg_add/OpenBSD/Vstat.pm b/usr.sbin/pkg_add/OpenBSD/Vstat.pm index e50380a7364..3e1baf7e8fc 100644 --- a/usr.sbin/pkg_add/OpenBSD/Vstat.pm +++ b/usr.sbin/pkg_add/OpenBSD/Vstat.pm @@ -1,5 +1,5 @@ # ex:ts=8 sw=4: -# $OpenBSD: Vstat.pm,v 1.21 2007/05/25 13:18:57 espie Exp $ +# $OpenBSD: Vstat.pm,v 1.22 2007/05/26 12:22:38 espie Exp $ # # Copyright (c) 2003-2007 Marc Espie <espie@openbsd.org> # @@ -256,12 +256,12 @@ sub has_error { my ($self, $error) = @_; if (!defined $self->{error}) { - return 0; + return undef; } if (defined $error) { return $self->{error} eq $error; } - return 1; + return $self->{error}; } package OpenBSD::UpdateSet; diff --git a/usr.sbin/pkg_add/pkg_add b/usr.sbin/pkg_add/pkg_add index 40b1e49969a..5a7b92ab19a 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.266 2007/05/26 12:15:45 espie Exp $ +# $OpenBSD: pkg_add,v 1.267 2007/05/26 12:22:38 espie Exp $ # # Copyright (c) 2003-2007 Marc Espie <espie@openbsd.org> # @@ -528,11 +528,20 @@ sub install_package } my $location = $cache->{$pkg}; - if ($errors > 0) { - $state->set_pkgname($pkg); - $state->fatal("Fatal error") unless defined $location; + 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 { - return () unless defined $location; + if ($handle->has_error) { + $state->set_pkgname($pkg); + $state->fatal("Fatal error") unless defined $location; + } else { + return () unless defined $location; + } } if ($state->is_installed($location->{pkgname})) { |