diff options
author | 2014-07-08 07:59:05 +0000 | |
---|---|---|
committer | 2014-07-08 07:59:05 +0000 | |
commit | a47f227812028e2dbcec23d117de75e5e905f97c (patch) | |
tree | 90b8017cacc5a59ea6175d86498a3ae32b5e0dc0 | |
parent | improve indentation. (diff) | |
download | wireguard-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.pm | 16 | ||||
-rw-r--r-- | usr.sbin/pkg_add/OpenBSD/ProgressMeter/Term.pm | 11 |
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; |