X-Git-Url: https://mattmccutchen.net/rsync/rsync.git/blobdiff_plain/33c4b445ef295f7abe023b208651d450ab2a5c3b..24e61cffe3cedc0165ceb623aefb42a35bd7da73:/main.c diff --git a/main.c b/main.c index 91f096af..42f4a6f9 100644 --- a/main.c +++ b/main.c @@ -20,6 +20,9 @@ */ #include "rsync.h" +#if defined CONFIG_LOCALE && defined HAVE_LOCALE_H +#include +#endif extern int verbose; extern int dry_run; @@ -170,7 +173,7 @@ static void handle_stats(int f) stats.flist_buildtime = read_longint(f); stats.flist_xfertime = read_longint(f); } - } else if (write_batch) { + } else if (write_batch && !am_server) { /* 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); @@ -591,7 +594,7 @@ static int do_recv(int f_in,int f_out,struct file_list *flist,char *local_name) am_generator = 1; close_multiplexing_in(); - if (write_batch) + if (write_batch && !am_server) stop_write_batch(); close(error_pipe[1]); @@ -764,7 +767,7 @@ int client_run(int f_in, int f_out, pid_t pid, int argc, char *argv[]) if (filesfrom_host) filesfrom_fd = f_in; - if (write_batch) + if (write_batch && !am_server) start_write_batch(f_out); flist = send_file_list(f_out, argc, argv); set_msg_fd_in(-1); @@ -784,8 +787,8 @@ int client_run(int f_in, int f_out, pid_t pid, int argc, char *argv[]) io_flush(FULL_FLUSH); wait_process(pid, &status); } - io_flush(FULL_FLUSH); output_summary(); + io_flush(FULL_FLUSH); exit_cleanup(status); } @@ -802,7 +805,7 @@ int client_run(int f_in, int f_out, pid_t pid, int argc, char *argv[]) filesfrom_fd = -1; } - if (write_batch) + if (write_batch && !am_server) start_write_batch(f_in); flist = recv_file_list(f_in); if (!flist || flist->count == 0) { @@ -1115,6 +1118,10 @@ int main(int argc,char *argv[]) * see the EPIPE. */ signal(SIGPIPE, SIG_IGN); +#if defined CONFIG_LOCALE && defined HAVE_SETLOCALE + setlocale(LC_CTYPE, ""); +#endif + /* Initialize push_dir here because on some old systems getcwd * (implemented by forking "pwd" and reading its output) doesn't * work when there are other child processes. Also, on all systems @@ -1123,7 +1130,7 @@ int main(int argc,char *argv[]) init_flist(); - if (write_batch || read_batch) { + if ((write_batch || read_batch) && !am_server) { if (write_batch) write_batch_shell_file(orig_argc, orig_argv, argc); @@ -1142,6 +1149,8 @@ int main(int argc,char *argv[]) if (read_batch) read_stream_flags(batch_fd); } + if (write_batch < 0) + dry_run = 1; if (am_daemon && !am_server) return daemon_main();