X-Git-Url: http://git.annexia.org/?a=blobdiff_plain;f=tools%2Fvirt-resize;h=28f51af1fac3438eecd84302b4f6e7164520e358;hb=2b1e36db75c14d7e2f6f6a096d8cec3f1bd8adab;hp=a70492e846acb9e60f96a11ac5064122a85b0106;hpb=0e28e4104d96bf0bf5b88fb07bb7e5f9f6e6f41f;p=libguestfs.git diff --git a/tools/virt-resize b/tools/virt-resize index a70492e..28f51af 100755 --- a/tools/virt-resize +++ b/tools/virt-resize @@ -33,6 +33,8 @@ $Data::Dumper::Sortkeys = 1; die __"virt-resize: sorry this program does not work on a 32 bit host\n" if ~1 == 4294967294; +$| = 1; + =encoding utf8 =head1 NAME @@ -583,6 +585,7 @@ sub launch_guestfs $g->set_trace (1) if $debug; $g->add_drive_ro ($infile); $g->add_drive ($outfile); + $g->set_progress_callback (\&progress_callback) unless $quiet; $g->launch (); } @@ -1122,16 +1125,11 @@ sub copy_data } if (!$quiet && !$debug) { - local $| = 1; - print __x("Copying {p} ...", p => $part); + print __x("Copying {p} ...\n", p => $part); } $g->copy_size ($part, $target, $newsize < $oldsize ? $newsize : $oldsize); - - if (!$quiet && !$debug) { - print " ", __"done", "\n"; - } } } } @@ -1330,6 +1328,25 @@ sub canonicalize $_; } +# Not as sophisticated as the guestfish progress bar, because +# I intend to use an external library for this at some point (XXX). +sub progress_callback +{ + my $proc_nr = shift; + my $serial = shift; + my $position = shift; + my $total = shift; + + my $ratio = $position / $total; + if ($ratio < 0) { $ratio = 0 } + elsif ($ratio > 1) { $ratio = 1 } + + my $dots = int ($ratio * 76); + + print "[", "#"x$dots, "-"x(76-$dots), "]\r"; + print "\n" if $ratio == 1; +} + =head1 NOTES =head2 "Partition 1 does not end on cylinder boundary."