diff options
author | 2009-12-17 11:07:24 +0000 | |
---|---|---|
committer | 2009-12-17 11:07:24 +0000 | |
commit | 9bbcf641a1012f8c0197e4731560249f30d9deb0 (patch) | |
tree | da05a270acba748ee7b9cf709c04157ebe106392 | |
parent | spacing, no functional change. (diff) | |
download | wireguard-openbsd-9bbcf641a1012f8c0197e4731560249f30d9deb0.tar.xz wireguard-openbsd-9bbcf641a1012f8c0197e4731560249f30d9deb0.zip |
add a callback to file creation, so that we get progress meter for huge
files in packages. Should affect emacs, chrome and the likes.
-rw-r--r-- | usr.sbin/pkg_add/OpenBSD/Add.pm | 8 | ||||
-rw-r--r-- | usr.sbin/pkg_add/OpenBSD/Ustar.pm | 7 |
2 files changed, 11 insertions, 4 deletions
diff --git a/usr.sbin/pkg_add/OpenBSD/Add.pm b/usr.sbin/pkg_add/OpenBSD/Add.pm index acccea3603c..0e02e81fdb2 100644 --- a/usr.sbin/pkg_add/OpenBSD/Add.pm +++ b/usr.sbin/pkg_add/OpenBSD/Add.pm @@ -1,5 +1,5 @@ # ex:ts=8 sw=4: -# $OpenBSD: Add.pm,v 1.98 2009/12/17 08:21:09 espie Exp $ +# $OpenBSD: Add.pm,v 1.99 2009/12/17 11:07:24 espie Exp $ # # Copyright (c) 2003-2007 Marc Espie <espie@openbsd.org> # @@ -171,6 +171,10 @@ sub prepare_for_addition sub install_and_progress { my ($self, $state, $donesize, $totsize) = @_; + $state->{callback} = sub { + my $done = shift; + $state->progress->show($$donesize + $done, $totsize); + }; unless ($state->{do_faked} && $state->{end_faked}) { $self->install($state); } @@ -406,7 +410,7 @@ sub install $state->{archive}->skip; return; } else { - $file->create; + $file->create($state->{callback}); $self->may_check_digest($file, $state); } diff --git a/usr.sbin/pkg_add/OpenBSD/Ustar.pm b/usr.sbin/pkg_add/OpenBSD/Ustar.pm index 385b90f804e..ff7ba96435c 100644 --- a/usr.sbin/pkg_add/OpenBSD/Ustar.pm +++ b/usr.sbin/pkg_add/OpenBSD/Ustar.pm @@ -1,5 +1,5 @@ # ex:ts=8 sw=4: -# $OpenBSD: Ustar.pm,v 1.52 2009/11/10 11:36:56 espie Exp $ +# $OpenBSD: Ustar.pm,v 1.53 2009/12/17 11:07:24 espie Exp $ # # Copyright (c) 2002-2007 Marc Espie <espie@openbsd.org> # @@ -629,7 +629,7 @@ sub new sub create { - my $self = shift; + my ($self, $callback) = @_; $self->make_basedir($self->name); my $buffer; my $out = OpenBSD::CompactWriter->new($self->{destdir}.$self->name); @@ -654,6 +654,9 @@ sub create } $toread -= $actual; + if ($toread > 0 && defined $callback) { + &$callback($self->{size} - $toread); + } } $out->close or die "Error closing $self->{destdir}", $self->name, ": $!"; |