X-Git-Url: https://mattmccutchen.net/rsync/rsync.git/blobdiff_plain/9af87151ece30ad4b78571cd7f22eadb58e562fe..d17e1dd2dae6bfd9e2e147a0dd3039848dd43abc:/main.c diff --git a/main.c b/main.c index a7cf981a..1b07eee0 100644 --- a/main.c +++ b/main.c @@ -171,7 +171,7 @@ static void show_malloc_stats(void) mi = mallinfo(); - rprintf(FINFO, RSYNC_NAME "[%d] (%s%s%s) heap statistics:\n", + rprintf(FINFO, "\n" RSYNC_NAME "[%d] (%s%s%s) heap statistics:\n", getpid(), am_server ? "server " : "", am_daemon ? "daemon " : "", @@ -243,17 +243,13 @@ static pid_t do_cmd(char *cmd,char *machine,char *user,char *path,int *f_in,int args[argc++] = rsync_path; if (blocking_io < 0) { - char *cp = getenv(RSYNC_RSH_IO_ENV); - if (rsh_env && cp && strcmp(cmd, rsh_env) == 0) - blocking_io = *cp == 'b' || *cp == 'B'; - else { - if ((cp = strrchr(cmd, '/')) != NULL) - cp++; - else - cp = cmd; - if (strcmp(cp, "rsh") == 0 || strcmp(cp, "remsh") == 0) - blocking_io = 1; - } + char *cp; + if ((cp = strrchr(cmd, '/')) != NULL) + cp++; + else + cp = cmd; + if (strcmp(cp, "rsh") == 0 || strcmp(cp, "remsh") == 0) + blocking_io = 1; } server_options(args,&argc); @@ -384,13 +380,15 @@ static void do_server_sender(int f_in, int f_out, int argc,char *argv[]) exit_cleanup(0); } + io_start_buffering_in(f_in); + io_start_buffering_out(f_out); send_files(flist,f_out,f_in); io_flush(); report(f_out); if (protocol_version >= 24) { /* final goodbye message */ - read_int(f_in); - } + read_int(f_in); + } io_flush(); exit_cleanup(0); } @@ -458,7 +456,7 @@ static int do_recv(int f_in,int f_out,struct file_list *flist,char *local_name) close(error_pipe[1]); if (f_in != f_out) close(f_in); - io_start_buffering(f_out); + io_start_buffering_out(f_out); io_set_error_fd(error_pipe[0]); @@ -512,6 +510,7 @@ static void do_server_recv(int f_in, int f_out, int argc,char *argv[]) } } + io_start_buffering_in(f_in); if (delete_mode && !delete_excluded) recv_exclude_list(f_in); @@ -610,18 +609,22 @@ int client_run(int f_in, int f_out, pid_t pid, int argc, char *argv[]) extern int cvs_exclude; extern int delete_mode; extern int delete_excluded; + io_start_buffering_out(f_out); if (cvs_exclude) add_cvs_excludes(); if (delete_mode && !delete_excluded) send_exclude_list(f_out); if (remote_filesfrom_file) filesfrom_fd = f_in; - if (!read_batch) /* dw -- don't write to pipe */ + if (!read_batch) /* don't write to pipe */ flist = send_file_list(f_out,argc,argv); if (verbose > 3) rprintf(FINFO,"file list sent\n"); + io_flush(); + io_start_buffering_out(f_out); send_files(flist,f_out,f_in); + io_flush(); if (protocol_version >= 24) { /* final goodbye message */ read_int(f_in); @@ -633,6 +636,7 @@ int client_run(int f_in, int f_out, pid_t pid, int argc, char *argv[]) wait_process(pid, &status); } report(-1); + io_flush(); exit_cleanup(status); }