X-Git-Url: https://mattmccutchen.net/rsync/rsync.git/blobdiff_plain/e5a2b8544dee410dcdeafbc2f1b82f9a8f4faf23..93689aa51a1541cbc53bd9fa261b9c01ce0d0a95:/main.c diff --git a/main.c b/main.c index 89388373..fa5ecc03 100644 --- a/main.c +++ b/main.c @@ -57,6 +57,12 @@ static void report(int f) extern int remote_version; int send_stats; + if (do_stats) { + /* These come out from every process */ + show_malloc_stats(); + show_flist_stats(); + } + if (am_daemon) { log_exit(0, __FILE__, __LINE__); if (f == -1 || !am_sender) return; @@ -120,7 +126,6 @@ static void report(int f) rprintf(FINFO,"total size is %.0f speedup is %.2f\n", (double)stats.total_size, (1.0*stats.total_size)/(stats.total_written+stats.total_read)); - show_malloc_stats(); } fflush(stdout); @@ -135,10 +140,17 @@ static void show_malloc_stats(void) { #ifdef HAVE_MALLINFO struct mallinfo mi; + extern int am_server; + extern int am_sender; + extern int am_daemon; mi = mallinfo(); - rprintf(FINFO, RSYNC_NAME " heap statistics:\n"); + rprintf(FINFO, RSYNC_NAME "[%d] (%s%s%s) heap statistics:\n", + getpid(), + am_server ? "server " : "", + am_daemon ? "daemon " : "", + am_sender ? "sender" : "receiver"); rprintf(FINFO, " arena: %10d (bytes from sbrk)\n", mi.arena); rprintf(FINFO, " ordblks: %10d (chunks not in use)\n", mi.ordblks); rprintf(FINFO, " smblks: %10d\n", mi.smblks); @@ -195,10 +207,11 @@ static pid_t do_cmd(char *cmd,char *machine,char *user,char *path,int *f_in,int args[argc++] = rsync_path; - server_options(args,&argc); + if ((blocking_io == -1) && (strcmp(cmd, RSYNC_RSH) == 0)) + blocking_io = 1; + server_options(args,&argc); - if (strcmp(cmd, RSYNC_RSH) == 0) blocking_io = 1; } args[argc++] = "."; @@ -699,7 +712,8 @@ static int start_client(int argc, char *argv[]) if (!p) { local_server = 1; /* disable "rsync algorithm" when both sides local */ - whole_file = 1; + if (whole_file == -1) + whole_file = 1; } else if (p[1] == ':') { *p = 0; return start_socket_client(argv[argc-1], p+2, argc-1, argv); @@ -792,8 +806,10 @@ int main(int argc,char *argv[]) extern int write_batch; /* dw */ extern char *batch_ext; /* dw */ int orig_argc; /* dw */ + char **orig_argv; orig_argc = argc; /* dw */ + orig_argv = argv; signal(SIGUSR1, sigusr1_handler); signal(SIGUSR2, sigusr2_handler); @@ -833,7 +849,7 @@ int main(int argc,char *argv[]) if (write_batch) { /* dw */ create_batch_file_ext(); - write_batch_argvs_file(orig_argc, argc, argv); + write_batch_argvs_file(orig_argc, orig_argv); } if (read_batch) { /* dw */