From: Wayne Davison Date: Mon, 24 Feb 2014 17:49:04 +0000 (-0800) Subject: Fix --info=progress2 info as a file is transferred. X-Git-Tag: v3.1.1pre2~19 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=cd909fde87b75ce7f75b9b7e8733d9133cde3ae9;p=thirdparty%2Frsync.git 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. --- 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); }