diff options
author | Wayne Davison <wayned@samba.org> | 2008-07-05 00:21:05 -0700 |
---|---|---|
committer | Wayne Davison <wayned@samba.org> | 2008-07-05 00:31:46 -0700 |
commit | bb4e4d889f51065dcef6f34d8ba4a80c051149a1 (patch) | |
tree | 2b94439eb059cc33a1862da2d988737e3b4a8619 /progress.c | |
parent | 93f3fbf73e2e2b1c2560482fb395c3f9a6835fc8 (diff) | |
download | android_external_rsync-bb4e4d889f51065dcef6f34d8ba4a80c051149a1.tar.gz android_external_rsync-bb4e4d889f51065dcef6f34d8ba4a80c051149a1.tar.bz2 android_external_rsync-bb4e4d889f51065dcef6f34d8ba4a80c051149a1.zip |
The --progress output now leaves the cursor at the end of the line
(instead of the start) in order to be extra sure that an error won't
overwrite it. We also ensure that the progress option can't be enabled
on the server side.
Diffstat (limited to 'progress.c')
-rw-r--r-- | progress.c | 19 |
1 files changed, 10 insertions, 9 deletions
@@ -71,6 +71,11 @@ static void rprint_progress(OFF_T ofs, OFF_T size, struct timeval *now, double rate, remain; if (is_last) { + snprintf(eol, sizeof eol, + " (xfer#%d, to-check=%d/%d)\n", + stats.num_transferred_files, + stats.num_files - current_file_index - 1, + stats.num_files); /* Compute stats based on the starting info. */ if (!ph_start.time.tv_sec || !(diff = msdiff(&ph_start.time, now))) @@ -79,6 +84,7 @@ static void rprint_progress(OFF_T ofs, OFF_T size, struct timeval *now, /* Switch to total time taken for our last update. */ remain = (double) diff / 1000.0; } else { + strlcpy(eol, " ", sizeof eol); /* Compute stats based on recent progress. */ if (!(diff = msdiff(&ph_list[oldest_hpos].time, now))) diff = 1; @@ -106,18 +112,13 @@ static void rprint_progress(OFF_T ofs, OFF_T size, struct timeval *now, (int) remain % 60); } - if (is_last) { - snprintf(eol, sizeof eol, " (xfer#%d, to-check=%d/%d)\n", - stats.num_transferred_files, - stats.num_files - current_file_index - 1, - stats.num_files); - } else - strlcpy(eol, "\r", sizeof eol); progress_is_active = 0; - rprintf(FCLIENT, "%12s %3d%% %7.2f%s %s%s", + rprintf(FCLIENT, "\r%12s %3d%% %7.2f%s %s%s", human_num(ofs), pct, rate, units, rembuf, eol); - if (!is_last) + if (!is_last) { progress_is_active = 1; + fflush(stdout); + } } void set_current_file_index(struct file_struct *file, int ndx) |