summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorespie <espie@openbsd.org>2017-01-25 14:12:33 +0000
committerespie <espie@openbsd.org>2017-01-25 14:12:33 +0000
commitab0cb69261386059810e2e3ddef7baabb52cdef6 (patch)
treef0ea21c1509fbef38b9ad11527dc804a523cd744
parentIn some cases, pkg_info -e spec would display the spec instead of the (diff)
downloadwireguard-openbsd-ab0cb69261386059810e2e3ddef7baabb52cdef6.tar.xz
wireguard-openbsd-ab0cb69261386059810e2e3ddef7baabb52cdef6.zip
if the fs got badly damaged, display a decent error message instead of
erroring out when we can't read a plist.
-rw-r--r--usr.sbin/pkg_add/OpenBSD/PkgDelete.pm9
1 files changed, 8 insertions, 1 deletions
diff --git a/usr.sbin/pkg_add/OpenBSD/PkgDelete.pm b/usr.sbin/pkg_add/OpenBSD/PkgDelete.pm
index 0ff537eaae9..34ca6b5f9ff 100644
--- a/usr.sbin/pkg_add/OpenBSD/PkgDelete.pm
+++ b/usr.sbin/pkg_add/OpenBSD/PkgDelete.pm
@@ -1,6 +1,6 @@
#!/usr/bin/perl
# ex:ts=8 sw=4:
-# $OpenBSD: PkgDelete.pm,v 1.35 2015/10/07 17:52:38 jmc Exp $
+# $OpenBSD: PkgDelete.pm,v 1.36 2017/01/25 14:12:33 espie Exp $
#
# Copyright (c) 2003-2010 Marc Espie <espie@openbsd.org>
#
@@ -356,6 +356,13 @@ sub process_set
if ($state->{do_automatic}) {
for my $pkg ($set->older) {
$pkg->complete_old;
+ if (!defined $pkg->plist) {
+ $state->say("Corrupt set #1, run pkg_check",
+ $set->print);
+ $set->cleanup(OpenBSD::Handle::CANT_DELETE);
+ $state->tracker->cant($set);
+ return ();
+ }
if ($pkg->plist->has('manual-installation')) {
$state->say("Won't delete manually installed #1",
$set->print) if $state->verbose;