=================================================================== RCS file: /cvsrepo/anoncvs/cvs/src/usr.bin/rsync/fargs.c,v retrieving revision 1.19 retrieving revision 1.19.2.1 diff -c -r1.19 -r1.19.2.1 *** src/usr.bin/rsync/fargs.c 2021/06/30 13:10:04 1.19 --- src/usr.bin/rsync/fargs.c 2021/11/09 13:40:41 1.19.2.1 *************** *** 1,4 **** ! /* $OpenBSD: fargs.c,v 1.19 2021/06/30 13:10:04 claudio Exp $ */ /* * Copyright (c) 2019 Kristaps Dzonsons * --- 1,4 ---- ! /* $OpenBSD: fargs.c,v 1.19.2.1 2021/11/09 13:40:41 benno Exp $ */ /* * Copyright (c) 2019 Kristaps Dzonsons * *************** *** 26,31 **** --- 26,46 ---- #define RSYNC_PATH "rsync" + const char * + alt_base_mode(int mode) + { + switch (mode) { + case BASE_MODE_COMPARE: + return "--compare-dest"; + case BASE_MODE_COPY: + return "--copy-dest"; + case BASE_MODE_LINK: + return "--link-dest"; + default: + errx(1, "unknown base mode %d", mode); + } + } + char ** fargs_cmdline(struct sess *sess, const struct fargs *f, size_t *skip) { *************** *** 116,121 **** --- 131,152 ---- if (!sess->opts->specials && sess->opts->devices) /* --devices is sent as -D --no-specials */ addargs(&args, "--no-specials"); + if (sess->opts->max_size >= 0) + addargs(&args, "--max-size=%lld", sess->opts->max_size); + if (sess->opts->min_size >= 0) + addargs(&args, "--min-size=%lld", sess->opts->min_size); + + /* only add --compare-dest, etc if this is the sender */ + if (sess->opts->alt_base_mode != 0 && + f->mode == FARGS_SENDER) { + for (j = 0; j < MAX_BASEDIR; j++) { + if (sess->opts->basedir[j] == NULL) + break; + addargs(&args, "%s=%s", + alt_base_mode(sess->opts->alt_base_mode), + sess->opts->basedir[j]); + } + } /* Terminate with a full-stop for reasons unknown. */