summaryrefslogtreecommitdiff
path: root/main.c
diff options
context:
space:
mode:
authorWayne Davison <wayned@samba.org>2007-08-11 16:53:31 +0000
committerWayne Davison <wayned@samba.org>2007-08-11 16:53:31 +0000
commite208631a5b488a8bc6d0ad1d0a71a60faab2266e (patch)
treeb0448b8b1aa7f53dc7b19de74160771519e6fc66 /main.c
parentb553a3dd20c17e1af630ab5945798d7520f31f6d (diff)
downloadrsync-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.c38
1 files changed, 14 insertions, 24 deletions
diff --git a/main.c b/main.c
index d30350d1..0e765fb0 100644
--- a/main.c
+++ b/main.c
@@ -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;