X-Git-Url: https://mattmccutchen.net/rsync/rsync.git/blobdiff_plain/603e6b05c7a30b2972d2aebcc6003a27d4f6190b..9352b0649b8d6aa21d9d567c1d819a0fa26c7b01:/progress.c diff --git a/progress.c b/progress.c index 31eee157..969b98b8 100644 --- a/progress.c +++ b/progress.c @@ -21,6 +21,9 @@ #include "rsync.h" +extern struct stats stats; +extern int am_server; + static OFF_T last_ofs; static struct timeval print_time; static struct timeval start_time; @@ -43,6 +46,7 @@ static unsigned long msdiff(struct timeval *t1, struct timeval *t2) static void rprint_progress(OFF_T ofs, OFF_T size, struct timeval *now, int is_last) { + char eol[256]; int pct = (ofs == size) ? 100 : (int)((100.0*ofs)/size); unsigned long diff = msdiff(&start_time, now); double rate = diff ? (double) (ofs-start_ofs) * 1000.0 / diff / 1024.0 : 0; @@ -70,16 +74,21 @@ static void rprint_progress(OFF_T ofs, OFF_T size, struct timeval *now, remain_m = (int) (remain / 60.0) % 60; remain_h = (int) (remain / 3600.0); + if (is_last) { + snprintf(eol, sizeof eol, " (%d, %.1f%% of %d)\n", + stats.num_transferred_files, + (float)((stats.current_file_index+1) * 100) + / stats.num_files, + stats.num_files); + } else + strcpy(eol, "\r"); rprintf(FINFO, "%12.0f %3d%% %7.2f%s %4d:%02d:%02d%s", (double) ofs, pct, rate, units, - remain_h, remain_m, remain_s, - is_last ? "\n" : "\r"); + remain_h, remain_m, remain_s, eol); } void end_progress(OFF_T size) { - extern int am_server; - if (!am_server) { struct timeval now; gettimeofday(&now, NULL); @@ -93,7 +102,6 @@ void end_progress(OFF_T size) void show_progress(OFF_T ofs, OFF_T size) { - extern int am_server; struct timeval now; if (!start_time.tv_sec) {