summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorespie <espie@openbsd.org>2018-04-26 12:18:44 +0000
committerespie <espie@openbsd.org>2018-04-26 12:18:44 +0000
commit62d737096750bfb36890a44a37f8ed97abe01326 (patch)
tree98db0b1c9f24f0a9889fc111bbcb31a873c00165
parentremove mail.file.{8,c}, unused (diff)
downloadwireguard-openbsd-62d737096750bfb36890a44a37f8ed97abe01326.tar.xz
wireguard-openbsd-62d737096750bfb36890a44a37f8ed97abe01326.zip
reorg error handling so it's always passed to class methods that can
be overridden. Useful for nextgen update-plist
-rw-r--r--usr.sbin/pkg_add/OpenBSD/PkgCreate.pm29
1 files changed, 22 insertions, 7 deletions
diff --git a/usr.sbin/pkg_add/OpenBSD/PkgCreate.pm b/usr.sbin/pkg_add/OpenBSD/PkgCreate.pm
index 05e5a00fad6..fbcdd90cadf 100644
--- a/usr.sbin/pkg_add/OpenBSD/PkgCreate.pm
+++ b/usr.sbin/pkg_add/OpenBSD/PkgCreate.pm
@@ -1,6 +1,6 @@
#! /usr/bin/perl
# ex:ts=8 sw=4:
-# $OpenBSD: PkgCreate.pm,v 1.132 2018/02/27 22:46:53 espie Exp $
+# $OpenBSD: PkgCreate.pm,v 1.133 2018/04/26 12:18:44 espie Exp $
#
# Copyright (c) 2003-2014 Marc Espie <espie@openbsd.org>
#
@@ -733,7 +733,7 @@ sub new
{
my ($class, $filename) = @_;
- open(my $fh, '<', $filename) or die "Missing file $filename";
+ open(my $fh, '<', $filename) or return undef;
bless { fh => $fh, name => $filename }, (ref($class) || $class);
}
@@ -758,7 +758,7 @@ sub close
sub deduce_name
{
- my ($self, $frag, $not) = @_;
+ my ($self, $frag, $not, $p, $state) = @_;
my $o = $self->name;
my $noto = $o;
@@ -770,7 +770,8 @@ sub deduce_name
$noto =~ s/PFRAG\./PFRAG.no-$frag-/o or
$noto =~ s/PLIST/PFRAG.no-$frag/o;
unless (-e $o or -e $noto) {
- die "Missing fragments for $frag: $o and $noto don't exist";
+ $p->missing_fragments($state, $frag, $o, $noto);
+ return;
}
if ($not) {
return $noto if -e $noto;
@@ -1053,11 +1054,16 @@ sub handle_fragment
} else {
return undef unless defined $not;
}
- my $newname = $old->deduce_name($frag, $not);
+ my $newname = $old->deduce_name($frag, $not, $self, $state);
if (defined $newname) {
$state->set_status("switching to $newname")
unless $state->{silent};
- return $old->new($newname);
+ my $f = $old->new($newname);
+ if (!defined $f) {
+ $self->cant_read_fragment($state, $newname);
+ } else {
+ return $f;
+ }
}
return undef;
}
@@ -1073,7 +1079,9 @@ sub read_fragments
my $stack = [];
my $subst = $state->{subst};
- push(@$stack, $self->FileClass->new($filename));
+ my $main = $self->FileClass->new($filename);
+ return undef if !defined $main;
+ push(@$stack, $main);
my $fast = $subst->value("LIBS_ONLY");
return $plist->read($stack,
@@ -1233,6 +1241,13 @@ sub cant_read_fragment
$state->fatal("can't read packing-list #1", $frag);
}
+sub missing_fragments
+{
+ my ($self, $state, $frag, $o, $noto) = @_;
+ $state->fatal("Missing fragments for #1: #2 and #3 don't exist",
+ $frag, $o, $noto);
+}
+
sub read_all_fragments
{
my ($self, $state, $plist) = @_;