X-Git-Url: https://mattmccutchen.net/rsync/rsync.git/blobdiff_plain/6d56efa6ea66afa2e6f4eb79d9dd5f3b54b723c3..bb640d32213c5dce2ad26515b5fc26e023ec9b98:/main.c diff --git a/main.c b/main.c index 73440865..c32457d4 100644 --- a/main.c +++ b/main.c @@ -32,16 +32,17 @@ 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 human_readable; +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; @@ -68,23 +69,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. */ @@ -856,7 +861,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(); @@ -1013,6 +1018,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