Fix merge conflicts.
authorWayne Davison <wayne@opencoder.net>
Fri, 24 Jul 2020 19:42:29 +0000 (12:42 -0700)
committerWayne Davison <wayne@opencoder.net>
Fri, 24 Jul 2020 19:42:29 +0000 (12:42 -0700)
db.diff
detect-renamed.diff
fileflags.diff

diff --git a/db.diff b/db.diff
index d133209bc58624e43986d174b86de4d946a12c20..cd7a0e4ec409bf4ac2b2e8a7542e64ef69ba4304 100644 (file)
--- a/db.diff
+++ b/db.diff
@@ -21,7 +21,7 @@ To use this patch, run these commands for a successful build:
     ./configure
     make
 
-based-on: 974f49e22ac9f62fcfd750768d0835b900524578
+based-on: c3cf174e5ed52e709ecdfd65c7d5da34c7574b96
 diff --git a/.gitignore b/.gitignore
 --- a/.gitignore
 +++ b/.gitignore
@@ -2435,10 +2435,10 @@ diff --git a/main.c b/main.c
  extern int preserve_hard_links;
  extern int protocol_version;
 +extern int always_checksum;
+ extern int mkpath_dest_arg;
  extern int file_total;
  extern int recurse;
- extern int xfer_dirs;
-@@ -92,6 +94,7 @@ extern char *logfile_format;
+@@ -93,6 +95,7 @@ extern char *logfile_format;
  extern char *filesfrom_host;
  extern char *partial_dir;
  extern char *rsync_path;
@@ -2446,7 +2446,7 @@ diff --git a/main.c b/main.c
  extern char *shell_cmd;
  extern char *password_file;
  extern char *backup_dir;
-@@ -1201,6 +1204,9 @@ void start_server(int f_in, int f_out, int argc, char *argv[])
+@@ -1219,6 +1222,9 @@ void start_server(int f_in, int f_out, int argc, char *argv[])
        if (am_daemon && io_timeout && protocol_version >= 31)
                send_msg_int(MSG_IO_TIMEOUT, io_timeout);
  
