From cd909fde87b75ce7f75b9b7e8733d9133cde3ae9 Mon Sep 17 00:00:00 2001 From: Wayne Davison Date: Mon, 24 Feb 2014 09:49:04 -0800 Subject: Fix --info=progress2 info as a file is transferred. Applying Anish Shankar's patch to fix speed and stats of files as they are transferred. Fixes bug 10450. --- NEWS | 5 +++++ progress.c | 11 ++++++----- 2 files changed, 11 insertions(+), 5 deletions(-) diff --git a/NEWS b/NEWS index dc1df781..e1f5412d 100644 --- a/NEWS +++ b/NEWS @@ -31,6 +31,11 @@ Changes since 3.1.0: - Fixed a bug that caused a failure when combining --delete-missing-args with --xattrs and/or --acls. + - Fixed a problem with --info=progress2's output stats where rsync would + only update the stats at the end of each file's transfer. It now uses + the data that is flowing for the current file, making the stats more + accurate and less jumpy. + - Fixed an itemize bug that affected the combo of --link-dest, -X, and -n. - Fixed a problem with delete messages not appearing in the log file when diff --git a/progress.c b/progress.c index 8fade9c1..318a77f0 100644 --- a/progress.c +++ b/progress.c @@ -177,6 +177,11 @@ void show_progress(OFF_T ofs, OFF_T size) gettimeofday(&now, NULL); + if (INFO_GTE(PROGRESS, 2)) { + ofs = stats.total_transferred_size - size + ofs; + size = stats.total_size; + } + if (!ph_start.time.tv_sec) { int i; @@ -212,9 +217,5 @@ void show_progress(OFF_T ofs, OFF_T size) return; #endif - if (INFO_GTE(PROGRESS, 2)) { - rprint_progress(stats.total_transferred_size, - stats.total_size, &now, False); - } else - rprint_progress(ofs, size, &now, False); + rprint_progress(ofs, size, &now, False); } -- cgit v1.2.1