X-Git-Url: https://mattmccutchen.net/rsync/rsync.git/blobdiff_plain/11e758a4303b5ead815c7a0f2a4843e981102287..d8c4d6de1089623cb7d8c0050bacd68ff74f1aa2:/options.c diff --git a/options.c b/options.c index 4691fe58..69fe4b39 100644 --- a/options.c +++ b/options.c @@ -331,8 +331,7 @@ void usage(enum logcode F) rprintf(F," --include=PATTERN don't exclude files matching PATTERN\n"); rprintf(F," --include-from=FILE read include patterns from FILE\n"); rprintf(F," --files-from=FILE read list of source-file names from FILE\n"); - rprintf(F," -0, --from0 all *-from file lists are delimited by nulls\n"); - rprintf(F," --version print version number\n"); + rprintf(F," -0, --from0 all *-from/filter files are delimited by 0s\n"); rprintf(F," --address=ADDRESS bind address for outgoing socket to daemon\n"); rprintf(F," --port=PORT specify double-colon alternate port number\n"); rprintf(F," --blocking-io use blocking I/O for the remote shell\n"); @@ -341,7 +340,7 @@ void usage(enum logcode F) rprintf(F," --progress show progress during transfer\n"); rprintf(F," -P same as --partial --progress\n"); rprintf(F," -i, --itemize-changes output a change-summary for all updates\n"); - rprintf(F," --log-format=FORMAT log file-transfers using specified format\n"); + rprintf(F," --log-format=FORMAT output filenames using the specified format\n"); rprintf(F," --password-file=FILE read password from FILE\n"); rprintf(F," --list-only list the files instead of copying them\n"); rprintf(F," --bwlimit=KBPS limit I/O bandwidth; KBytes per second\n"); @@ -353,6 +352,7 @@ void usage(enum logcode F) rprintf(F," -4, --ipv4 prefer IPv4\n"); rprintf(F," -6, --ipv6 prefer IPv6\n"); #endif + rprintf(F," --version print version number\n"); rprintf(F," -h, --help show this help screen\n"); rprintf(F,"\nUse \"rsync --daemon --help\" to see the daemon-mode command-line options.\n"); @@ -622,6 +622,35 @@ static int count_args(const char **argv) } +static OFF_T parse_size_arg(const char *size_arg) +{ + const char *arg; + OFF_T size; + + for (arg = size_arg; isdigit(*(uchar*)arg); arg++) {} + if (*arg == '.') + for (arg++; isdigit(*(uchar*)arg); arg++) {} + switch (*arg) { + case 'k': case 'K': + size = atof(size_arg) * 1024; + break; + case 'm': case 'M': + size = atof(size_arg) * 1024*1024; + break; + case 'g': case 'G': + size = atof(size_arg) * 1024*1024*1024; + break; + case '\0': + size = atof(size_arg); + break; + default: + size = 0; + break; + } + return size; +} + + static void create_refuse_error(int which) { /* The "which" value is the index + OPT_REFUSED_BASE. */ @@ -807,27 +836,7 @@ int parse_arguments(int *argc, const char ***argv, int frommain) break; case OPT_MAX_SIZE: - for (arg = max_size_arg; isdigit(*(uchar*)arg); arg++) {} - if (*arg == '.') - for (arg++; isdigit(*(uchar*)arg); arg++) {} - switch (*arg) { - case 'k': case 'K': - max_size = atof(max_size_arg) * 1024; - break; - case 'm': case 'M': - max_size = atof(max_size_arg) * 1024*1024; - break; - case 'g': case 'G': - max_size = atof(max_size_arg) * 1024*1024*1024; - break; - case '\0': - max_size = atof(max_size_arg); - break; - default: - max_size = 0; - break; - } - if (max_size <= 0) { + if ((max_size = parse_size_arg(max_size_arg)) <= 0) { snprintf(err_buf, sizeof err_buf, "--max-size value is invalid: %s\n", max_size_arg); @@ -1227,7 +1236,7 @@ int parse_arguments(int *argc, const char ***argv, int frommain) **/ void server_options(char **args,int *argc) { - static char argstr[50+MAX_BASIS_DIRS*2]; + static char argstr[64]; int ac = *argc; char *arg; @@ -1258,7 +1267,7 @@ void server_options(char **args,int *argc) argstr[x++] = 'b'; if (update_only) argstr[x++] = 'u'; - if (!do_xfers) + if (!do_xfers) /* NOT "dry_run"! */ argstr[x++] = 'n'; if (preserve_links) argstr[x++] = 'l';