X-Git-Url: https://mattmccutchen.net/rsync/rsync.git/blobdiff_plain/da9d12f5d93724cb07a4107aa7aff92be9fb2ddb..37c817eb8159366539d4a9c69bd78e74d4941c06:/options.c diff --git a/options.c b/options.c index 1fe70b80..082d4f7d 100644 --- a/options.c +++ b/options.c @@ -66,6 +66,7 @@ int read_only = 0; int module_id = -1; int am_server = 0; int am_sender = 0; +int am_generator = 0; char *files_from = NULL; int filesfrom_fd = -1; char *remote_filesfrom_file = NULL; @@ -124,6 +125,7 @@ int quiet = 0; int always_checksum = 0; int list_only = 0; +#define MAX_BATCH_PREFIX_LEN 256 /* Must be less than MAXPATHLEN-13 */ char *batch_prefix = NULL; static int modify_window_set; @@ -244,13 +246,13 @@ void usage(enum logcode F) rprintf(F," --ignore-existing ignore files that already exist on receiving side\n"); rprintf(F," --delete delete files that don't exist on the sending side\n"); rprintf(F," --delete-excluded also delete excluded files on the receiving side\n"); - rprintf(F," --delete-after delete after transferring, not before\n"); - rprintf(F," --ignore-errors delete even if there are IO errors\n"); + rprintf(F," --delete-after receiver deletes after transferring, not before\n"); + rprintf(F," --ignore-errors delete even if there are I/O errors\n"); rprintf(F," --max-delete=NUM don't delete more than NUM files\n"); rprintf(F," --partial keep partially transferred files\n"); rprintf(F," --force force deletion of directories even if not empty\n"); rprintf(F," --numeric-ids don't map uid/gid values by user/group name\n"); - rprintf(F," --timeout=TIME set IO timeout in seconds\n"); + rprintf(F," --timeout=TIME set I/O timeout in seconds\n"); rprintf(F," -I, --ignore-times turn off mod time & file size quick check\n"); rprintf(F," --size-only ignore mod time for quick check (use size)\n"); rprintf(F," --modify-window=NUM compare mod times with reduced accuracy\n"); @@ -267,12 +269,12 @@ void usage(enum logcode F) rprintf(F," --files-from=FILE read FILE for list of source-file names\n"); rprintf(F," -0 --from0 all *-from file lists are delimited by nulls\n"); rprintf(F," --version print version number\n"); - rprintf(F," --daemon run as a rsync daemon\n"); + rprintf(F," --daemon run as an rsync daemon\n"); rprintf(F," --no-detach do not detach from the parent\n"); rprintf(F," --address=ADDRESS bind to the specified address\n"); rprintf(F," --config=FILE specify alternate rsyncd.conf file\n"); rprintf(F," --port=PORT specify alternate rsyncd port number\n"); - rprintf(F," --blocking-io use blocking IO for the remote shell\n"); + rprintf(F," --blocking-io use blocking I/O for the remote shell\n"); rprintf(F," --no-blocking-io turn off --blocking-io\n"); rprintf(F," --stats give some file transfer stats\n"); rprintf(F," --progress show progress during transfer\n"); @@ -602,6 +604,17 @@ int parse_arguments(int *argc, const char ***argv, int frommain) "write-batch and read-batch can not be used together\n"); exit_cleanup(RERR_SYNTAX); } + if (batch_prefix && strlen(batch_prefix) > MAX_BATCH_PREFIX_LEN) { + rprintf(FERROR, + "the batch-file prefix must be %d characters or less.\n", + MAX_BATCH_PREFIX_LEN); + exit_cleanup(RERR_SYNTAX); + } + + if (tmpdir && strlen(tmpdir) >= MAXPATHLEN - 10) { + rprintf(FERROR, "the --temp-dir path is WAY too long.\n"); + exit_cleanup(RERR_SYNTAX); + } if (do_compression && (write_batch || read_batch)) { rprintf(FERROR, @@ -707,7 +720,7 @@ void server_options(char **args,int *argc) static char mwindow[30]; static char bw[50]; /* Leave room for ``--(write|read)-batch='' */ - static char fext[MAXPATHLEN + 15]; + static char fext[MAX_BATCH_PREFIX_LEN + 15]; int i, x;