X-Git-Url: https://mattmccutchen.net/rsync/rsync.git/blobdiff_plain/8d6386809e771b4cc7045a4a7cb63b2e1abf43af..b20830b338da114c6248726d15c2d15ed09fee91:/options.c diff --git a/options.c b/options.c index 5a3b2463..fc8d6056 100644 --- a/options.c +++ b/options.c @@ -106,7 +106,7 @@ size_t bwlimit_writemax = 0; int ignore_existing = 0; int ignore_non_existing = 0; int need_messages_from_generator = 0; -int max_delete = 0; +int max_delete = -1; OFF_T max_size = 0; OFF_T min_size = 0; int ignore_errors = 0; @@ -164,6 +164,7 @@ char *dest_option = NULL; int verbose = 0; int quiet = 0; +int output_motd = 1; int log_before_transfer = 0; int stdout_format_has_i = 0; int stdout_format_has_o_or_i = 0; @@ -281,6 +282,7 @@ void usage(enum logcode F) rprintf(F,"Options\n"); rprintf(F," -v, --verbose increase verbosity\n"); rprintf(F," -q, --quiet suppress non-error messages\n"); + rprintf(F," --no-motd suppress daemon-mode MOTD (see manpage caveat)\n"); rprintf(F," -c, --checksum skip based on checksum, not mod-time & size\n"); rprintf(F," -a, --archive archive mode; same as -rlptgoD (no -H)\n"); rprintf(F," --no-OPTION turn off an implied OPTION (e.g. --no-D)\n"); @@ -407,6 +409,8 @@ static struct poptOption long_options[] = { {"no-verbose", 0, POPT_ARG_VAL, &verbose, 0, 0, 0 }, {"no-v", 0, POPT_ARG_VAL, &verbose, 0, 0, 0 }, {"quiet", 'q', POPT_ARG_NONE, 0, 'q', 0, 0 }, + {"motd", 0, POPT_ARG_VAL, &output_motd, 1, 0, 0 }, + {"no-motd", 0, POPT_ARG_VAL, &output_motd, 0, 0, 0 }, {"stats", 0, POPT_ARG_NONE, &do_stats, 0, 0, 0 }, {"human-readable", 'h', POPT_ARG_NONE, 0, 'h', 0, 0}, {"dry-run", 'n', POPT_ARG_NONE, &dry_run, 0, 0, 0 }, @@ -711,9 +715,9 @@ static OFF_T parse_size_arg(char **size_arg, char def_suf) const char *arg; OFF_T size = 1; - for (arg = *size_arg; isdigit(*(uchar*)arg); arg++) {} + for (arg = *size_arg; isDigit(arg); arg++) {} if (*arg == '.') - for (arg++; isdigit(*(uchar*)arg); arg++) {} + for (arg++; isDigit(arg); arg++) {} switch (*arg && *arg != '+' && *arg != '-' ? *arg++ : def_suf) { case 'b': case 'B': reps = 0; @@ -752,7 +756,7 @@ static OFF_T parse_size_arg(char **size_arg, char def_suf) OFF_T num = size; *s = '\0'; while (num) { - *--s = (num % 10) + '0'; + *--s = (char)(num % 10) + '0'; num /= 10; } if (!(*size_arg = strdup(s))) @@ -1242,12 +1246,8 @@ int parse_arguments(int *argc, const char ***argv, int frommain) if (!*backup_dir) goto options_rejected; clean_fname(backup_dir, 1); - if (check_filter(elp, backup_dir, 1) < 0) { - options_rejected: - snprintf(err_buf, sizeof err_buf, - "Your options have been rejected by the server.\n"); - return 0; - } + if (check_filter(elp, backup_dir, 1) < 0) + goto options_rejected; } } @@ -1453,6 +1453,11 @@ int parse_arguments(int *argc, const char ***argv, int frommain) am_starting_up = 0; return 1; + + options_rejected: + snprintf(err_buf, sizeof err_buf, + "Your options have been rejected by the server.\n"); + return 0; } @@ -1610,7 +1615,7 @@ void server_options(char **args,int *argc) args[ac++] = arg; } - if (max_delete && am_sender) { + if (max_delete >= 0 && am_sender) { if (asprintf(&arg, "--max-delete=%d", max_delete) < 0) goto oom; args[ac++] = arg;