@@ -2456,7 +2456,7 @@ diff --git a/main.c b/main.c
        if (am_sender) {
                keep_dirlinks = 0; /* Must be disabled on the sender. */
                if (need_messages_from_generator)
-@@ -1484,6 +1490,9 @@ static int start_client(int argc, char *argv[])
+@@ -1502,6 +1508,9 @@ static int start_client(int argc, char *argv[])
        else
                env_port = rsync_port;
  
@@ -2485,7 +2485,7 @@ diff --git a/options.c b/options.c
  int eol_nulls = 0;
  int protect_args = -1;
  int human_readable = 1;
-@@ -107,6 +109,9 @@ int recurse = 0;
+@@ -108,6 +110,9 @@ int mkpath_dest_arg = 0;
  int allow_inc_recurse = 1;
  int xfer_dirs = -1;
  int am_daemon = 0;
@@ -2495,7 +2495,7 @@ diff --git a/options.c b/options.c
  int connect_timeout = 0;
  int keep_partial = 0;
  int safe_symlinks = 0;
-@@ -289,6 +294,7 @@ static struct output_struct debug_words[COUNT_DEBUG+1] = {
+@@ -290,6 +295,7 @@ static struct output_struct debug_words[COUNT_DEBUG+1] = {
        DEBUG_WORD(CHDIR, W_CLI|W_SRV, "Debug when the current directory changes"),
        DEBUG_WORD(CONNECT, W_CLI, "Debug connection events (levels 1-2)"),
        DEBUG_WORD(CMD, W_CLI, "Debug commands+options that are issued (levels 1-2)"),
@@ -2503,7 +2503,7 @@ diff --git a/options.c b/options.c
        DEBUG_WORD(DEL, W_REC, "Debug delete actions (levels 1-3)"),
        DEBUG_WORD(DELTASUM, W_SND|W_REC, "Debug delta-transfer checksumming (levels 1-4)"),
        DEBUG_WORD(DUP, W_REC, "Debug weeding of duplicate names"),
-@@ -676,6 +682,16 @@ static void print_info_flags(enum logcode f)
+@@ -682,6 +688,16 @@ static void print_info_flags(enum logcode f)
  #endif
                        "crtimes",
  
@@ -2520,7 +2520,7 @@ diff --git a/options.c b/options.c
        "*Optimizations",
  
  #ifndef HAVE_SIMD
-@@ -789,6 +805,7 @@ enum {OPT_SERVER = 1000, OPT_DAEMON, OPT_SENDER, OPT_EXCLUDE, OPT_EXCLUDE_FROM,
+@@ -795,6 +811,7 @@ enum {OPT_SERVER = 1000, OPT_DAEMON, OPT_SENDER, OPT_EXCLUDE, OPT_EXCLUDE_FROM,
        OPT_INCLUDE, OPT_INCLUDE_FROM, OPT_MODIFY_WINDOW, OPT_MIN_SIZE, OPT_CHMOD,
        OPT_READ_BATCH, OPT_WRITE_BATCH, OPT_ONLY_WRITE_BATCH, OPT_MAX_SIZE,
        OPT_NO_D, OPT_APPEND, OPT_NO_ICONV, OPT_INFO, OPT_DEBUG, OPT_BLOCK_SIZE,
@@ -2528,7 +2528,7 @@ diff --git a/options.c b/options.c
        OPT_USERMAP, OPT_GROUPMAP, OPT_CHOWN, OPT_BWLIMIT,
        OPT_OLD_COMPRESS, OPT_NEW_COMPRESS, OPT_NO_COMPRESS,
        OPT_STOP_AFTER, OPT_STOP_AT,
-@@ -944,6 +961,10 @@ static struct poptOption long_options[] = {
+@@ -950,6 +967,10 @@ static struct poptOption long_options[] = {
    {"no-c",             0,  POPT_ARG_VAL,    &always_checksum, 0, 0, 0 },
    {"checksum-choice",  0,  POPT_ARG_STRING, &checksum_choice, 0, 0, 0 },
    {"cc",               0,  POPT_ARG_STRING, &checksum_choice, 0, 0, 0 },
@@ -2539,7 +2539,7 @@ diff --git a/options.c b/options.c
    {"block-size",      'B', POPT_ARG_STRING, 0, OPT_BLOCK_SIZE, 0, 0 },
    {"compare-dest",     0,  POPT_ARG_STRING, 0, OPT_COMPARE_DEST, 0, 0 },
    {"copy-dest",        0,  POPT_ARG_STRING, 0, OPT_COPY_DEST, 0, 0 },
-@@ -1038,6 +1059,9 @@ static struct poptOption long_options[] = {
+@@ -1046,6 +1067,9 @@ static struct poptOption long_options[] = {
    {"dparam",           0,  POPT_ARG_STRING, 0, OPT_DAEMON, 0, 0 },
    {"detach",           0,  POPT_ARG_NONE,   0, OPT_DAEMON, 0, 0 },
    {"no-detach",        0,  POPT_ARG_NONE,   0, OPT_DAEMON, 0, 0 },
@@ -2549,7 +2549,7 @@ diff --git a/options.c b/options.c
    {0,0,0,0, 0, 0, 0}
  };
  
-@@ -1078,6 +1102,39 @@ static struct poptOption long_daemon_options[] = {
+@@ -1086,6 +1110,39 @@ static struct poptOption long_daemon_options[] = {
    {0,0,0,0, 0, 0, 0}
  };
  
@@ -2589,7 +2589,7 @@ diff --git a/options.c b/options.c
  
  static char err_buf[200];
  
-@@ -1203,6 +1260,8 @@ static void set_refuse_options(void)
+@@ -1211,6 +1268,8 @@ static void set_refuse_options(void)
                        parse_one_refuse_match(0, "iconv", list_end);
  #endif
                parse_one_refuse_match(0, "log-file*", list_end);
@@ -2598,7 +2598,7 @@ diff --git a/options.c b/options.c
        }
  
  #ifndef SUPPORT_ATIMES
-@@ -1510,6 +1569,102 @@ static void create_refuse_error(int which)
+@@ -1518,6 +1577,102 @@ static void create_refuse_error(int which)
                snprintf(err_buf + n, sizeof err_buf - n, " (-%c)\n", op->shortName);
  }
  
@@ -2701,7 +2701,7 @@ diff --git a/options.c b/options.c
  /* This is used to make sure that --daemon & --server cannot be aliased to
   * something else. These options have always disabled popt aliases for the
   * parsing of a daemon or server command-line, but we have to make sure that
-@@ -1566,6 +1721,12 @@ int parse_arguments(int *argc_p, const char ***argv_p)
+@@ -1574,6 +1729,12 @@ int parse_arguments(int *argc_p, const char ***argv_p)
                return 0;
        }
  
@@ -2714,7 +2714,7 @@ diff --git a/options.c b/options.c
        set_refuse_options();
  
  #ifdef ICONV_OPTION
-@@ -1684,6 +1845,12 @@ int parse_arguments(int *argc_p, const char ***argv_p)
+@@ -1692,6 +1853,12 @@ int parse_arguments(int *argc_p, const char ***argv_p)
                        am_daemon = 1;
                        return 1;
  
@@ -2727,7 +2727,7 @@ diff --git a/options.c b/options.c
                case OPT_MODIFY_WINDOW:
                        /* The value has already been set by popt, but
                         * we need to remember that we're using a
-@@ -1756,6 +1923,10 @@ int parse_arguments(int *argc_p, const char ***argv_p)
+@@ -1764,6 +1931,10 @@ int parse_arguments(int *argc_p, const char ***argv_p)
                        preserve_devices = preserve_specials = 0;
                        break;
  
@@ -2837,7 +2837,7 @@ diff --git a/receiver.c b/receiver.c
 diff --git a/rsync.1.md b/rsync.1.md
 --- a/rsync.1.md
 +++ b/rsync.1.md
-@@ -383,6 +383,9 @@ detailed description below for a complete description.
+@@ -384,6 +384,9 @@ detailed description below for a complete description.
  --dry-run, -n            perform a trial run with no changes made
  --whole-file, -W         copy files whole (w/o delta-xfer algorithm)
  --checksum-choice=STR    choose the checksum algorithm (aka --cc)
index 0a383f4029fe16c8c26dd240393ee49038684503..5df0843650d5ebc8b0be7f4618a29a7b4006d395 100644 (file)
@@ -38,7 +38,7 @@ TODO:
   a file that can't use it, while missing out on giving it to a file
   that could use it.
 
-based-on: 194cee671d5e178f20c4494f41911fa8db942935
+based-on: c3cf174e5ed52e709ecdfd65c7d5da34c7574b96
 diff --git a/backup.c b/backup.c
 --- a/backup.c
 +++ b/backup.c
@@ -62,7 +62,7 @@ diff --git a/compat.c b/compat.c
  extern int protect_args;
  extern int preserve_uid;
  extern int preserve_gid;
-@@ -156,6 +157,7 @@ void set_allow_inc_recurse(void)
+@@ -159,6 +160,7 @@ void set_allow_inc_recurse(void)
                allow_inc_recurse = 0;
        else if (!am_sender
         && (delete_before || delete_after
@@ -132,7 +132,7 @@ diff --git a/delete.c b/delete.c
 diff --git a/flist.c b/flist.c
 --- a/flist.c
 +++ b/flist.c
-@@ -63,6 +63,7 @@ extern int non_perishable_cnt;
+@@ -64,6 +64,7 @@ extern int non_perishable_cnt;
  extern int prune_empty_dirs;
  extern int copy_links;
  extern int copy_unsafe_links;
@@ -140,7 +140,7 @@ diff --git a/flist.c b/flist.c
  extern int protocol_version;
  extern int sanitize_paths;
  extern int munge_symlinks;
-@@ -129,6 +130,8 @@ static int64 tmp_dev = -1, tmp_ino;
+@@ -130,6 +131,8 @@ static int64 tmp_dev = -1, tmp_ino;
  #endif
  static char tmp_sum[MAX_DIGEST_LEN];
  
@@ -149,7 +149,7 @@ diff --git a/flist.c b/flist.c
  static char empty_sum[MAX_DIGEST_LEN];
  static int flist_count_offset; /* for --delete --progress */
  static int show_filelist_progress;
-@@ -275,6 +278,45 @@ static inline int is_excluded(const char *fname, int is_dir, int filter_level)
+@@ -277,6 +280,45 @@ static inline int is_excluded(const char *fname, int is_dir, int filter_level)
        return name_is_excluded(fname, is_dir ? NAME_IS_DIR : NAME_IS_FILE, filter_level);
  }
  
@@ -195,7 +195,7 @@ diff --git a/flist.c b/flist.c
  static void send_directory(int f, struct file_list *flist,
                           char *fbuf, int len, int flags);
  
-@@ -2623,6 +2665,23 @@ struct file_list *recv_file_list(int f, int dir_ndx)
+@@ -2674,6 +2716,23 @@ struct file_list *recv_file_list(int f, int dir_ndx)
         * for a non-relative transfer in recv_file_entry(). */
        flist_sort_and_clean(flist, relative_paths);
  
@@ -474,7 +474,7 @@ diff --git a/generator.c b/generator.c
  static inline int mtime_differs(STRUCT_STAT *stp, struct file_struct *file)
  {
  #ifdef ST_MTIME_NSEC
-@@ -1164,6 +1305,7 @@ static void list_file_entry(struct file_struct *f)
+@@ -1187,6 +1328,7 @@ static void list_file_entry(struct file_struct *f)
        }
  }
  
@@ -482,7 +482,7 @@ diff --git a/generator.c b/generator.c
  static int phase = 0;
  static int dflt_perms;
  
-@@ -1294,7 +1436,7 @@ static void recv_generator(char *fname, struct file_struct *file, int ndx,
+@@ -1323,7 +1465,7 @@ static void recv_generator(char *fname, struct file_struct *file, int ndx,
                         && do_stat(dn, &sx.st) < 0) {
                                if (dry_run)
                                        goto parent_is_dry_missing;
@@ -491,7 +491,7 @@ diff --git a/generator.c b/generator.c
                                        rsyserr(FERROR_XFER, errno,
                                                "recv_generator: mkdir %s failed",
                                                full_fname(dn));
-@@ -1430,7 +1572,7 @@ static void recv_generator(char *fname, struct file_struct *file, int ndx,
+@@ -1459,7 +1601,7 @@ static void recv_generator(char *fname, struct file_struct *file, int ndx,
                }
                if (real_ret != 0 && do_mkdir(fname,file->mode|added_perms) < 0 && errno != EEXIST) {
                        if (!relative_paths || errno != ENOENT
@@ -500,7 +500,7 @@ diff --git a/generator.c b/generator.c
                         || (do_mkdir(fname, file->mode|added_perms) < 0 && errno != EEXIST)) {
                                rsyserr(FERROR_XFER, errno,
                                        "recv_generator: mkdir %s failed",
-@@ -1478,9 +1620,12 @@ static void recv_generator(char *fname, struct file_struct *file, int ndx,
+@@ -1507,9 +1649,12 @@ static void recv_generator(char *fname, struct file_struct *file, int ndx,
                }
                else if (delete_during && f_out != -1 && !phase
                    && !(file->flags & FLAG_MISSING_DIR)) {
@@ -516,7 +516,7 @@ diff --git a/generator.c b/generator.c
                                change_local_filter_dir(fname, strlen(fname), F_DEPTH(file));
                }
                prior_dir_file = file;
-@@ -1757,8 +1902,14 @@ static void recv_generator(char *fname, struct file_struct *file, int ndx,
+@@ -1786,8 +1931,14 @@ static void recv_generator(char *fname, struct file_struct *file, int ndx,
                        goto cleanup;
                }
  #endif
@@ -532,7 +532,7 @@ diff --git a/generator.c b/generator.c
                rsyserr(FERROR_XFER, stat_errno, "recv_generator: failed to stat %s",
                        full_fname(fname));
                goto cleanup;
-@@ -2222,6 +2373,12 @@ void generate_files(int f_out, const char *local_name)
+@@ -2251,6 +2402,12 @@ void generate_files(int f_out, const char *local_name)
        if (DEBUG_GTE(GENR, 1))
                rprintf(FINFO, "generator starting pid=%d\n", (int)getpid());
  
@@ -545,7 +545,7 @@ diff --git a/generator.c b/generator.c
        if (delete_before && !solo_file && cur_flist->used > 0)
                do_delete_pass();
        if (delete_during == 2) {
-@@ -2230,7 +2387,7 @@ void generate_files(int f_out, const char *local_name)
+@@ -2259,7 +2416,7 @@ void generate_files(int f_out, const char *local_name)
        }
        info_levels[INFO_FLIST] = info_levels[INFO_PROGRESS] = 0;
  
@@ -554,7 +554,7 @@ diff --git a/generator.c b/generator.c
                whole_file = 0;
        if (DEBUG_GTE(FLIST, 1)) {
                rprintf(FINFO, "delta-transmission %s\n",
-@@ -2266,7 +2423,7 @@ void generate_files(int f_out, const char *local_name)
+@@ -2295,7 +2452,7 @@ void generate_files(int f_out, const char *local_name)
                                                dirdev = MAKEDEV(DEV_MAJOR(devp), DEV_MINOR(devp));
                                        } else
                                                dirdev = MAKEDEV(0, 0);
@@ -563,7 +563,7 @@ diff --git a/generator.c b/generator.c
                                } else
                                        change_local_filter_dir(fbuf, strlen(fbuf), F_DEPTH(fp));
                        }
-@@ -2313,7 +2470,21 @@ void generate_files(int f_out, const char *local_name)
+@@ -2342,7 +2499,21 @@ void generate_files(int f_out, const char *local_name)
        } while ((cur_flist = cur_flist->next) != NULL);
  
        if (delete_during)
@@ -589,7 +589,7 @@ diff --git a/generator.c b/generator.c
 diff --git a/options.c b/options.c
 --- a/options.c
 +++ b/options.c
-@@ -87,6 +87,7 @@ int am_server = 0;
+@@ -88,6 +88,7 @@ int am_server = 0;
  int am_sender = 0;
  int am_starting_up = 1;
  int relative_paths = -1;
@@ -597,7 +597,7 @@ diff --git a/options.c b/options.c
  int implied_dirs = 1;
  int missing_args = 0; /* 0 = FERROR_XFER, 1 = ignore, 2 = delete */
  int numeric_ids = 0;
-@@ -932,6 +933,7 @@ static struct poptOption long_options[] = {
+@@ -954,6 +955,7 @@ static struct poptOption long_options[] = {
    {"compare-dest",     0,  POPT_ARG_STRING, 0, OPT_COMPARE_DEST, 0, 0 },
    {"copy-dest",        0,  POPT_ARG_STRING, 0, OPT_COPY_DEST, 0, 0 },
    {"link-dest",        0,  POPT_ARG_STRING, 0, OPT_LINK_DEST, 0, 0 },
@@ -605,7 +605,7 @@ diff --git a/options.c b/options.c
    {"fuzzy",           'y', POPT_ARG_NONE,   0, 'y', 0, 0 },
    {"no-fuzzy",         0,  POPT_ARG_VAL,    &fuzzy_basis, 0, 0, 0 },
    {"no-y",             0,  POPT_ARG_VAL,    &fuzzy_basis, 0, 0, 0 },
-@@ -2344,7 +2346,7 @@ int parse_arguments(int *argc_p, const char ***argv_p)
+@@ -2561,7 +2563,7 @@ int parse_arguments(int *argc_p, const char ***argv_p)
                inplace = 1;
        }
  
@@ -614,7 +614,7 @@ diff --git a/options.c b/options.c
                partial_dir = tmp_partialdir;
  
        if (inplace) {
-@@ -2353,6 +2355,7 @@ int parse_arguments(int *argc_p, const char ***argv_p)
+@@ -2570,6 +2572,7 @@ int parse_arguments(int *argc_p, const char ***argv_p)
                        snprintf(err_buf, sizeof err_buf,
                                 "--%s cannot be used with --%s\n",
                                 append_mode ? "append" : "inplace",
@@ -622,7 +622,7 @@ diff --git a/options.c b/options.c
                                 delay_updates ? "delay-updates" : "partial-dir");
                        return 0;
                }
-@@ -2755,6 +2758,8 @@ void server_options(char **args, int *argc_p)
+@@ -2982,6 +2985,8 @@ void server_options(char **args, int *argc_p)
                        args[ac++] = "--super";
                if (size_only)
                        args[ac++] = "--size-only";
@@ -646,7 +646,7 @@ diff --git a/receiver.c b/receiver.c
 diff --git a/rsync.1.md b/rsync.1.md
 --- a/rsync.1.md
 +++ b/rsync.1.md
-@@ -419,6 +419,7 @@ detailed description below for a complete description.
+@@ -421,6 +421,7 @@ detailed description below for a complete description.
  --modify-window=NUM, -@  set the accuracy for mod-time comparisons
  --temp-dir=DIR, -T       create temporary files in directory DIR
  --fuzzy, -y              find similar file for basis if no dest file
@@ -654,7 +654,7 @@ diff --git a/rsync.1.md b/rsync.1.md
  --compare-dest=DIR       also compare destination files relative to DIR
  --copy-dest=DIR          ... and include copies of unchanged files
  --link-dest=DIR          hardlink to files in DIR when unchanged
-@@ -2198,6 +2199,22 @@ your home directory (remove the '=' for that).
+@@ -2237,6 +2238,22 @@ your home directory (remove the '=' for that).
      fuzzy-match files, so either use `--delete-after` or specify some filename
      exclusions if you need to prevent this.
  
@@ -680,7 +680,7 @@ diff --git a/rsync.1.md b/rsync.1.md
 diff --git a/rsync.h b/rsync.h
 --- a/rsync.h
 +++ b/rsync.h
-@@ -270,7 +270,7 @@ enum msgcode {
+@@ -272,7 +272,7 @@ enum msgcode {
  #define NDX_DEL_STATS -3
  #define NDX_FLIST_OFFSET -101
  
@@ -689,7 +689,7 @@ diff --git a/rsync.h b/rsync.h
  #define DEL_NO_UID_WRITE      (1<<0) /* file/dir has our uid w/o write perm */
  #define DEL_RECURSE           (1<<1) /* if dir, delete all contents */
  #define DEL_DIR_IS_EMPTY      (1<<2) /* internal delete_FUNCTIONS use only */
-@@ -280,6 +280,7 @@ enum msgcode {
+@@ -282,6 +282,7 @@ enum msgcode {
  #define DEL_FOR_DEVICE                (1<<6) /* making room for a replacement device */
  #define DEL_FOR_SPECIAL       (1<<7) /* making room for a replacement special */
  #define DEL_FOR_BACKUP                (1<<8) /* the delete is for a backup operation */
index b2ea56aea815187c6ba3e566558fbd79da210759..5a4c8141fde707f4e3e4b2564d689d57f8370afc 100644 (file)
@@ -7,7 +7,7 @@ To use this patch, run these commands for a successful build:
     ./configure                         (optional if already run)
     make
 
-based-on: 974f49e22ac9f62fcfd750768d0835b900524578
+based-on: c3cf174e5ed52e709ecdfd65c7d5da34c7574b96
 diff --git a/compat.c b/compat.c
 --- a/compat.c
 +++ b/compat.c
@@ -331,15 +331,15 @@ diff --git a/main.c b/main.c
  
  extern int dry_run;
  extern int list_only;
-@@ -57,6 +60,7 @@ extern int copy_unsafe_links;
- extern int keep_dirlinks;
- extern int preserve_hard_links;
- extern int protocol_version;
+@@ -48,6 +51,7 @@ extern int called_from_signal_handler;
+ extern int need_messages_from_generator;
+ extern int kluge_around_eof;
+ extern int got_xfer_error;
 +extern int force_change;
- extern int file_total;
- extern int recurse;
- extern int xfer_dirs;
-@@ -947,6 +951,22 @@ static int do_recv(int f_in, int f_out, char *local_name)
+ extern int msgs2stderr;
+ extern int module_id;
+ extern int read_only;
+@@ -965,6 +969,22 @@ static int do_recv(int f_in, int f_out, char *local_name)
         * points to an identical file won't be replaced by the referent. */
        copy_links = copy_dirlinks = copy_unsafe_links = 0;
  
@@ -374,14 +374,14 @@ diff --git a/options.c b/options.c
  int preserve_devices = 0;
  int preserve_specials = 0;
 @@ -94,6 +95,7 @@ int numeric_ids = 0;
- int msgs2stderr = 0;
+ int msgs2stderr = 2; /* Default: send errors to stderr for local & remote-shell transfers */
  int allow_8bit_chars = 0;
  int force_delete = 0;
 +int force_change = 0;
  int io_timeout = 0;
  int prune_empty_dirs = 0;
  int use_qsort = 0;
-@@ -676,6 +678,11 @@ static void print_info_flags(enum logcode f)
+@@ -682,6 +684,11 @@ static void print_info_flags(enum logcode f)
  #endif
                        "crtimes",
  
@@ -393,7 +393,7 @@ diff --git a/options.c b/options.c
        "*Optimizations",
  
  #ifndef HAVE_SIMD
-@@ -829,6 +836,8 @@ static struct poptOption long_options[] = {
+@@ -835,6 +842,8 @@ static struct poptOption long_options[] = {
    {"perms",           'p', POPT_ARG_VAL,    &preserve_perms, 1, 0, 0 },
    {"no-perms",         0,  POPT_ARG_VAL,    &preserve_perms, 0, 0, 0 },
    {"no-p",             0,  POPT_ARG_VAL,    &preserve_perms, 0, 0, 0 },
@@ -402,7 +402,7 @@ diff --git a/options.c b/options.c
    {"executability",   'E', POPT_ARG_NONE,   &preserve_executability, 0, 0, 0 },
    {"acls",            'A', POPT_ARG_NONE,   0, 'A', 0, 0 },
    {"no-acls",          0,  POPT_ARG_VAL,    &preserve_acls, 0, 0, 0 },
-@@ -926,6 +935,12 @@ static struct poptOption long_options[] = {
+@@ -932,6 +941,12 @@ static struct poptOption long_options[] = {
    {"remove-source-files",0,POPT_ARG_VAL,    &remove_source_files, 1, 0, 0 },
    {"force",            0,  POPT_ARG_VAL,    &force_delete, 1, 0, 0 },
    {"no-force",         0,  POPT_ARG_VAL,    &force_delete, 0, 0, 0 },
@@ -415,7 +415,7 @@ diff --git a/options.c b/options.c
    {"ignore-errors",    0,  POPT_ARG_VAL,    &ignore_errors, 1, 0, 0 },
    {"no-ignore-errors", 0,  POPT_ARG_VAL,    &ignore_errors, 0, 0, 0 },
    {"max-delete",       0,  POPT_ARG_INT,    &max_delete, 0, 0, 0 },
-@@ -1223,6 +1238,14 @@ static void set_refuse_options(void)
+@@ -1231,6 +1246,14 @@ static void set_refuse_options(void)
  #ifndef SUPPORT_CRTIMES
        parse_one_refuse_match(0, "crtimes", list_end);
  #endif
@@ -430,7 +430,7 @@ diff --git a/options.c b/options.c
  
        /* Now we use the descrip values to actually mark the options for refusal. */
        for (op = long_options; op != list_end; op++) {
-@@ -2860,6 +2883,9 @@ void server_options(char **args, int *argc_p)
+@@ -2868,6 +2891,9 @@ void server_options(char **args, int *argc_p)
        if (xfer_dirs && !recurse && delete_mode && am_sender)
                args[ac++] = "--no-r";
  
@@ -440,7 +440,7 @@ diff --git a/options.c b/options.c
        if (do_compression && do_compression_level != CLVL_NOT_SPECIFIED) {
                if (asprintf(&arg, "--compress-level=%d", do_compression_level) < 0)
                        goto oom;
-@@ -2963,6 +2989,16 @@ void server_options(char **args, int *argc_p)
+@@ -2976,6 +3002,16 @@ void server_options(char **args, int *argc_p)
                        args[ac++] = "--delete-excluded";
                if (force_delete)
                        args[ac++] = "--force";
@@ -460,7 +460,7 @@ diff --git a/options.c b/options.c
 diff --git a/rsync.1.md b/rsync.1.md
 --- a/rsync.1.md
 +++ b/rsync.1.md
-@@ -360,6 +360,7 @@ detailed description below for a complete description.
+@@ -361,6 +361,7 @@ detailed description below for a complete description.
  --keep-dirlinks, -K      treat symlinked dir on receiver as dir
  --hard-links, -H         preserve hard links
  --perms, -p              preserve permissions
@@ -468,7 +468,7 @@ diff --git a/rsync.1.md b/rsync.1.md
  --executability, -E      preserve executability
  --chmod=CHMOD            affect file and/or directory permissions
  --acls, -A               preserve ACLs (implies --perms)
-@@ -400,7 +401,10 @@ detailed description below for a complete description.
+@@ -401,7 +402,10 @@ detailed description below for a complete description.
  --ignore-missing-args    ignore missing source args without error
  --delete-missing-args    delete missing source args from destination
  --ignore-errors          delete even if there are I/O errors
@@ -480,7 +480,7 @@ diff --git a/rsync.1.md b/rsync.1.md
  --max-delete=NUM         don't delete more than NUM files
  --max-size=SIZE          don't transfer any file larger than SIZE
  --min-size=SIZE          don't transfer any file smaller than SIZE
-@@ -703,6 +707,8 @@ your home directory (remove the '=' for that).
+@@ -708,6 +712,8 @@ your home directory (remove the '=' for that).
  
      Note that `-a` **does not preserve hardlinks**, because finding
      multiply-linked files is expensive.  You must separately specify `-H`.
@@ -489,7 +489,7 @@ diff --git a/rsync.1.md b/rsync.1.md
  
  0.  `--no-OPTION`
  
-@@ -1041,7 +1047,7 @@ your home directory (remove the '=' for that).
+@@ -1066,7 +1072,7 @@ your home directory (remove the '=' for that).
      Without this option, if the sending side has replaced a directory with a
      symlink to a directory, the receiving side will delete anything that is in
      the way of the new symlink, including a directory hierarchy (as long as
@@ -498,7 +498,7 @@ diff --git a/rsync.1.md b/rsync.1.md
  
      See also `--keep-dirlinks` for an analogous option for the receiving side.
  
-@@ -1227,6 +1233,29 @@ your home directory (remove the '=' for that).
+@@ -1252,6 +1258,29 @@ your home directory (remove the '=' for that).
      those used by `--fake-super`) unless you repeat the option (e.g. `-XX`).
      This "copy all xattrs" mode cannot be used with `--fake-super`.
  
@@ -528,7 +528,7 @@ diff --git a/rsync.1.md b/rsync.1.md
  0.  `--chmod=CHMOD`
  
      This option tells rsync to apply one or more comma-separated "chmod" modes
-@@ -1694,7 +1723,7 @@ your home directory (remove the '=' for that).
+@@ -1719,7 +1748,7 @@ your home directory (remove the '=' for that).
      option a step farther: each missing arg will become a deletion request of
      the corresponding destination file on the receiving side (should it exist).
      If the destination file is a non-empty directory, it will only be
@@ -537,7 +537,7 @@ diff --git a/rsync.1.md b/rsync.1.md
      that, this option is independent of any other type of delete processing.
  
      The missing source files are represented by special file-list entries which
-@@ -1705,15 +1734,16 @@ your home directory (remove the '=' for that).
+@@ -1730,15 +1759,16 @@ your home directory (remove the '=' for that).
      Tells `--delete` to go ahead and delete files even when there are I/O
      errors.
  
@@ -558,7 +558,7 @@ diff --git a/rsync.1.md b/rsync.1.md
  
  0.  `--max-delete=NUM`
  
-@@ -2626,7 +2656,7 @@ your home directory (remove the '=' for that).
+@@ -2651,7 +2681,7 @@ your home directory (remove the '=' for that).
      output of other verbose messages).
  
      The "%i" escape has a cryptic output that is 11 letters long.  The general