X-Git-Url: https://mattmccutchen.net/rsync/rsync.git/blobdiff_plain/c3851185f3d4b3ddb72d7c6ea6d931d4423f07c8..550d4e23466504c1a595dd5969e9324d1e2139a2:/options.c diff --git a/options.c b/options.c index 6488b569..b4757747 100644 --- a/options.c +++ b/options.c @@ -251,16 +251,15 @@ void usage(enum logcode F) rprintf(F,"\nrsync is a file transfer program capable of efficient remote update\nvia a fast differencing algorithm.\n\n"); - rprintf(F,"Usage: rsync [OPTION]... SRC [SRC]... [USER@]HOST:DEST\n"); + rprintf(F,"Usage: rsync [OPTION]... SRC [SRC]... DEST\n"); + rprintf(F," or rsync [OPTION]... SRC [SRC]... [USER@]HOST:DEST\n"); + rprintf(F," or rsync [OPTION]... SRC [SRC]... [USER@]HOST::DEST\n"); + rprintf(F," or rsync [OPTION]... SRC [SRC]... rsync://[USER@]HOST[:PORT]/DEST\n"); rprintf(F," or rsync [OPTION]... [USER@]HOST:SRC [DEST]\n"); - rprintf(F," or rsync [OPTION]... SRC [SRC]... DEST\n"); rprintf(F," or rsync [OPTION]... [USER@]HOST::SRC [DEST]\n"); - rprintf(F," or rsync [OPTION]... SRC [SRC]... [USER@]HOST::DEST\n"); rprintf(F," or rsync [OPTION]... rsync://[USER@]HOST[:PORT]/SRC [DEST]\n"); - rprintf(F," or rsync [OPTION]... SRC [SRC]... rsync://[USER@]HOST[:PORT]/DEST\n"); - rprintf(F,"SRC on single-colon remote HOST will be expanded by remote shell\n"); - rprintf(F,"SRC on server remote HOST may contain shell wildcards or multiple\n"); - rprintf(F," sources separated by space as long as they have same top-level\n"); + rprintf(F,"The ':' usages connect via remote shell, while '::' & 'rsync://' usages connect\n"); + rprintf(F,"to an rsync daemon, and require SRC or DEST to start with a module name.\n"); rprintf(F,"\nOptions\n"); rprintf(F," -v, --verbose increase verbosity\n"); rprintf(F," -q, --quiet suppress non-error messages\n"); @@ -530,7 +529,10 @@ static struct poptOption long_daemon_options[] = { {"port", 0, POPT_ARG_INT, &rsync_port, 0, 0, 0 }, {"protocol", 0, POPT_ARG_INT, &protocol_version, 0, 0, 0 }, {"server", 0, POPT_ARG_NONE, &am_server, 0, 0, 0 }, + {"temp-dir", 'T', POPT_ARG_STRING, &tmpdir, 0, 0, 0 }, {"verbose", 'v', POPT_ARG_NONE, 0, 'v', 0, 0 }, + {"no-verbose", 0, POPT_ARG_VAL, &verbose, 0, 0, 0 }, + {"no-v", 0, POPT_ARG_VAL, &verbose, 0, 0, 0 }, {"help", 'h', POPT_ARG_NONE, 0, 'h', 0, 0 }, {0,0,0,0, 0, 0, 0} }; @@ -748,6 +750,13 @@ int parse_arguments(int *argc, const char ***argv, int frommain) goto daemon_error; } } + + if (tmpdir && strlen(tmpdir) >= MAXPATHLEN - 10) { + snprintf(err_buf, sizeof err_buf, + "the --temp-dir path is WAY too long.\n"); + return 0; + } + if (!daemon_opt) { rprintf(FERROR, "Daemon option(s) used without --daemon.\n"); daemon_error: @@ -755,6 +764,7 @@ int parse_arguments(int *argc, const char ***argv, int frommain) "(Type \"rsync --daemon --help\" for assistance with daemon mode.)\n"); exit_cleanup(RERR_SYNTAX); } + *argv = poptGetArgs(pc); *argc = count_args(*argv); am_starting_up = 0; @@ -1012,7 +1022,7 @@ int parse_arguments(int *argc, const char ***argv, int frommain) "You may not combine multiple --delete-WHEN options.\n"); return 0; } - if (!recurse) { + if (!xfer_dirs) { delete_before = delete_during = delete_after = 0; delete_mode = delete_excluded = 0; } else if (delete_before || delete_during || delete_after)