X-Git-Url: https://mattmccutchen.net/rsync/rsync.git/blobdiff_plain/951e826b75c4a4e6bc066e248d7489fb6eba6fde..5dd14f0c3388f69932d521915e039e32b9e6d970:/main.c diff --git a/main.c b/main.c index 5ca82106..f342150b 100644 --- a/main.c +++ b/main.c @@ -21,7 +21,7 @@ */ #include "rsync.h" -#include "ifuncs.h" +#include "inums.h" #include "io.h" #if defined CONFIG_LOCALE && defined HAVE_LOCALE_H #include @@ -32,15 +32,16 @@ extern int list_only; extern int am_root; extern int am_server; extern int am_sender; -extern int am_generator; extern int am_daemon; extern int inc_recurse; extern int blocking_io; +extern int always_checksum; extern int remove_source_files; extern int output_needs_newline; extern int need_messages_from_generator; extern int kluge_around_eof; extern int got_xfer_error; +extern int msgs2stderr; extern int module_id; extern int copy_links; extern int copy_dirlinks; @@ -67,23 +68,27 @@ extern int connect_timeout; extern pid_t cleanup_child_pid; extern unsigned int module_dirlen; extern struct stats stats; +extern char *stdout_format; +extern char *logfile_format; extern char *filesfrom_host; extern char *partial_dir; extern char *dest_option; -extern char *basis_dir[]; extern char *rsync_path; extern char *shell_cmd; extern char *batch_name; extern char *password_file; extern char curr_dir[MAXPATHLEN]; +extern char *basis_dir[MAX_BASIS_DIRS+1]; extern struct file_list *first_flist; extern struct filter_list_struct daemon_filter_list; uid_t our_uid; +int am_generator = 0; int local_server = 0; int daemon_over_rsh = 0; mode_t orig_umask = 0; int batch_gen_fd = -1; +int sender_keeps_checksum = 0; /* There's probably never more than at most 2 outstanding child processes, * but set it higher, just in case. */ @@ -240,9 +245,9 @@ static void output_summary(void) { if (INFO_GTE(STATS, 2)) { rprintf(FCLIENT, "\n"); - rprintf(FINFO,"Number of files: %d\n", stats.num_files); - rprintf(FINFO,"Number of files transferred: %d\n", - stats.num_transferred_files); + rprintf(FINFO,"Number of files: %s\n", comma_num(stats.num_files)); + rprintf(FINFO,"Number of files transferred: %s\n", + comma_num(stats.num_transferred_files)); rprintf(FINFO,"Total file size: %s bytes\n", human_num(stats.total_size)); rprintf(FINFO,"Total transferred file size: %s bytes\n", @@ -255,11 +260,11 @@ static void output_summary(void) human_num(stats.flist_size)); if (stats.flist_buildtime) { rprintf(FINFO, - "File list generation time: %.3f seconds\n", - (double)stats.flist_buildtime / 1000); + "File list generation time: %s seconds\n", + comma_dnum((double)stats.flist_buildtime / 1000, 3)); rprintf(FINFO, - "File list transfer time: %.3f seconds\n", - (double)stats.flist_xfertime / 1000); + "File list transfer time: %s seconds\n", + comma_dnum((double)stats.flist_xfertime / 1000, 3)); } rprintf(FINFO,"Total bytes sent: %s\n", human_num(total_written)); @@ -273,9 +278,9 @@ static void output_summary(void) "sent %s bytes received %s bytes %s bytes/sec\n", human_num(total_written), human_num(total_read), human_dnum((total_written + total_read)/(0.5 + (endtime - starttime)), 2)); - rprintf(FINFO, "total size is %s speedup is %.2f%s\n", + rprintf(FINFO, "total size is %s speedup is %s%s\n", human_num(stats.total_size), - (double)stats.total_size / (total_written+total_read), + comma_dnum((double)stats.total_size / (total_written+total_read), 2), write_batch < 0 ? " (BATCH ONLY)" : dry_run ? " (DRY RUN)" : ""); } @@ -854,7 +859,7 @@ static void do_server_recv(int f_in, int f_out, int argc, char *argv[]) char *local_name = NULL; int negated_levels; - if (filesfrom_fd >= 0) { + if (filesfrom_fd >= 0 && !msgs2stderr) { /* We can't mix messages with files-from data on the socket, * so temporarily turn off info/debug messages. */ negate_output_levels(); @@ -1011,6 +1016,12 @@ int client_run(int f_in, int f_out, pid_t pid, int argc, char *argv[]) if (am_sender) { keep_dirlinks = 0; /* Must be disabled on the sender. */ + + if (always_checksum + && (log_format_has(stdout_format, 'C') + || log_format_has(logfile_format, 'C'))) + sender_keeps_checksum = 1; + if (protocol_version >= 30) io_start_multiplex_out(); else