From e19452a96c164ddb14941cf4977d44534631bfbe Mon Sep 17 00:00:00 2001 From: David Dykstra Date: Wed, 10 Feb 1999 21:54:12 +0000 Subject: [PATCH] Allow --stats to work without -v. --- main.c | 51 +++++++++++++++++++++++++++++++-------------------- rsync.yo | 3 +-- 2 files changed, 32 insertions(+), 22 deletions(-) diff --git a/main.c b/main.c index c46de2a1..bfd0341b 100644 --- a/main.c +++ b/main.c @@ -40,23 +40,32 @@ static void report(int f) if (f == -1 || !am_sender) return; } - if (!verbose) return; - - if (am_server && !am_sender) return; - - if (am_server && am_sender) { - write_longint(f,stats.total_read); - write_longint(f,stats.total_written); - write_longint(f,stats.total_size); + if (am_server) { + if (verbose && am_sender) { + write_longint(f,stats.total_read); + write_longint(f,stats.total_written); + write_longint(f,stats.total_size); + } return; } - - if (!am_sender) { - int64 r; + + /* this is the client */ + + if (!am_sender && verbose) { + /* note that if (!verbose && do_stats) then these values will + be taken from the receiver side's copy. The total size + is identical but the bytes read and written are slightly + different. It's done this way to avoid modifying the + protocol to support --stats without -v. */ stats.total_written = read_longint(f); - r = read_longint(f); + stats.total_read = read_longint(f); stats.total_size = read_longint(f); - stats.total_read = r; + + /* when the total_read was set above just now it would not + have included the last two longints, but the last + read_longint would have compensated for one of them. + Compensate for the other one too by adding 8. */ + stats.total_read += sizeof(int64); } if (do_stats) { @@ -78,13 +87,15 @@ static void report(int f) (double)stats.total_read); } - rprintf(FINFO,"wrote %.0f bytes read %.0f bytes %.2f bytes/sec\n", - (double)stats.total_written, - (double)stats.total_read, - (stats.total_written+stats.total_read)/(0.5 + (t-starttime))); - rprintf(FINFO,"total size is %.0f speedup is %.2f\n", - (double)stats.total_size, - (1.0*stats.total_size)/(stats.total_written+stats.total_read)); + if (verbose || do_stats) { + rprintf(FINFO,"wrote %.0f bytes read %.0f bytes %.2f bytes/sec\n", + (double)stats.total_written, + (double)stats.total_read, + (stats.total_written+stats.total_read)/(0.5 + (t-starttime))); + rprintf(FINFO,"total size is %.0f speedup is %.2f\n", + (double)stats.total_size, + (1.0*stats.total_size)/(stats.total_written+stats.total_read)); + } fflush(stdout); fflush(stderr); diff --git a/rsync.yo b/rsync.yo index d33052ff..38ba3ede 100644 --- a/rsync.yo +++ b/rsync.yo @@ -586,8 +586,7 @@ rsyncd.conf. dit(bf(--stats)) This tells rsync to print a verbose set of statistics on the file transfer, allowing you to tell how effective the rsync -algorithm is for your data. This option only works in conjunction with -the -v (verbose) option. +algorithm is for your data. dit(bf(--progress)) This option tells rsync to print information showing the progress of the transfer. This gives a bored user -- 2.34.1