From 10d1c4cf5bde5646c8791c511ad8c87455a50f38 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Mon, 20 Jan 2020 19:39:05 +0100 Subject: [PATCH] [unpackfs] Improve progress reporting - don't rely on exactly 100 files being copied (thanks to Kevin Kofler) --- src/modules/unpackfs/main.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/modules/unpackfs/main.py b/src/modules/unpackfs/main.py index 53ffd37df..a6ee3455d 100644 --- a/src/modules/unpackfs/main.py +++ b/src/modules/unpackfs/main.py @@ -132,6 +132,9 @@ def file_copy(source, entry, progress_cb): process = subprocess.Popen( args, env=at_env, bufsize=1, stdout=subprocess.PIPE, close_fds=ON_POSIX ) + # last_num_files_copied trails num_files_copied, and whenever at least 100 more + # files have been copied, progress is reported and last_num_files_copied is updated. + last_num_files_copied = 0 for line in iter(process.stdout.readline, b''): # rsync outputs progress in parentheses. Each line will have an @@ -157,7 +160,8 @@ def file_copy(source, entry, progress_cb): num_files_copied = num_files_total_local - num_files_remaining # I guess we're updating every 100 files... - if num_files_copied % 100 == 0: + if num_files_copied - last_num_files_copied >= 100: + last_num_files_copied = num_files_copied progress_cb(num_files_copied, num_files_total_local) process.wait()