summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorespie <espie@openbsd.org>2014-07-08 07:59:05 +0000
committerespie <espie@openbsd.org>2014-07-08 07:59:05 +0000
commita47f227812028e2dbcec23d117de75e5e905f97c (patch)
tree90b8017cacc5a59ea6175d86498a3ae32b5e0dc0
parentimprove indentation. (diff)
downloadwireguard-openbsd-a47f227812028e2dbcec23d117de75e5e905f97c.tar.xz
wireguard-openbsd-a47f227812028e2dbcec23d117de75e5e905f97c.zip
cleaner callback handling
- store it inside location, so that belayed archives open can get it - wipe it out when the sizer goes away... to be done slightly better probably ?
-rw-r--r--usr.sbin/pkg_add/OpenBSD/PackageLocation.pm16
-rw-r--r--usr.sbin/pkg_add/OpenBSD/ProgressMeter/Term.pm11
2 files changed, 22 insertions, 5 deletions
diff --git a/usr.sbin/pkg_add/OpenBSD/PackageLocation.pm b/usr.sbin/pkg_add/OpenBSD/PackageLocation.pm
index 45c099b2d07..207fb71b571 100644
--- a/usr.sbin/pkg_add/OpenBSD/PackageLocation.pm
+++ b/usr.sbin/pkg_add/OpenBSD/PackageLocation.pm
@@ -1,5 +1,5 @@
# ex:ts=8 sw=4:
-# $OpenBSD: PackageLocation.pm,v 1.41 2014/07/07 19:10:25 espie Exp $
+# $OpenBSD: PackageLocation.pm,v 1.42 2014/07/08 07:59:05 espie Exp $
#
# Copyright (c) 2003-2007 Marc Espie <espie@openbsd.org>
#
@@ -84,6 +84,7 @@ sub _opened
my $archive = OpenBSD::Ustar->new($fh, $self->{repository}{state});
$archive->set_description($self->{repository}->url($self->{name}));
$self->{_archive} = $archive;
+ $self->_set_callback;
if (defined $self->{_current_name}) {
while (my $e = $self->{_archive}->next) {
@@ -96,6 +97,14 @@ sub _opened
return $self;
}
+sub _set_callback
+{
+ my $self = shift;
+ if (defined $self->{_archive}) {
+ $self->{_archive}->set_callback($self->{callback});
+ }
+}
+
sub store_end_of_stream
{
@@ -328,9 +337,8 @@ sub skip
sub set_callback
{
my ($self, $code) = @_;
- if (defined $self->{_archive}) {
- $self->{_archive}->set_callback($code);
- }
+ $self->{callback} = $code;
+ $self->_set_callback;
}
package OpenBSD::PackageLocation::Installed;
diff --git a/usr.sbin/pkg_add/OpenBSD/ProgressMeter/Term.pm b/usr.sbin/pkg_add/OpenBSD/ProgressMeter/Term.pm
index 23570fd2bdf..62a1a42a26d 100644
--- a/usr.sbin/pkg_add/OpenBSD/ProgressMeter/Term.pm
+++ b/usr.sbin/pkg_add/OpenBSD/ProgressMeter/Term.pm
@@ -1,5 +1,5 @@
# ex:ts=8 sw=4:
-# $OpenBSD: Term.pm,v 1.26 2014/07/07 16:43:55 espie Exp $
+# $OpenBSD: Term.pm,v 1.27 2014/07/08 07:59:05 espie Exp $
#
# Copyright (c) 2004-2007 Marc Espie <espie@openbsd.org>
#
@@ -309,4 +309,13 @@ sub advance
}
}
+sub saved
+{
+ my $self = shift;
+ $self->SUPER::saved;
+ if (defined $self->{state}{archive}) {
+ $self->{state}{archive}->set_callback;
+ }
+}
+
1;