extern int module_id;
extern int orig_umask;
extern int copy_links;
-extern int keep_dirs;
extern int keep_dirlinks;
extern int preserve_hard_links;
extern int protocol_version;
write_longint(f, total_read);
write_longint(f, total_written);
write_longint(f, stats.total_size);
+ if (protocol_version >= 29) {
+ write_longint(f, stats.flist_buildtime);
+ write_longint(f, stats.flist_xfertime);
+ }
}
return;
}
total_written = read_longint(f);
total_read = read_longint(f);
stats.total_size = read_longint(f);
+ if (protocol_version >= 29) {
+ stats.flist_buildtime = read_longint(f);
+ stats.flist_xfertime = read_longint(f);
+ }
} else if (write_batch) {
/* The --read-batch process is going to be a client
* receiver, so we need to give it the stats. */
write_longint(batch_fd, total_read);
write_longint(batch_fd, total_written);
write_longint(batch_fd, stats.total_size);
+ if (protocol_version >= 29) {
+ write_longint(batch_fd, stats.flist_buildtime);
+ write_longint(batch_fd, stats.flist_xfertime);
+ }
}
if (do_stats) {
rprintf(FINFO,"Matched data: %.0f bytes\n",
(double)stats.matched_data);
rprintf(FINFO,"File list size: %d\n", stats.flist_size);
+ if (stats.flist_buildtime) {
+ rprintf(FINFO,
+ "File list generation time: %.3f seconds\n",
+ (double)stats.flist_buildtime / 1000);
+ rprintf(FINFO,
+ "File list transfer time: %.3f seconds\n",
+ (double)stats.flist_xfertime / 1000);
+ }
rprintf(FINFO,"Total bytes sent: %.0f\n",
(double)total_written);
rprintf(FINFO,"Total bytes received: %.0f\n",
if (delete_before) {
/* I moved this here from recv_files() to prevent a race condition */
- if (keep_dirs && !local_name && flist->count > 0)
+ if (recurse && !local_name && flist->count > 0)
delete_files(flist);
}
io_start_buffering_in();
if (delete_mode && !delete_excluded)
- recv_exclude_list(f_in);
+ recv_filter_list(f_in);
+ if (cvs_exclude)
+ add_cvs_excludes();
if (filesfrom_fd >= 0) {
/* We need to send the files-from names to the sender at the
if (am_sender) {
keep_dirlinks = 0; /* Must be disabled on the sender. */
- recv_exclude_list(f_in);
+ recv_filter_list(f_in);
if (cvs_exclude)
add_cvs_excludes();
do_server_sender(f_in, f_out, argc, argv);
if (cvs_exclude)
add_cvs_excludes();
if (delete_mode && !delete_excluded)
- send_exclude_list(f_out);
+ send_filter_list(f_out);
if (remote_filesfrom_file)
filesfrom_fd = f_in;
list_only |= 1;
if (!read_batch)
- send_exclude_list(f_out);
+ send_filter_list(f_out);
+ if (cvs_exclude)
+ add_cvs_excludes();
if (filesfrom_fd >= 0) {
io_set_filesfrom_fds(filesfrom_fd, f_out);