summaryrefslogtreecommitdiff
path: root/progress.c
diff options
context:
space:
mode:
authorWayne Davison <wayned@samba.org>2005-03-05 17:49:46 +0000
committerWayne Davison <wayned@samba.org>2005-03-05 17:49:46 +0000
commit56efa5647422b364aa644f557f9d9ebc2b198e97 (patch)
tree4d5448d5641925de15814cd3661e63a057830bd0 /progress.c
parented7e79553edc2e65348019854b0fe52b73427daa (diff)
downloadrsync-56efa5647422b364aa644f557f9d9ebc2b198e97.tar.gz
rsync-56efa5647422b364aa644f557f9d9ebc2b198e97.tar.bz2
rsync-56efa5647422b364aa644f557f9d9ebc2b198e97.zip
Fixed the elapsed time reported for 0-length files.
Diffstat (limited to 'progress.c')
-rw-r--r--progress.c11
1 files changed, 6 insertions, 5 deletions
diff --git a/progress.c b/progress.c
index 22e0955e..8192c35d 100644
--- a/progress.c
+++ b/progress.c
@@ -67,17 +67,18 @@ static void rprint_progress(OFF_T ofs, OFF_T size, struct timeval *now,
if (is_last) {
/* Compute stats based on the starting info. */
- diff = msdiff(&ph_start.time, now);
- if (!diff)
+ if (!ph_start.time.tv_sec
+ || !(diff = msdiff(&ph_start.time, now)))
diff = 1;
rate = (double) (ofs - ph_start.ofs) * 1000.0 / diff / 1024.0;
/* Switch to total time taken for our last update. */
remain = (double) diff / 1000.0;
} else {
/* Compute stats based on recent progress. */
- diff = msdiff(&ph_list[oldest_hpos].time, now);
- rate = diff ? (double) (ofs - ph_list[oldest_hpos].ofs) * 1000.0
- / diff / 1024.0 : 0;
+ if (!(diff = msdiff(&ph_list[oldest_hpos].time, now)))
+ diff = 1;
+ rate = (double) (ofs - ph_list[oldest_hpos].ofs) * 1000.0
+ / diff / 1024.0;
remain = rate ? (double) (size - ofs) / rate / 1000.0 : 0.0;
}