diff options
author | Wayne Davison <wayned@samba.org> | 2007-08-11 16:53:31 +0000 |
---|---|---|
committer | Wayne Davison <wayned@samba.org> | 2007-08-11 16:53:31 +0000 |
commit | e208631a5b488a8bc6d0ad1d0a71a60faab2266e (patch) | |
tree | b0448b8b1aa7f53dc7b19de74160771519e6fc66 /main.c | |
parent | b553a3dd20c17e1af630ab5945798d7520f31f6d (diff) | |
download | rsync-e208631a5b488a8bc6d0ad1d0a71a60faab2266e.tar.gz rsync-e208631a5b488a8bc6d0ad1d0a71a60faab2266e.tar.bz2 rsync-e208631a5b488a8bc6d0ad1d0a71a60faab2266e.zip |
Improved the arg-checking of a daemon command.
Diffstat (limited to 'main.c')
-rw-r--r-- | main.c | 38 |
1 files changed, 14 insertions, 24 deletions
@@ -37,7 +37,6 @@ extern int am_daemon; extern int inc_recurse; extern int blocking_io; extern int remove_source_files; -extern int daemon_over_rsh; extern int need_messages_from_generator; extern int kluge_around_eof; extern int do_stats; @@ -75,6 +74,7 @@ extern struct filter_list_struct server_filter_list; int local_server = 0; int new_root_dir = 0; +int daemon_over_rsh = 0; mode_t orig_umask = 0; int batch_gen_fd = -1; @@ -1092,16 +1092,9 @@ static int start_client(int argc, char *argv[]) "--files-from hostname is not the same as the transfer hostname\n"); exit_cleanup(RERR_SYNTAX); } - if (rsync_port) { - if (!shell_cmd) { - return start_socket_client(shell_machine, - shell_path, - argc, argv); - } - daemon_over_rsh = 1; - } - am_sender = 0; + if (rsync_port) + daemon_over_rsh = shell_cmd ? 1 : -1; } else { /* source is local, check dest arg */ am_sender = 1; @@ -1128,14 +1121,8 @@ static int start_client(int argc, char *argv[]) } shell_machine = NULL; shell_path = p; - } else if (rsync_port) { - if (!shell_cmd) { - return start_socket_client(shell_machine, - shell_path, - argc, argv); - } - daemon_over_rsh = 1; - } + } else if (rsync_port) + daemon_over_rsh = shell_cmd ? 1 : -1; } } else { /* read_batch */ local_server = 1; @@ -1146,6 +1133,15 @@ static int start_client(int argc, char *argv[]) } } + /* for remote source, only single dest arg can remain ... */ + if (!am_sender && argc > 1) { + usage(FERROR); + exit_cleanup(RERR_SYNTAX); + } + + if (daemon_over_rsh < 0) + return start_socket_client(shell_machine, shell_path, argc, argv); + if (password_file && !daemon_over_rsh) { rprintf(FERROR, "The --password-file option may only be " "used when accessing an rsync daemon.\n"); @@ -1169,12 +1165,6 @@ static int start_client(int argc, char *argv[]) shell_path ? shell_path : ""); } - /* for remote source, only single dest arg can remain ... */ - if (!am_sender && argc > 1) { - usage(FERROR); - exit_cleanup(RERR_SYNTAX); - } - /* ... or no dest at all */ if (!am_sender && argc == 0) list_only |= 1; |