X-Git-Url: https://mattmccutchen.net/rsync/rsync.git/blobdiff_plain/c226b7c2fdd6cc4357337514b22c3042195ab091..17d31b380b7c748837b30e7e0c54ab17974f7ab6:/main.c diff --git a/main.c b/main.c index 87405579..2846f881 100644 --- a/main.c +++ b/main.c @@ -34,32 +34,47 @@ static void report(int f) extern int am_sender; extern int am_daemon; extern int do_stats; + extern int remote_version; + int send_stats; if (am_daemon) { log_exit(0, __FILE__, __LINE__); 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); + send_stats = verbose || + ((remote_version >= 20) && (PROTOCOL_VERSION >= 20)); + if (am_server) { + if (am_sender && send_stats) { + int64 w; + /* store total_written in a temporary + because write_longint changes it */ + w = stats.total_written; + write_longint(f,stats.total_read); + write_longint(f,w); + write_longint(f,stats.total_size); + } return; } - - if (!am_sender) { + + /* this is the client */ + + if (!am_sender && send_stats) { int64 r; stats.total_written = read_longint(f); + /* store total_read in a temporary, read_longint changes it */ r = read_longint(f); stats.total_size = read_longint(f); stats.total_read = r; } if (do_stats) { + if (!am_sender && !send_stats) { + /* missing the bytes written by the generator */ + rprintf(FINFO, "\nCannot show stats as receiver because protocol version is less than 20\n"); + rprintf(FINFO, "Use --stats -v to show stats\n"); + return; + } rprintf(FINFO,"\nNumber of files: %d\n", stats.num_files); rprintf(FINFO,"Number of files transferred: %d\n", stats.num_transferred_files); @@ -78,13 +93,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); @@ -592,7 +609,7 @@ int main(int argc,char *argv[]) carried across */ orig_umask = (int)umask(0); - if (!parse_arguments(argc, argv)) { + if (!parse_arguments(argc, argv, 1)) { exit_cleanup(RERR_SYNTAX); }