X-Git-Url: https://mattmccutchen.net/rsync/rsync.git/blobdiff_plain/bf18b7ca671e877715c1b139ae3859de6858ad54..032dcf74b0bdbdff0e0ce5c60bee7f79dfc394a8:/main.c diff --git a/main.c b/main.c index bb9cfde5..306673a5 100644 --- a/main.c +++ b/main.c @@ -59,6 +59,7 @@ extern int filesfrom_fd; extern pid_t cleanup_child_pid; extern char *files_from; extern char *remote_filesfrom_file; +extern char *partial_dir; extern char *basis_dir[]; extern char *rsync_path; extern char *shell_cmd; @@ -463,7 +464,7 @@ static int do_recv(int f_in,int f_out,struct file_list *flist,char *local_name) int pid; int status = 0; int error_pipe[2], name_pipe[2]; - BOOL need_name_pipe = basis_dir[0] && !dry_run; + BOOL need_name_pipe = (basis_dir[0] || partial_dir) && !dry_run; /* The receiving side mustn't obey this, or an existing symlink that * points to an identical file won't be replaced by the referent. */ @@ -670,9 +671,7 @@ int client_run(int f_in, int f_out, pid_t pid, int argc, char *argv[]) char *local_name = NULL; cleanup_child_pid = pid; - if (read_batch) { - assert(am_sender == 0); - } else { + if (!read_batch) { set_nonblocking(f_in); set_nonblocking(f_out); } @@ -731,7 +730,7 @@ int client_run(int f_in, int f_out, pid_t pid, int argc, char *argv[]) exit_cleanup(status); } - if (argc == 0) + if (argc == 0 && !list_only) list_only = 1; if (!read_batch) @@ -963,9 +962,8 @@ static int start_client(int argc, char *argv[]) } /* ... or no dest at all */ - if (!am_sender && argc == 0) { + if (!am_sender && argc == 0 && !list_only) list_only = 1; - } pid = do_cmd(shell_cmd,shell_machine,shell_user,shell_path, &f_in,&f_out);