summaryrefslogtreecommitdiff
path: root/options.c
diff options
context:
space:
mode:
authorWayne Davison <wayned@samba.org>2004-02-01 17:29:41 +0000
committerWayne Davison <wayned@samba.org>2004-02-01 17:29:41 +0000
commite1add89334f3a48b1df240ee2c95d46299c9ee4b (patch)
treefd55005da40adf58ab0f04988a74d9a240b43ffc /options.c
parent22d49dc429f18b5cccf0f237dfd95cceb0b48367 (diff)
downloadrsync-e1add89334f3a48b1df240ee2c95d46299c9ee4b.tar.gz
rsync-e1add89334f3a48b1df240ee2c95d46299c9ee4b.tar.bz2
rsync-e1add89334f3a48b1df240ee2c95d46299c9ee4b.zip
- Fixed the bug where the --daemon option would squelch all option errors
for later parameters. - Complain if someone passes us -l and we don't support symlinks.
Diffstat (limited to 'options.c')
-rw-r--r--options.c46
1 files changed, 25 insertions, 21 deletions
diff --git a/options.c b/options.c
index d01aea94..f5c2cafd 100644
--- a/options.c
+++ b/options.c
@@ -128,6 +128,7 @@ int list_only = 0;
#define MAX_BATCH_PREFIX_LEN 256 /* Must be less than MAXPATHLEN-13 */
char *batch_prefix = NULL;
+static int daemon_opt; /* sets am_daemon after option error-reporting */
static int modify_window_set;
/** Local address to bind. As a character string because it's
@@ -356,7 +357,7 @@ static struct poptOption long_options[] = {
{"link-dest", 0, POPT_ARG_STRING, 0, OPT_LINK_DEST, 0, 0 },
/* TODO: Should this take an optional int giving the compression level? */
{"compress", 'z', POPT_ARG_NONE, &do_compression, 0, 0, 0 },
- {"daemon", 0, POPT_ARG_NONE, &am_daemon, 0, 0, 0 },
+ {"daemon", 0, POPT_ARG_NONE, &daemon_opt, 0, 0, 0 },
{"no-detach", 0, POPT_ARG_NONE, &no_detach, 0, 0, 0 },
{"stats", 0, POPT_ARG_NONE, &do_stats, 0, 0, 0 },
{"progress", 0, POPT_ARG_NONE, &do_progress, 0, 0, 0 },
@@ -524,24 +525,6 @@ int parse_arguments(int *argc, const char ***argv, int frommain)
usage(FINFO);
exit_cleanup(0);
- case 'H':
-#if SUPPORT_HARD_LINKS
- preserve_hard_links=1;
-#else
- /* FIXME: Don't say "server" if this is
- * happening on the client. */
- /* FIXME: Why do we have the duplicated
- * rprintf? Everybody who gets this message
- * ought to send it to the client and also to
- * the logs. */
- snprintf(err_buf, sizeof err_buf,
- "hard links are not supported on this %s\n",
- am_server ? "server" : "client");
- rprintf(FERROR, "ERROR: %s", err_buf);
- return 0;
-#endif /* SUPPORT_HARD_LINKS */
- break;
-
case 'v':
verbose++;
break;
@@ -588,8 +571,6 @@ int parse_arguments(int *argc, const char ***argv, int frommain)
default:
- /* FIXME: If --daemon is specified, then errors for later
- * parameters seem to disappear. */
snprintf(err_buf, sizeof(err_buf),
"%s%s: %s\n",
am_server ? "on remote machine: " : "",
@@ -599,6 +580,26 @@ int parse_arguments(int *argc, const char ***argv, int frommain)
}
}
+#if !SUPPORT_LINKS
+ if (preserve_links) {
+ snprintf(err_buf, sizeof err_buf,
+ "symlinks are not supported on this %s\n",
+ am_server ? "server" : "client");
+ rprintf(FERROR, "ERROR: %s", err_buf);
+ return 0;
+ }
+#endif
+
+#if !SUPPORT_HARD_LINKS
+ if (preserve_hard_links) {
+ snprintf(err_buf, sizeof err_buf,
+ "hard links are not supported on this %s\n",
+ am_server ? "server" : "client");
+ rprintf(FERROR, "ERROR: %s", err_buf);
+ return 0;
+ }
+#endif
+
if (write_batch && read_batch) {
rprintf(FERROR,
"write-batch and read-batch can not be used together\n");
@@ -700,6 +701,9 @@ int parse_arguments(int *argc, const char ***argv, int frommain)
}
}
+ if (daemon_opt)
+ am_daemon = 1;
+
return 1;
}