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;
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);
{
#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);
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++] = ".";
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);
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);
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 */