The patches for 3.2.4pre1. v3.2.4pre1
authorWayne Davison <wayne@opencoder.net>
Sun, 2 Jan 2022 23:57:19 +0000 (15:57 -0800)
committerWayne Davison <wayne@opencoder.net>
Sun, 2 Jan 2022 23:57:19 +0000 (15:57 -0800)
31 files changed:
backup-deleted.diff
backup-dir-dels.diff
catch_crash_signals.diff
checksum-reading.diff
checksum-updating.diff
checksum-xattr.diff
clone-dest.diff
congestion.diff
copy-devices.diff
date-only.diff
db.diff
detect-renamed-lax.diff
detect-renamed.diff
direct-io.diff
downdate.diff
fileflags.diff
filter-attribute-mods.diff
hfs-compression.diff
ignore-case.diff
kerberos.diff
link-by-hash.diff
md5p8.diff
omit-dir-changes.diff
slow-down.diff
slp.diff
soften-links.diff
source-backup.diff
source-filter_dest-filter.diff
sparse-block.diff
transliterate.diff
xxh3-safety-check.diff

index f72d34908d8bc3b9d78ead353d1e8e714041c180..1bd97c2dd84c5736c84d46401c3c083f2f2d0750 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: 3008e7c2269936672d796d95b85b285fc07adc01
+based-on: 3e44bbd3132c22f7ce1ae48c0ce262f237473038
 diff --git a/generator.c b/generator.c
 --- a/generator.c
 +++ b/generator.c
@@ -41,7 +41,7 @@ diff --git a/generator.c b/generator.c
 diff --git a/options.c b/options.c
 --- a/options.c
 +++ b/options.c
-@@ -768,7 +768,8 @@ static struct poptOption long_options[] = {
+@@ -769,7 +769,8 @@ static struct poptOption long_options[] = {
    {"no-i",             0,  POPT_ARG_VAL,    &itemize_changes, 0, 0, 0 },
    {"bwlimit",          0,  POPT_ARG_STRING, &bwlimit_arg, OPT_BWLIMIT, 0, 0 },
    {"no-bwlimit",       0,  POPT_ARG_VAL,    &bwlimit, 0, 0, 0 },
@@ -51,7 +51,7 @@ diff --git a/options.c b/options.c
    {"no-backup",        0,  POPT_ARG_VAL,    &make_backups, 0, 0, 0 },
    {"backup-dir",       0,  POPT_ARG_STRING, &backup_dir, 0, 0, 0 },
    {"suffix",           0,  POPT_ARG_STRING, &backup_suffix, 0, 0, 0 },
-@@ -2682,6 +2683,10 @@ void server_options(char **args, int *argc_p)
+@@ -2687,6 +2688,10 @@ void server_options(char **args, int *argc_p)
        }
  
        if (am_sender) {
@@ -94,7 +94,7 @@ diff --git a/rsync.1.md b/rsync.1.md
  --backup-dir=DIR         make backups into hierarchy based in DIR
  --suffix=SUFFIX          backup suffix (default ~ w/o --backup-dir)
  --update, -u             skip files that are newer on the receiver
-@@ -861,6 +862,13 @@ your home directory (remove the '=' for that).
+@@ -873,6 +874,13 @@ your home directory (remove the '=' for that).
      trailing inclusion/exclusion of `*`, the auto-added rule would never be
      reached).
  
index 2a2f111539d1c3a3f62477d5ecdb28d5bc490024..867f920052b7ee53817946da2f95ee7abd080eb8 100644 (file)
@@ -204,7 +204,7 @@ diff --git a/delete.c b/delete.c
 diff --git a/options.c b/options.c
 --- a/options.c
 +++ b/options.c
-@@ -160,10 +160,14 @@ int no_detach
+@@ -161,10 +161,14 @@ int no_detach
  int write_batch = 0;
  int read_batch = 0;
  int backup_dir_len = 0;
@@ -219,7 +219,7 @@ diff --git a/options.c b/options.c
  char *tmpdir = NULL;
  char *partial_dir = NULL;
  char *basis_dir[MAX_BASIS_DIRS+1];
-@@ -176,7 +180,9 @@ char *password_file = NULL;
+@@ -177,7 +181,9 @@ char *password_file = NULL;
  char *early_input_file = NULL;
  char *rsync_path = RSYNC_PATH;
  char *backup_dir = NULL;
@@ -229,7 +229,7 @@ diff --git a/options.c b/options.c
  char *sockopts = NULL;
  char *usermap = NULL;
  char *groupmap = NULL;
-@@ -772,7 +778,9 @@ static struct poptOption long_options[] = {
+@@ -773,7 +779,9 @@ static struct poptOption long_options[] = {
    {"backup-deleted",   0,  POPT_ARG_VAL,    &make_backups, 1, 0, 0 },
    {"no-backup",        0,  POPT_ARG_VAL,    &make_backups, 0, 0, 0 },
    {"backup-dir",       0,  POPT_ARG_STRING, &backup_dir, 0, 0, 0 },
@@ -239,7 +239,7 @@ diff --git a/options.c b/options.c
    {"list-only",        0,  POPT_ARG_VAL,    &list_only, 2, 0, 0 },
    {"read-batch",       0,  POPT_ARG_STRING, &batch_name, OPT_READ_BATCH, 0, 0 },
    {"write-batch",      0,  POPT_ARG_STRING, &batch_name, OPT_WRITE_BATCH, 0, 0 },
-@@ -2194,6 +2202,8 @@ int parse_arguments(int *argc_p, const char ***argv_p)
+@@ -2199,6 +2207,8 @@ int parse_arguments(int *argc_p, const char ***argv_p)
                        tmpdir = sanitize_path(NULL, tmpdir, NULL, 0, SP_DEFAULT);
                if (backup_dir)
                        backup_dir = sanitize_path(NULL, backup_dir, NULL, 0, SP_DEFAULT);
@@ -248,7 +248,7 @@ diff --git a/options.c b/options.c
        }
        if (daemon_filter_list.head && !am_sender) {
                filter_rule_list *elp = &daemon_filter_list;
-@@ -2215,6 +2225,14 @@ int parse_arguments(int *argc_p, const char ***argv_p)
+@@ -2220,6 +2230,14 @@ int parse_arguments(int *argc_p, const char ***argv_p)
                        if (check_filter(elp, FLOG, dir, 1) < 0)
                                goto options_rejected;
                }
@@ -263,7 +263,7 @@ diff --git a/options.c b/options.c
        }
  
        if (!backup_suffix)
-@@ -2226,6 +2244,20 @@ int parse_arguments(int *argc_p, const char ***argv_p)
+@@ -2231,6 +2249,20 @@ int parse_arguments(int *argc_p, const char ***argv_p)
                        backup_suffix);
                return 0;
        }
@@ -284,7 +284,7 @@ diff --git a/options.c b/options.c
        if (backup_dir) {
                size_t len;
                make_backups = 1; /* --backup-dir implies --backup */
-@@ -2262,6 +2294,34 @@ int parse_arguments(int *argc_p, const char ***argv_p)
+@@ -2267,6 +2299,34 @@ int parse_arguments(int *argc_p, const char ***argv_p)
                        "P *%s", backup_suffix);
                parse_filter_str(&filter_list, backup_dir_buf, rule_template(0), 0);
        }
@@ -319,7 +319,7 @@ diff --git a/options.c b/options.c
  
        if (make_backups && !backup_dir)
                omit_dir_times = -1; /* Implied, so avoid -O to sender. */
-@@ -2657,6 +2717,10 @@ void server_options(char **args, int *argc_p)
+@@ -2662,6 +2722,10 @@ void server_options(char **args, int *argc_p)
                args[ac++] = "--backup-dir";
                args[ac++] = backup_dir;
        }
@@ -330,7 +330,7 @@ diff --git a/options.c b/options.c
  
        /* Only send --suffix if it specifies a non-default value. */
        if (strcmp(backup_suffix, backup_dir ? "" : BACKUP_SUFFIX) != 0) {
-@@ -2665,6 +2729,14 @@ void server_options(char **args, int *argc_p)
+@@ -2670,6 +2734,14 @@ void server_options(char **args, int *argc_p)
                        goto oom;
                args[ac++] = arg;
        }
index 90a5d56eea652258672c78b9bb9c32babdce2dc2..339a2a1cad5844c675c4b26cf42860a5b3c0785b 100644 (file)
@@ -25,7 +25,7 @@ To use this patch, run these commands for a successful build:
     ./configure                                  (optional if already run)
     make
 
-based-on: 3008e7c2269936672d796d95b85b285fc07adc01
+based-on: 3e44bbd3132c22f7ce1ae48c0ce262f237473038
 diff --git a/errcode.h b/errcode.h
 --- a/errcode.h
 +++ b/errcode.h
index ca89b933bb2936334106ba3ccd2c9ba1ca3ca114..97e8961eaea787c2c50e79a7005b7fa0be0fa482 100644 (file)
@@ -16,7 +16,7 @@ To use this patch, run these commands for a successful build:
     ./configure                               (optional if already run)
     make
 
-based-on: 3008e7c2269936672d796d95b85b285fc07adc01
+based-on: 3e44bbd3132c22f7ce1ae48c0ce262f237473038
 diff --git a/clientserver.c b/clientserver.c
 --- a/clientserver.c
 +++ b/clientserver.c
@@ -502,6 +502,15 @@ diff --git a/generator.c b/generator.c
                        continue;
                if (match_level == 1) {
                        best_match = j;
+@@ -1076,7 +1080,7 @@ static int try_dests_non(struct file_struct *file, char *fname, int ndx,
+                       match_level = 1;
+                       best_match = j;
+               }
+-              if (!quick_check_ok(ftype, cmpbuf, file, &sxp->st))
++              if (!quick_check_ok(ftype, cmpbuf, file, &sxp->st, j+1))
+                       continue;
+               if (match_level < 2) {
+                       match_level = 2;
 @@ -1212,7 +1216,7 @@ static void recv_generator(char *fname, struct file_struct *file, int ndx,
         * --ignore-non-existing, daemon exclude, or mkdir failure. */
        static struct file_struct *skip_dir = NULL;
@@ -548,6 +557,33 @@ diff --git a/generator.c b/generator.c
                statret = link_stat(fname, &sx.st, keep_dirlinks && is_dir);
                stat_errno = errno;
        }
+@@ -1384,7 +1407,7 @@ static void recv_generator(char *fname, struct file_struct *file, int ndx,
+                       if (INFO_GTE(SKIP, 2)) {
+                               if (ftype != stype)
+                                       suf = " (type change)";
+-                              else if (!quick_check_ok(ftype, fname, file, &sx.st))
++                              else if (!quick_check_ok(ftype, fname, file, &sx.st, 0))
+                                       suf = always_checksum ? " (sum change)" : " (file change)";
+                               else if (!unchanged_attrs(fname, file, &sx))
+                                       suf = " (attr change)";
+@@ -1555,7 +1578,7 @@ static void recv_generator(char *fname, struct file_struct *file, int ndx,
+                       goto cleanup;
+               }
+               if (statret == 0) {
+-                      if (stype == FT_SYMLINK && quick_check_ok(stype, fname, file, &sx.st)) {
++                      if (stype == FT_SYMLINK && quick_check_ok(stype, fname, file, &sx.st, 0)) {
+                               /* The link is pointing to the right place. */
+                               set_file_attrs(fname, file, &sx, NULL, maybe_ATTRS_REPORT);
+                               if (itemizing)
+@@ -1624,7 +1647,7 @@ static void recv_generator(char *fname, struct file_struct *file, int ndx,
+               if (statret == 0) {
+                       if (ftype != stype)
+                               statret = -1;
+-                      else if (quick_check_ok(ftype, fname, file, &sx.st)) {
++                      else if (quick_check_ok(ftype, fname, file, &sx.st, 0)) {
+                               /* The device or special file is identical. */
+                               set_file_attrs(fname, file, &sx, NULL, maybe_ATTRS_REPORT);
+                               if (itemizing)
 @@ -1749,22 +1772,6 @@ static void recv_generator(char *fname, struct file_struct *file, int ndx,
                partialptr = NULL;
  
@@ -612,7 +648,7 @@ diff --git a/loadparm.c b/loadparm.c
 diff --git a/options.c b/options.c
 --- a/options.c
 +++ b/options.c
-@@ -120,6 +120,7 @@ size_t bwlimit_writemax = 0;
+@@ -121,6 +121,7 @@ size_t bwlimit_writemax = 0;
  int ignore_existing = 0;
  int ignore_non_existing = 0;
  int need_messages_from_generator = 0;
@@ -620,7 +656,7 @@ diff --git a/options.c b/options.c
  int max_delete = INT_MIN;
  OFF_T max_size = -1;
  OFF_T min_size = -1;
-@@ -575,7 +576,7 @@ enum {OPT_SERVER = 1000, OPT_DAEMON, OPT_SENDER, OPT_EXCLUDE, OPT_EXCLUDE_FROM,
+@@ -576,7 +577,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,
@@ -629,7 +665,7 @@ diff --git a/options.c b/options.c
        OPT_OLD_COMPRESS, OPT_NEW_COMPRESS, OPT_NO_COMPRESS,
        OPT_STOP_AFTER, OPT_STOP_AT,
        OPT_REFUSED_BASE = 9000};
-@@ -731,6 +732,7 @@ static struct poptOption long_options[] = {
+@@ -732,6 +733,7 @@ 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 },
@@ -637,7 +673,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 },
-@@ -1725,6 +1727,23 @@ int parse_arguments(int *argc_p, const char ***argv_p)
+@@ -1726,6 +1728,23 @@ int parse_arguments(int *argc_p, const char ***argv_p)
                        }
                        break;
  
@@ -661,7 +697,7 @@ diff --git a/options.c b/options.c
                case OPT_INFO:
                        arg = poptGetOptArg(pc);
                        parse_output_words(info_words, info_levels, arg, USER_PRIORITY);
-@@ -2059,6 +2078,9 @@ int parse_arguments(int *argc_p, const char ***argv_p)
+@@ -2064,6 +2083,9 @@ int parse_arguments(int *argc_p, const char ***argv_p)
        }
  #endif
  
@@ -682,7 +718,7 @@ diff --git a/rsync.1.md b/rsync.1.md
  --archive, -a            archive mode is -rlptgoD (no -A,-X,-U,-N,-H)
  --no-OPTION              turn off an implied OPTION (e.g. --no-D)
  --recursive, -r          recurse into directories
-@@ -703,6 +704,8 @@ your home directory (remove the '=' for that).
+@@ -715,6 +716,8 @@ your home directory (remove the '=' for that).
      file that has the same size as the corresponding sender's file: files with
      either a changed size or a changed checksum are selected for transfer.
  
@@ -691,7 +727,7 @@ diff --git a/rsync.1.md b/rsync.1.md
      Note that rsync always verifies that each _transferred_ file was correctly
      reconstructed on the receiving side by checking a whole-file checksum that
      is generated as the file is transferred, but that automatic
-@@ -713,6 +716,38 @@ your home directory (remove the '=' for that).
+@@ -725,6 +728,38 @@ your home directory (remove the '=' for that).
      can be overridden using either the `--checksum-choice` (`--cc`) option or an
      environment variable that is discussed in that option's section.
  
index a68e6ae6d0bdb0b406e1ec1aca2857bbe365157f..c48274b0f58bc7178f8fa84269001f800576a40b 100644 (file)
@@ -455,6 +455,15 @@ diff --git a/generator.c b/generator.c
  static const char *solo_file = NULL;
  
  /* Forward declarations. */
+@@ -627,7 +628,7 @@ int quick_check_ok(enum filetype ftype, const char *fn, struct file_struct *file
+               if (always_checksum > 0) {
+                       char sum[MAX_DIGEST_LEN];
+                       if (checksum_files && slot >= 0)
+-                              get_cached_checksum(slot, fn, file, st, sum);
++                              get_cached_checksum(slot, fn, file, -1, st, sum);
+                       else
+                               file_checksum(fn, st, sum);
+                       return memcmp(sum, F_SUM(file), flist_csum_len) == 0;
 @@ -1356,7 +1357,8 @@ static void recv_generator(char *fname, struct file_struct *file, int ndx,
                                }
                        }
@@ -511,7 +520,7 @@ diff --git a/io.c b/io.c
  extern int daemon_connection;
  extern int protocol_version;
  extern int remove_source_files;
-@@ -1084,6 +1085,9 @@ static void got_flist_entry_status(enum festatus status, int ndx)
+@@ -1085,6 +1086,9 @@ static void got_flist_entry_status(enum festatus status, int ndx)
                                if (inc_recurse)
                                        flist->in_progress++;
                        }
@@ -538,7 +547,7 @@ diff --git a/loadparm.c b/loadparm.c
 diff --git a/options.c b/options.c
 --- a/options.c
 +++ b/options.c
-@@ -1729,7 +1729,15 @@ int parse_arguments(int *argc_p, const char ***argv_p)
+@@ -1730,7 +1730,15 @@ int parse_arguments(int *argc_p, const char ***argv_p)
  
                case OPT_SUMFILES:
                        arg = poptGetOptArg(pc);
@@ -587,7 +596,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
-@@ -727,9 +727,13 @@ your home directory (remove the '=' for that).
+@@ -739,9 +739,13 @@ your home directory (remove the '=' for that).
  
      The MODE value is either "lax", for relaxed checking (which compares size
      and mtime), "strict" (which also compares ctime and inode), or "none" to
index 389735965605b375687f438be559f640533e7883..189697387d5e687b45dbc1fbe899b32aa5e2cf68 100644 (file)
@@ -8,7 +8,7 @@ To use this patch, run these commands for a successful build:
     ./configure                               (optional if already run)
     make
 
-based-on: 3008e7c2269936672d796d95b85b285fc07adc01
+based-on: 3e44bbd3132c22f7ce1ae48c0ce262f237473038
 diff --git a/flist.c b/flist.c
 --- a/flist.c
 +++ b/flist.c
index d478866a7e5c2541edf628bb57846983e49fb79e..d85bda86c3c16877d5a046690671f293e24cfed7 100644 (file)
@@ -13,7 +13,7 @@ To use this patch, run these commands for a successful build:
     ./configure                         (optional if already run)
     make
 
-based-on: 3008e7c2269936672d796d95b85b285fc07adc01
+based-on: 3e44bbd3132c22f7ce1ae48c0ce262f237473038
 diff --git a/Makefile.in b/Makefile.in
 --- a/Makefile.in
 +++ b/Makefile.in
@@ -79,7 +79,7 @@ diff --git a/generator.c b/generator.c
 diff --git a/options.c b/options.c
 --- a/options.c
 +++ b/options.c
-@@ -575,7 +575,7 @@ enum {OPT_SERVER = 1000, OPT_DAEMON, OPT_SENDER, OPT_EXCLUDE, OPT_EXCLUDE_FROM,
+@@ -576,7 +576,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,
@@ -88,7 +88,7 @@ diff --git a/options.c b/options.c
        OPT_OLD_COMPRESS, OPT_NEW_COMPRESS, OPT_NO_COMPRESS,
        OPT_STOP_AFTER, OPT_STOP_AT,
        OPT_REFUSED_BASE = 9000};
-@@ -735,6 +735,7 @@ static struct poptOption long_options[] = {
+@@ -736,6 +736,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 },
@@ -96,7 +96,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 },
-@@ -989,6 +990,9 @@ static void set_refuse_options(void)
+@@ -990,6 +991,9 @@ static void set_refuse_options(void)
  #ifndef SUPPORT_HARD_LINKS
        parse_one_refuse_match(0, "link-dest", list_end);
  #endif
@@ -106,7 +106,7 @@ diff --git a/options.c b/options.c
  #ifndef HAVE_MKTIME
        parse_one_refuse_match(0, "stop-at", list_end);
  #endif
-@@ -1318,6 +1322,8 @@ char *alt_dest_opt(int type)
+@@ -1319,6 +1323,8 @@ char *alt_dest_opt(int type)
                return "--copy-dest";
        case LINK_DEST:
                return "--link-dest";
@@ -115,7 +115,7 @@ diff --git a/options.c b/options.c
        default:
                NOISY_DEATH("Unknown alt_dest_opt type");
        }
-@@ -1688,6 +1694,10 @@ int parse_arguments(int *argc_p, const char ***argv_p)
+@@ -1689,6 +1695,10 @@ int parse_arguments(int *argc_p, const char ***argv_p)
                        want_dest_type = LINK_DEST;
                        goto set_dest_dir;
  
@@ -137,7 +137,7 @@ diff --git a/rsync.1.md b/rsync.1.md
  --compress, -z           compress file data during the transfer
  --compress-choice=STR    choose the compression algorithm (aka --zc)
  --compress-level=NUM     explicitly set compression level (aka --zl)
-@@ -2362,6 +2363,17 @@ your home directory (remove the '=' for that).
+@@ -2381,6 +2382,17 @@ your home directory (remove the '=' for that).
      specified (or implied by `-a`).  You can work-around this bug by avoiding
      the `-o` option when sending to an old rsync.
  
index 753ecfbe291b66d67a2952e773771c8b4b0ab430..a4ad9424a8d25ab990ce1470926ba81617a901b5 100644 (file)
@@ -27,7 +27,7 @@ To use this patch, run these commands for a successful build:
     ./configure                         (optional if already run)
     make
 
-based-on: 3008e7c2269936672d796d95b85b285fc07adc01
+based-on: 3e44bbd3132c22f7ce1ae48c0ce262f237473038
 diff --git a/daemon-parm.txt b/daemon-parm.txt
 --- a/daemon-parm.txt
 +++ b/daemon-parm.txt
@@ -59,7 +59,7 @@ diff --git a/options.c b/options.c
  int remove_source_files = 0;
  int one_file_system = 0;
  int protocol_version = PROTOCOL_VERSION;
-@@ -819,6 +821,8 @@ static struct poptOption long_options[] = {
+@@ -820,6 +822,8 @@ static struct poptOption long_options[] = {
    {"outbuf",           0,  POPT_ARG_STRING, &outbuf_mode, 0, 0, 0 },
    {"remote-option",   'M', POPT_ARG_STRING, 0, 'M', 0, 0 },
    {"protocol",         0,  POPT_ARG_INT,    &protocol_version, 0, 0, 0 },
index 31484308cf2f5d3adb12fc88a993bb2f7aa06636..15a0c65047af916ad8fd1cc3e5608418b69fd6b8 100644 (file)
@@ -8,7 +8,7 @@ To use this patch, run these commands for a successful build:
     ./configure                      (optional if already run)
     make
 
-based-on: 3008e7c2269936672d796d95b85b285fc07adc01
+based-on: 3e44bbd3132c22f7ce1ae48c0ce262f237473038
 diff --git a/generator.c b/generator.c
 --- a/generator.c
 +++ b/generator.c
@@ -50,7 +50,7 @@ diff --git a/options.c b/options.c
  int write_devices = 0;
  int preserve_links = 0;
  int preserve_hard_links = 0;
-@@ -654,6 +655,7 @@ static struct poptOption long_options[] = {
+@@ -655,6 +656,7 @@ static struct poptOption long_options[] = {
    {"no-D",             0,  POPT_ARG_NONE,   0, OPT_NO_D, 0, 0 },
    {"devices",          0,  POPT_ARG_VAL,    &preserve_devices, 1, 0, 0 },
    {"no-devices",       0,  POPT_ARG_VAL,    &preserve_devices, 0, 0, 0 },
@@ -58,7 +58,7 @@ diff --git a/options.c b/options.c
    {"write-devices",    0,  POPT_ARG_VAL,    &write_devices, 1, 0, 0 },
    {"no-write-devices", 0,  POPT_ARG_VAL,    &write_devices, 0, 0, 0 },
    {"specials",         0,  POPT_ARG_VAL,    &preserve_specials, 1, 0, 0 },
-@@ -945,6 +947,7 @@ static void set_refuse_options(void)
+@@ -946,6 +948,7 @@ static void set_refuse_options(void)
                 || strcmp("iconv", longName) == 0
                 || strcmp("no-iconv", longName) == 0
                 || strcmp("checksum-seed", longName) == 0
@@ -66,7 +66,7 @@ diff --git a/options.c b/options.c
                 || strcmp("write-devices", longName) == 0 /* disable wild-match (it gets refused below) */
                 || strcmp("log-format", longName) == 0 /* aka out-format (NOT log-file-format) */
                 || strcmp("sender", longName) == 0
-@@ -956,6 +959,7 @@ static void set_refuse_options(void)
+@@ -957,6 +960,7 @@ static void set_refuse_options(void)
        assert(list_end != NULL);
  
        if (am_daemon) { /* Refused by default, but can be accepted via a negated exact match. */
@@ -74,7 +74,7 @@ diff --git a/options.c b/options.c
                parse_one_refuse_match(0, "write-devices", list_end);
        }
  
-@@ -2858,6 +2862,9 @@ void server_options(char **args, int *argc_p)
+@@ -2863,6 +2867,9 @@ void server_options(char **args, int *argc_p)
        else if (remove_source_files)
                args[ac++] = "--remove-sent-files";
  
@@ -119,9 +119,9 @@ diff --git a/rsync.c b/rsync.c
 diff --git a/rsyncd.conf.5.md b/rsyncd.conf.5.md
 --- a/rsyncd.conf.5.md
 +++ b/rsyncd.conf.5.md
-@@ -930,9 +930,10 @@ the values of parameters.  See the GLOBAL PARAMETERS section for more details.
-     If you are un-refusing the compress option, you probably want to match
-     "`!compress*`" so that you also accept the `--compress-level` option.
+@@ -931,9 +931,10 @@ the values of parameters.  See the GLOBAL PARAMETERS section for more details.
+     If you are un-refusing the compress option, you may want to match
+     "`!compress*`" if you also want to allow the `--compress-level` option.
  
 -    Note that the "write-devices" option is refused by default, but can be
 -    explicitly accepted with "`!write-devices`".  The options "log-file" and
index ede5aab13b968662b7abc1c3217b0ac78124084f..f4d869b958c5b11928d6e0e41f24af9bea074e2c 100644 (file)
@@ -14,7 +14,7 @@ To use this patch, run these commands for a successful build:
     ./configure                                 (optional if already run)
     make
 
-based-on: 3008e7c2269936672d796d95b85b285fc07adc01
+based-on: 3e44bbd3132c22f7ce1ae48c0ce262f237473038
 diff --git a/generator.c b/generator.c
 --- a/generator.c
 +++ b/generator.c
@@ -39,7 +39,7 @@ diff --git a/generator.c b/generator.c
 diff --git a/options.c b/options.c
 --- a/options.c
 +++ b/options.c
-@@ -113,6 +113,7 @@ int safe_symlinks = 0;
+@@ -114,6 +114,7 @@ int safe_symlinks = 0;
  int copy_unsafe_links = 0;
  int munge_symlinks = 0;
  int size_only = 0;
@@ -47,7 +47,7 @@ diff --git a/options.c b/options.c
  int daemon_bwlimit = 0;
  int bwlimit = 0;
  int fuzzy_basis = 0;
-@@ -681,6 +682,7 @@ static struct poptOption long_options[] = {
+@@ -682,6 +683,7 @@ static struct poptOption long_options[] = {
    {"chmod",            0,  POPT_ARG_STRING, 0, OPT_CHMOD, 0, 0 },
    {"ignore-times",    'I', POPT_ARG_NONE,   &ignore_times, 0, 0, 0 },
    {"size-only",        0,  POPT_ARG_NONE,   &size_only, 0, 0, 0 },
@@ -55,7 +55,7 @@ diff --git a/options.c b/options.c
    {"one-file-system", 'x', POPT_ARG_NONE,   0, 'x', 0, 0 },
    {"no-one-file-system",0, POPT_ARG_VAL,    &one_file_system, 0, 0, 0 },
    {"no-x",             0,  POPT_ARG_VAL,    &one_file_system, 0, 0, 0 },
-@@ -2738,6 +2740,9 @@ void server_options(char **args, int *argc_p)
+@@ -2743,6 +2745,9 @@ void server_options(char **args, int *argc_p)
        else if (missing_args == 1 && !am_sender)
                args[ac++] = "--ignore-missing-args";
  
@@ -76,7 +76,7 @@ diff --git a/rsync.1.md b/rsync.1.md
  --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
-@@ -665,6 +666,14 @@ your home directory (remove the '=' for that).
+@@ -677,6 +678,14 @@ your home directory (remove the '=' for that).
      after using another mirroring system which may not preserve timestamps
      exactly.
  
diff --git a/db.diff b/db.diff
index 01c66f37dcd9f5e411256623d4cff63be5be7b32..84e02f1fc72a88bdbf4be9cc85bdec93b4063d18 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: 3008e7c2269936672d796d95b85b285fc07adc01
+based-on: 3e44bbd3132c22f7ce1ae48c0ce262f237473038
 diff --git a/.gitignore b/.gitignore
 --- a/.gitignore
 +++ b/.gitignore
@@ -74,7 +74,7 @@ diff --git a/Makefile.in b/Makefile.in
 +      if test -f rsyncdb.1; then $(INSTALLMAN) -m 644 rsyncdb.1 $(DESTDIR)$(mandir)/man1; fi
        if test -f rsyncd.conf.5; then $(INSTALLMAN) -m 644 rsyncd.conf.5 $(DESTDIR)$(mandir)/man5; fi
        if test "$(with_rrsync)" = yes; then \
-           $(INSTALLCMD) -m 755 $(srcdir)/support/rrsync $(DESTDIR)$(bindir); \
+           $(INSTALLCMD) -m 755 rrsync $(DESTDIR)$(bindir); \
 @@ -104,10 +107,13 @@ rsync$(EXEEXT): $(OBJS)
  rrsync: support/rrsync
        cp -p $(srcdir)/support/rrsync rrsync
@@ -108,13 +108,13 @@ diff --git a/Makefile.in b/Makefile.in
 +man: rsync.1 rsync-ssl.1 rsyncd.conf.5 @MAKE_RRSYNC_1@ rsyncdb.1
  
  rsync.1: rsync.1.md md-convert version.h Makefile
-       @$(srcdir)/maybe-make-man $(srcdir) rsync.1.md
+       @$(srcdir)/maybe-make-man rsync.1.md
 @@ -269,9 +278,12 @@ rsyncd.conf.5: rsyncd.conf.5.md md-convert version.h Makefile
  rrsync.1: support/rrsync.1.md md-convert Makefile
-       @$(srcdir)/maybe-make-man $(srcdir) support/rrsync.1.md
+       @$(srcdir)/maybe-make-man support/rrsync.1.md
  
 +rsyncdb.1: rsyncdb.1.md md-convert NEWS.md Makefile
-+      @$(srcdir)/maybe-make-man $(srcdir) rsyncdb.1.md
++      @$(srcdir)/maybe-make-man rsyncdb.1.md
 +
  .PHONY: clean
  clean: cleantests
@@ -2375,7 +2375,7 @@ diff --git a/io.c b/io.c
  extern int io_error;
  extern int batch_fd;
  extern int eol_nulls;
-@@ -1512,6 +1514,32 @@ static void read_a_msg(void)
+@@ -1513,6 +1515,32 @@ static void read_a_msg(void)
                if (am_sender)
                        maybe_send_keepalive(time(NULL), MSK_ALLOW_FLUSH);
                break;
@@ -2408,7 +2408,7 @@ diff --git a/io.c b/io.c
        case MSG_DELETED:
                if (msg_bytes >= sizeof data)
                        goto overflow;
-@@ -1665,6 +1693,7 @@ static void read_a_msg(void)
+@@ -1666,6 +1694,7 @@ static void read_a_msg(void)
                 * with a duplicate exit message. */
                _exit_cleanup(val, __FILE__, 0 - __LINE__);
        default:
@@ -2474,7 +2474,7 @@ diff --git a/options.c b/options.c
  int relative_paths = -1;
  int implied_dirs = 1;
  int missing_args = 0; /* 0 = FERROR_XFER, 1 = ignore, 2 = delete */
-@@ -99,6 +100,7 @@ int use_qsort = 0;
+@@ -100,6 +101,7 @@ int use_qsort = 0;
  char *files_from = NULL;
  int filesfrom_fd = -1;
  char *filesfrom_host = NULL;
@@ -2482,7 +2482,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 mkpath_dest_arg = 0;
+@@ -108,6 +110,9 @@ int mkpath_dest_arg = 0;
  int allow_inc_recurse = 1;
  int xfer_dirs = -1;
  int am_daemon = 0;
@@ -2492,7 +2492,7 @@ diff --git a/options.c b/options.c
  int connect_timeout = 0;
  int keep_partial = 0;
  int safe_symlinks = 0;
-@@ -286,6 +291,7 @@ static struct output_struct debug_words[COUNT_DEBUG+1] = {
+@@ -287,6 +292,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)"),
@@ -2500,7 +2500,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"),
-@@ -575,6 +581,7 @@ enum {OPT_SERVER = 1000, OPT_DAEMON, OPT_SENDER, OPT_EXCLUDE, OPT_EXCLUDE_FROM,
+@@ -576,6 +582,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,
@@ -2508,7 +2508,7 @@ diff --git a/options.c b/options.c
        OPT_USERMAP, OPT_GROUPMAP, OPT_CHOWN, OPT_BWLIMIT, OPT_STDERR,
        OPT_OLD_COMPRESS, OPT_NEW_COMPRESS, OPT_NO_COMPRESS,
        OPT_STOP_AFTER, OPT_STOP_AT,
-@@ -731,6 +738,10 @@ static struct poptOption long_options[] = {
+@@ -732,6 +739,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 },
@@ -2519,7 +2519,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 },
-@@ -828,6 +839,9 @@ static struct poptOption long_options[] = {
+@@ -829,6 +840,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 },
@@ -2529,7 +2529,7 @@ diff --git a/options.c b/options.c
    {0,0,0,0, 0, 0, 0}
  };
  
-@@ -856,6 +870,31 @@ static struct poptOption long_daemon_options[] = {
+@@ -857,6 +871,31 @@ static struct poptOption long_daemon_options[] = {
    {0,0,0,0, 0, 0, 0}
  };
  
@@ -2561,7 +2561,7 @@ diff --git a/options.c b/options.c
  
  static char err_buf[200];
  
-@@ -981,6 +1020,8 @@ static void set_refuse_options(void)
+@@ -982,6 +1021,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);
@@ -2570,7 +2570,7 @@ diff --git a/options.c b/options.c
        }
  
  #ifndef SUPPORT_ATIMES
-@@ -1288,6 +1329,102 @@ static void create_refuse_error(int which)
+@@ -1289,6 +1330,102 @@ static void create_refuse_error(int which)
                snprintf(err_buf + n, sizeof err_buf - n, " (-%c)\n", op->shortName);
  }
  
@@ -2673,7 +2673,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
-@@ -1344,6 +1481,12 @@ int parse_arguments(int *argc_p, const char ***argv_p)
+@@ -1345,6 +1482,12 @@ int parse_arguments(int *argc_p, const char ***argv_p)
                return 0;
        }
  
@@ -2686,7 +2686,7 @@ diff --git a/options.c b/options.c
        set_refuse_options();
  
  #ifdef ICONV_OPTION
-@@ -1462,6 +1605,12 @@ int parse_arguments(int *argc_p, const char ***argv_p)
+@@ -1463,6 +1606,12 @@ int parse_arguments(int *argc_p, const char ***argv_p)
                        am_daemon = 1;
                        return 1;
  
@@ -2699,7 +2699,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
-@@ -1534,6 +1683,10 @@ int parse_arguments(int *argc_p, const char ***argv_p)
+@@ -1535,6 +1684,10 @@ int parse_arguments(int *argc_p, const char ***argv_p)
                        preserve_devices = preserve_specials = 0;
                        break;
  
index 4f753a97ee15fb7810808dec089e81bc8d4fed62..714c07357e81db4e8bc99c03c4a3da52bd28eb9a 100644 (file)
@@ -39,7 +39,7 @@ diff --git a/generator.c b/generator.c
                fnamecmp = partialptr;
                fnamecmp_type = FNAMECMP_PARTIAL_DIR;
                statret = 0;
-+              if (detect_renamed > 1 && unchanged_file(fnamecmp, file, &sx.st)) {
++              if (detect_renamed > 1 && quick_check_ok(FT_REG, fnamecmp, file, &sx.st)) {
 +                      /* Adopt the partial file. */
 +                      finish_transfer(fname, fnamecmp, NULL, NULL, file, 1, 1);
 +                      handle_partial_dir(partialptr, PDIR_DELETE);
@@ -60,7 +60,7 @@ diff --git a/generator.c b/generator.c
 diff --git a/options.c b/options.c
 --- a/options.c
 +++ b/options.c
-@@ -736,7 +736,9 @@ static struct poptOption long_options[] = {
+@@ -737,7 +737,9 @@ 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 },
@@ -71,7 +71,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 },
-@@ -2719,8 +2721,14 @@ void server_options(char **args, int *argc_p)
+@@ -2724,8 +2726,14 @@ void server_options(char **args, int *argc_p)
                        args[ac++] = "--super";
                if (size_only)
                        args[ac++] = "--size-only";
@@ -100,7 +100,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
-@@ -2295,6 +2297,17 @@ your home directory (remove the '=' for that).
+@@ -2314,6 +2316,17 @@ your home directory (remove the '=' for that).
      otential alternate-basis files will be removed as the transfer progresses.
      This option conflicts with `--inplace` and `--append`.
  
index 270333d47aebc3bed19d9e55eb47d1c7b6375cb3..8e88aa3f981f7e1a69ee0d12eb91d2818d697353 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: 3008e7c2269936672d796d95b85b285fc07adc01
+based-on: 3e44bbd3132c22f7ce1ae48c0ce262f237473038
 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;
-@@ -166,6 +167,7 @@ void set_allow_inc_recurse(void)
+@@ -168,6 +169,7 @@ void set_allow_inc_recurse(void)
                allow_inc_recurse = 0;
        else if (!am_sender
         && (delete_before || delete_after
@@ -609,7 +609,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;
-@@ -735,6 +736,7 @@ static struct poptOption long_options[] = {
+@@ -736,6 +737,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 },
@@ -617,7 +617,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 },
-@@ -2341,7 +2343,7 @@ int parse_arguments(int *argc_p, const char ***argv_p)
+@@ -2346,7 +2348,7 @@ int parse_arguments(int *argc_p, const char ***argv_p)
                inplace = 1;
        }
  
@@ -626,7 +626,7 @@ diff --git a/options.c b/options.c
                partial_dir = tmp_partialdir;
  
        if (inplace) {
-@@ -2350,6 +2352,7 @@ int parse_arguments(int *argc_p, const char ***argv_p)
+@@ -2355,6 +2357,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",
@@ -634,7 +634,7 @@ diff --git a/options.c b/options.c
                                 delay_updates ? "delay-updates" : "partial-dir");
                        return 0;
                }
-@@ -2716,6 +2719,8 @@ void server_options(char **args, int *argc_p)
+@@ -2721,6 +2724,8 @@ void server_options(char **args, int *argc_p)
                        args[ac++] = "--super";
                if (size_only)
                        args[ac++] = "--size-only";
@@ -666,7 +666,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
-@@ -2278,6 +2279,22 @@ your home directory (remove the '=' for that).
+@@ -2297,6 +2298,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.
  
index 0c80e0d42cc7971c9e101add9078243f7b6b836b..62339e151c69ee1dc3be21cd2b02c5eb7e8cb50b 100644 (file)
@@ -10,7 +10,7 @@ To use this patch, run these commands for a successful build:
     ./configure                         (optional if already run)
     make
 
-based-on: 3008e7c2269936672d796d95b85b285fc07adc01
+based-on: 3e44bbd3132c22f7ce1ae48c0ce262f237473038
 diff --git a/options.c b/options.c
 --- a/options.c
 +++ b/options.c
@@ -22,7 +22,7 @@ diff --git a/options.c b/options.c
  extern int module_id;
  extern int local_server;
  extern int sanitize_paths;
-@@ -756,6 +757,8 @@ static struct poptOption long_options[] = {
+@@ -757,6 +758,8 @@ static struct poptOption long_options[] = {
    {"partial-dir",      0,  POPT_ARG_STRING, &partial_dir, 0, 0, 0 },
    {"delay-updates",    0,  POPT_ARG_VAL,    &delay_updates, 1, 0, 0 },
    {"no-delay-updates", 0,  POPT_ARG_VAL,    &delay_updates, 0, 0, 0 },
@@ -42,7 +42,7 @@ diff --git a/rsync.1.md b/rsync.1.md
  --prune-empty-dirs, -m   prune empty directory chains from file-list
  --numeric-ids            don't map uid/gid values by user/group name
  --usermap=STRING         custom username mapping
-@@ -3048,6 +3049,16 @@ your home directory (remove the '=' for that).
+@@ -3065,6 +3066,16 @@ your home directory (remove the '=' for that).
      update algorithm that is even more atomic (it uses `--link-dest` and a
      parallel hierarchy of files).
  
index 0a3529747f60506058fb4e52a0d2966526ebb92b..80ccf18810521fe33df789c8a7c2af9446b2aaeb 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: 3008e7c2269936672d796d95b85b285fc07adc01
+based-on: 3e44bbd3132c22f7ce1ae48c0ce262f237473038
 diff --git a/generator.c b/generator.c
 --- a/generator.c
 +++ b/generator.c
@@ -59,7 +59,7 @@ diff --git a/options.c b/options.c
  int open_noatime = 0;
  int cvs_exclude = 0;
  int dry_run = 0;
-@@ -685,6 +686,7 @@ static struct poptOption long_options[] = {
+@@ -686,6 +687,7 @@ static struct poptOption long_options[] = {
    {"no-one-file-system",0, POPT_ARG_VAL,    &one_file_system, 0, 0, 0 },
    {"no-x",             0,  POPT_ARG_VAL,    &one_file_system, 0, 0, 0 },
    {"update",          'u', POPT_ARG_NONE,   &update_only, 0, 0, 0 },
index 64a8aeedce63ac719ed292c2acf17dd620645662..9beb4e1e48d6ee2e40c4fe60ca1c466160cc0d42 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: 3008e7c2269936672d796d95b85b285fc07adc01
+based-on: 3e44bbd3132c22f7ce1ae48c0ce262f237473038
 diff --git a/compat.c b/compat.c
 --- a/compat.c
 +++ b/compat.c
@@ -27,7 +27,7 @@ diff --git a/compat.c b/compat.c
  extern int xfer_flags_as_varint;
  extern int need_messages_from_generator;
  extern int delete_mode, delete_before, delete_during, delete_after;
-@@ -78,7 +80,7 @@ int do_negotiated_strings = 0;
+@@ -80,7 +82,7 @@ int do_negotiated_strings = 0;
  int xmit_id0_names = 0;
  
  /* These index values are for the file-list's extra-attribute array. */
@@ -36,7 +36,7 @@ diff --git a/compat.c b/compat.c
  
  int receiver_symlink_times = 0; /* receiver can set the time on a symlink */
  int sender_symlink_iconv = 0; /* sender should convert symlink content */
-@@ -572,6 +574,8 @@ void setup_protocol(int f_out,int f_in)
+@@ -574,6 +576,8 @@ void setup_protocol(int f_out,int f_in)
                uid_ndx = ++file_extra_cnt;
        if (preserve_gid)
                gid_ndx = ++file_extra_cnt;
@@ -45,7 +45,7 @@ diff --git a/compat.c b/compat.c
        if (preserve_acls && !am_sender)
                acls_ndx = ++file_extra_cnt;
        if (preserve_xattrs)
-@@ -732,6 +736,10 @@ void setup_protocol(int f_out,int f_in)
+@@ -737,6 +741,10 @@ void setup_protocol(int f_out,int f_in)
                        fprintf(stderr, "Both rsync versions must be at least 3.2.0 for --crtimes.\n");
                        exit_cleanup(RERR_PROTOCOL);
                }
@@ -375,15 +375,15 @@ diff --git a/options.c b/options.c
  int preserve_executability = 0;
  int preserve_devices = 0;
  int preserve_specials = 0;
-@@ -93,6 +94,7 @@ int numeric_ids = 0;
- int msgs2stderr = 2; /* Default: send errors to stderr for local & remote-shell transfers */
+@@ -94,6 +95,7 @@ int msgs2stderr = 2; /* Default: send errors to stderr for local & remote-shell
+ int saw_stderr_opt = 0;
  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;
-@@ -616,6 +618,8 @@ static struct poptOption long_options[] = {
+@@ -617,6 +619,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 },
@@ -392,7 +392,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 },
-@@ -713,6 +717,12 @@ static struct poptOption long_options[] = {
+@@ -714,6 +718,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 },
@@ -405,7 +405,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 },
-@@ -1001,6 +1011,14 @@ static void set_refuse_options(void)
+@@ -1002,6 +1012,14 @@ static void set_refuse_options(void)
  #ifndef SUPPORT_CRTIMES
        parse_one_refuse_match(0, "crtimes", list_end);
  #endif
@@ -420,7 +420,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++) {
-@@ -2602,6 +2620,9 @@ void server_options(char **args, int *argc_p)
+@@ -2607,6 +2625,9 @@ void server_options(char **args, int *argc_p)
        if (xfer_dirs && !recurse && delete_mode && am_sender)
                args[ac++] = "--no-r";
  
@@ -430,7 +430,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;
-@@ -2710,6 +2731,16 @@ void server_options(char **args, int *argc_p)
+@@ -2715,6 +2736,16 @@ void server_options(char **args, int *argc_p)
                        args[ac++] = "--delete-excluded";
                if (force_delete)
                        args[ac++] = "--force";
@@ -470,7 +470,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
-@@ -719,6 +723,7 @@ your home directory (remove the '=' for that).
+@@ -731,6 +735,7 @@ your home directory (remove the '=' for that).
      recursion and want to preserve almost everything.  Be aware that it does
      **not** include preserving ACLs (`-A`), xattrs (`-X`), atimes (`-U`),
      crtimes (`-N`), nor the finding and preserving of hardlinks (`-H`).
@@ -478,7 +478,7 @@ diff --git a/rsync.1.md b/rsync.1.md
  
      The only exception to the above equivalence is when
      `--files-from` is specified, in which case `-r` is not implied.
-@@ -1087,7 +1092,7 @@ your home directory (remove the '=' for that).
+@@ -1106,7 +1111,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
@@ -487,7 +487,7 @@ diff --git a/rsync.1.md b/rsync.1.md
  
      See also `--keep-dirlinks` for an analogous option for the receiving side.
  
-@@ -1273,6 +1278,29 @@ your home directory (remove the '=' for that).
+@@ -1292,6 +1297,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`.
  
@@ -517,7 +517,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
-@@ -1756,7 +1784,7 @@ your home directory (remove the '=' for that).
+@@ -1775,7 +1803,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
@@ -526,7 +526,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
-@@ -1767,15 +1795,16 @@ your home directory (remove the '=' for that).
+@@ -1786,15 +1814,16 @@ your home directory (remove the '=' for that).
      Tells `--delete` to go ahead and delete files even when there are I/O
      errors.
  
@@ -547,7 +547,7 @@ diff --git a/rsync.1.md b/rsync.1.md
  
  0.  `--max-delete=NUM`
  
-@@ -2736,7 +2765,7 @@ your home directory (remove the '=' for that).
+@@ -2753,7 +2782,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
@@ -1084,6 +1084,24 @@ diff --git a/util1.c b/util1.c
 diff --git a/xattrs.c b/xattrs.c
 --- a/xattrs.c
 +++ b/xattrs.c
+@@ -1091,7 +1091,7 @@ int set_xattr(const char *fname, const struct file_struct *file, const char *fna
+        && !S_ISLNK(sxp->st.st_mode)
+ #endif
+        && access(fname, W_OK) < 0
+-       && do_chmod(fname, (sxp->st.st_mode & CHMOD_BITS) | S_IWUSR) == 0)
++       && do_chmod(fname, (sxp->st.st_mode & CHMOD_BITS) | S_IWUSR, ST_FLAGS(sxp->st)) == 0)
+               added_write_perm = 1;
+       ndx = F_XATTR(file);
+@@ -1099,7 +1099,7 @@ int set_xattr(const char *fname, const struct file_struct *file, const char *fna
+       lst = &glst->xa_items;
+       int return_value = rsync_xal_set(fname, lst, fnamecmp, sxp);
+       if (added_write_perm) /* remove the temporary write permission */
+-              do_chmod(fname, sxp->st.st_mode);
++              do_chmod(fname, sxp->st.st_mode, ST_FLAGS(sxp->st));
+       return return_value;
+ }
 @@ -1216,7 +1216,7 @@ int set_stat_xattr(const char *fname, struct file_struct *file, mode_t new_mode)
        mode = (fst.st_mode & _S_IFMT) | (fmode & ACCESSPERMS)
             | (S_ISDIR(fst.st_mode) ? 0700 : 0600);
index dbc561f4fcab4b11ed5b663fe187abb8b2f58582..d92f78b70814c6c92b3ca847a2982129db7bde5a 100644 (file)
@@ -9,7 +9,7 @@ To use this patch, run these commands for a successful build:
     ./configure                         (optional if already run)
     make
 
-based-on: 3008e7c2269936672d796d95b85b285fc07adc01
+based-on: 3e44bbd3132c22f7ce1ae48c0ce262f237473038
 diff --git a/exclude.c b/exclude.c
 --- a/exclude.c
 +++ b/exclude.c
@@ -336,7 +336,7 @@ diff --git a/flist.c b/flist.c
 diff --git a/rsync.1.md b/rsync.1.md
 --- a/rsync.1.md
 +++ b/rsync.1.md
-@@ -1296,7 +1296,9 @@ your home directory (remove the '=' for that).
+@@ -1315,7 +1315,9 @@ your home directory (remove the '=' for that).
      >     --chmod=D2775,F664
  
      It is also legal to specify multiple `--chmod` options, as each additional
@@ -347,7 +347,7 @@ diff --git a/rsync.1.md b/rsync.1.md
  
      See the `--perms` and `--executability` options for how the resulting
      permission value can be applied to the files in the transfer.
-@@ -2672,6 +2674,10 @@ your home directory (remove the '=' for that).
+@@ -2689,6 +2691,10 @@ your home directory (remove the '=' for that).
  
      If your shell complains about the wildcards, use `--protect-args` (`-s`).
  
@@ -358,7 +358,7 @@ diff --git a/rsync.1.md b/rsync.1.md
  0.  `--timeout=SECONDS`
  
      This option allows you to set a maximum I/O timeout in seconds.  If no data
-@@ -3676,6 +3682,15 @@ The following modifiers are accepted after a "`+`" or "`-`":
+@@ -3693,6 +3699,15 @@ The following modifiers are accepted after a "`+`" or "`-`":
    rules that exclude things like "CVS" and "`*.o`" are marked as perishable,
    and will not prevent a directory that was removed on the source from being
    deleted on the destination.
@@ -374,7 +374,7 @@ diff --git a/rsync.1.md b/rsync.1.md
  - An `x` indicates that a rule affects xattr names in xattr copy/delete
    operations (and is thus ignored when matching file/dir names).  If no
    xattr-matching rules are specified, a default xattr filtering rule is used
-@@ -3733,6 +3748,12 @@ The following modifiers are accepted after a merge or dir-merge rule:
+@@ -3750,6 +3765,12 @@ The following modifiers are accepted after a merge or dir-merge rule:
    rules in the file must not specify sides (via a modifier or a rule prefix
    such as `hide`).
  
index a4a5bbb61c61650835a5a04cf8012e9c7a803894..e9414e4425b4860c437fe63a31c7c379eec73102 100644 (file)
@@ -21,12 +21,14 @@ based-on: patch/master/fileflags
 diff --git a/flist.c b/flist.c
 --- a/flist.c
 +++ b/flist.c
-@@ -1631,6 +1631,9 @@ static struct file_struct *send_file_name(int f, struct file_list *flist,
+@@ -1631,6 +1631,11 @@ static struct file_struct *send_file_name(int f, struct file_list *flist,
  #ifdef SUPPORT_XATTRS
                if (preserve_xattrs) {
                        sx.st.st_mode = file->mode;
++#if defined SUPPORT_FILEFLAGS || defined SUPPORT_FORCE_CHANGE
 +                      if (preserve_fileflags)
 +                              sx.st.st_flags = F_FFLAGS(file);
++#endif
 +                      sx.st.st_mtime = file->modtime; /* get_xattr needs mtime for decmpfs xattrs */
                        if (get_xattr(fname, &sx) < 0) {
                                io_error |= IOERR_GENERAL;
@@ -255,7 +257,7 @@ diff --git a/options.c b/options.c
  int preserve_perms = 0;
  int preserve_fileflags = 0;
  int preserve_executability = 0;
-@@ -723,6 +724,10 @@ static struct poptOption long_options[] = {
+@@ -724,6 +725,10 @@ static struct poptOption long_options[] = {
    {"no-force-change",  0,  POPT_ARG_VAL,    &force_change, 0, 0, 0 },
    {"force-uchange",    0,  POPT_ARG_VAL,    &force_change, USR_IMMUTABLE, 0, 0 },
    {"force-schange",    0,  POPT_ARG_VAL,    &force_change, SYS_IMMUTABLE, 0, 0 },
@@ -266,7 +268,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 },
-@@ -1019,6 +1024,10 @@ static void set_refuse_options(void)
+@@ -1020,6 +1025,10 @@ static void set_refuse_options(void)
        parse_one_refuse_match(0, "force-uchange", list_end);
        parse_one_refuse_match(0, "force-schange", list_end);
  #endif
@@ -277,7 +279,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++) {
-@@ -2077,6 +2086,15 @@ int parse_arguments(int *argc_p, const char ***argv_p)
+@@ -2082,6 +2091,15 @@ int parse_arguments(int *argc_p, const char ***argv_p)
        }
  #endif
  
@@ -293,7 +295,7 @@ diff --git a/options.c b/options.c
        if (write_batch && read_batch) {
                snprintf(err_buf, sizeof err_buf,
                        "--write-batch and --read-batch can not be used together\n");
-@@ -2623,6 +2641,11 @@ void server_options(char **args, int *argc_p)
+@@ -2628,6 +2646,11 @@ void server_options(char **args, int *argc_p)
        if (preserve_fileflags)
                args[ac++] = "--fileflags";
  
@@ -317,7 +319,7 @@ diff --git a/rsync.1.md b/rsync.1.md
  --owner, -o              preserve owner (super-user only)
  --group, -g              preserve group
  --devices                preserve device files (super-user only)
-@@ -1301,6 +1303,47 @@ your home directory (remove the '=' for that).
+@@ -1320,6 +1322,47 @@ your home directory (remove the '=' for that).
      receiving side.  It does not try to affect user flags.  This option
      overrides `--force-change` and `--force-uchange`.
  
@@ -368,23 +370,27 @@ diff --git a/rsync.1.md b/rsync.1.md
 diff --git a/rsync.c b/rsync.c
 --- a/rsync.c
 +++ b/rsync.c
-@@ -607,8 +607,14 @@ int set_file_attrs(const char *fname, struct file_struct *file, stat_x *sxp,
+@@ -607,8 +607,18 @@ int set_file_attrs(const char *fname, struct file_struct *file, stat_x *sxp,
  #ifdef SUPPORT_XATTRS
        if (am_root < 0)
                set_stat_xattr(fname, file, new_mode);
 -      if (preserve_xattrs && fnamecmp)
 +      if (preserve_xattrs && fnamecmp) {
++#if defined SUPPORT_FILEFLAGS || defined SUPPORT_FORCE_CHANGE
 +              uint32 tmpflags = sxp->st.st_flags;
 +              sxp->st.st_flags = F_FFLAGS(file); /* set_xattr() needs to check UF_COMPRESSED */
++#endif
                set_xattr(fname, file, fnamecmp, sxp);
++#if defined SUPPORT_FILEFLAGS || defined SUPPORT_FORCE_CHANGE
 +              sxp->st.st_flags = tmpflags;
++#endif
 +              if (S_ISDIR(sxp->st.st_mode))
 +                      link_stat(fname, &sx2.st, 0);
 +      }
  #endif
  
        if ((omit_dir_times && S_ISDIR(sxp->st.st_mode))
-@@ -625,7 +631,11 @@ int set_file_attrs(const char *fname, struct file_struct *file, stat_x *sxp,
+@@ -625,7 +635,11 @@ int set_file_attrs(const char *fname, struct file_struct *file, stat_x *sxp,
        }
        if (sxp != &sx2)
                memcpy(&sx2.st, &sxp->st, sizeof sx2.st);
@@ -397,7 +403,7 @@ diff --git a/rsync.c b/rsync.c
                sx2.st.st_mtime = file->modtime;
  #ifdef ST_MTIME_NSEC
                sx2.st.ST_MTIME_NSEC = F_MOD_NSEC_or_0(file);
-@@ -710,6 +720,16 @@ int set_file_attrs(const char *fname, struct file_struct *file, stat_x *sxp,
+@@ -710,6 +724,16 @@ int set_file_attrs(const char *fname, struct file_struct *file, stat_x *sxp,
                 && !set_fileflags(fname, fileflags))
                        goto cleanup;
                updated = 1;
index 5c07cfc9b72eac876f6c65e2eb5bd2d5e42ee6ef..3ab5ee7d8327c8aa188674bb735ed669dc804d9d 100644 (file)
@@ -12,7 +12,7 @@ TODO:
  - Make this code handle multibyte character encodings, and honor the
    --iconv setting when converting case.
 
-based-on: 3008e7c2269936672d796d95b85b285fc07adc01
+based-on: 3e44bbd3132c22f7ce1ae48c0ce262f237473038
 diff --git a/exclude.c b/exclude.c
 --- a/exclude.c
 +++ b/exclude.c
@@ -214,7 +214,7 @@ diff --git a/lib/wildmatch.c b/lib/wildmatch.c
 diff --git a/options.c b/options.c
 --- a/options.c
 +++ b/options.c
-@@ -125,6 +125,7 @@ OFF_T max_size = -1;
+@@ -126,6 +126,7 @@ OFF_T max_size = -1;
  OFF_T min_size = -1;
  int ignore_errors = 0;
  int modify_window = 0;
@@ -222,7 +222,7 @@ diff --git a/options.c b/options.c
  int blocking_io = -1;
  int checksum_seed = 0;
  int inplace = 0;
-@@ -776,6 +777,8 @@ static struct poptOption long_options[] = {
+@@ -777,6 +778,8 @@ static struct poptOption long_options[] = {
    {"read-batch",       0,  POPT_ARG_STRING, &batch_name, OPT_READ_BATCH, 0, 0 },
    {"write-batch",      0,  POPT_ARG_STRING, &batch_name, OPT_WRITE_BATCH, 0, 0 },
    {"only-write-batch", 0,  POPT_ARG_STRING, &batch_name, OPT_ONLY_WRITE_BATCH, 0, 0 },
@@ -231,7 +231,7 @@ diff --git a/options.c b/options.c
    {"files-from",       0,  POPT_ARG_STRING, &files_from, 0, 0, 0 },
    {"from0",           '0', POPT_ARG_VAL,    &eol_nulls, 1, 0, 0},
    {"no-from0",         0,  POPT_ARG_VAL,    &eol_nulls, 0, 0, 0},
-@@ -2751,6 +2754,9 @@ void server_options(char **args, int *argc_p)
+@@ -2756,6 +2759,9 @@ void server_options(char **args, int *argc_p)
                args[ac++] = arg;
        }
  
@@ -252,7 +252,7 @@ diff --git a/rsync.1.md b/rsync.1.md
  --address=ADDRESS        bind address for outgoing socket to daemon
  --port=PORT              specify double-colon alternate port number
  --sockopts=OPTIONS       specify custom TCP options
-@@ -2226,6 +2227,12 @@ your home directory (remove the '=' for that).
+@@ -2245,6 +2246,12 @@ your home directory (remove the '=' for that).
  
      >     sudo rsync -aive lsh -M--copy-as=joe src/ lh:dest/
  
index 1f051069d34e86ed6d9205de784e1b83aa18ce0d..a4b9ea1c0b66fd4dbb123af089507d08bef1a2d7 100644 (file)
@@ -9,7 +9,7 @@ To use this patch, run these commands for a successful build:
     ./configure
     make
 
-based-on: 3008e7c2269936672d796d95b85b285fc07adc01
+based-on: 3e44bbd3132c22f7ce1ae48c0ce262f237473038
 diff --git a/Makefile.in b/Makefile.in
 --- a/Makefile.in
 +++ b/Makefile.in
index bd7e4015208edd796a57d5b95977e283ce1963a5..623f02132038d8e97ef6916b0063c647b35df819 100644 (file)
@@ -12,7 +12,7 @@ To use this patch, run these commands for a successful build:
     ./configure
     make
 
-based-on: 3008e7c2269936672d796d95b85b285fc07adc01
+based-on: 3e44bbd3132c22f7ce1ae48c0ce262f237473038
 diff --git a/Makefile.in b/Makefile.in
 --- a/Makefile.in
 +++ b/Makefile.in
@@ -205,7 +205,7 @@ new file mode 100644
 diff --git a/options.c b/options.c
 --- a/options.c
 +++ b/options.c
-@@ -167,6 +167,7 @@ char *backup_suffix = NULL;
+@@ -168,6 +168,7 @@ char *backup_suffix = NULL;
  char *tmpdir = NULL;
  char *partial_dir = NULL;
  char *basis_dir[MAX_BASIS_DIRS+1];
@@ -213,7 +213,7 @@ diff --git a/options.c b/options.c
  char *config_file = NULL;
  char *shell_cmd = NULL;
  char *logfile_name = NULL;
-@@ -224,7 +225,7 @@ static const char *debug_verbosity[] = {
+@@ -225,7 +226,7 @@ static const char *debug_verbosity[] = {
        /*2*/ "BIND,CMD,CONNECT,DEL,DELTASUM,DUP,FILTER,FLIST,ICONV",
        /*3*/ "ACL,BACKUP,CONNECT2,DELTASUM2,DEL2,EXIT,FILTER2,FLIST2,FUZZY,GENR,OWN,RECV,SEND,TIME",
        /*4*/ "CMD2,DELTASUM3,DEL3,EXIT2,FLIST3,ICONV2,OWN2,PROTO,TIME2",
@@ -222,7 +222,7 @@ diff --git a/options.c b/options.c
  };
  
  #define MAX_VERBOSITY ((int)(sizeof debug_verbosity / sizeof debug_verbosity[0]) - 1)
-@@ -295,6 +296,7 @@ static struct output_struct debug_words[COUNT_DEBUG+1] = {
+@@ -296,6 +297,7 @@ static struct output_struct debug_words[COUNT_DEBUG+1] = {
        DEBUG_WORD(FUZZY, W_REC, "Debug fuzzy scoring (levels 1-2)"),
        DEBUG_WORD(GENR, W_REC, "Debug generator functions"),
        DEBUG_WORD(HASH, W_SND|W_REC, "Debug hashtable code"),
@@ -230,7 +230,7 @@ diff --git a/options.c b/options.c
        DEBUG_WORD(HLINK, W_SND|W_REC, "Debug hard-link actions (levels 1-3)"),
        DEBUG_WORD(ICONV, W_CLI|W_SRV, "Debug iconv character conversions (levels 1-2)"),
        DEBUG_WORD(IO, W_CLI|W_SRV, "Debug I/O routines (levels 1-4)"),
-@@ -575,7 +577,7 @@ enum {OPT_SERVER = 1000, OPT_DAEMON, OPT_SENDER, OPT_EXCLUDE, OPT_EXCLUDE_FROM,
+@@ -576,7 +578,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,
@@ -239,7 +239,7 @@ diff --git a/options.c b/options.c
        OPT_OLD_COMPRESS, OPT_NEW_COMPRESS, OPT_NO_COMPRESS,
        OPT_STOP_AFTER, OPT_STOP_AT,
        OPT_REFUSED_BASE = 9000};
-@@ -735,6 +737,7 @@ static struct poptOption long_options[] = {
+@@ -736,6 +738,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 },
@@ -247,7 +247,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 },
-@@ -975,6 +978,9 @@ static void set_refuse_options(void)
+@@ -976,6 +979,9 @@ static void set_refuse_options(void)
                ref = cp + 1;
        }
  
@@ -257,7 +257,7 @@ diff --git a/options.c b/options.c
        if (am_daemon) {
  #ifdef ICONV_OPTION
                if (!*lp_charset(module_id))
-@@ -1841,6 +1847,20 @@ int parse_arguments(int *argc_p, const char ***argv_p)
+@@ -1842,6 +1848,20 @@ int parse_arguments(int *argc_p, const char ***argv_p)
                        return 0;
  #endif
  
@@ -278,7 +278,7 @@ diff --git a/options.c b/options.c
                case OPT_STOP_AFTER: {
                        long val;
                        arg = poptGetOptArg(pc);
-@@ -2193,6 +2213,8 @@ int parse_arguments(int *argc_p, const char ***argv_p)
+@@ -2198,6 +2218,8 @@ int parse_arguments(int *argc_p, const char ***argv_p)
                        tmpdir = sanitize_path(NULL, tmpdir, NULL, 0, SP_DEFAULT);
                if (backup_dir)
                        backup_dir = sanitize_path(NULL, backup_dir, NULL, 0, SP_DEFAULT);
@@ -287,7 +287,7 @@ diff --git a/options.c b/options.c
        }
        if (daemon_filter_list.head && !am_sender) {
                filter_rule_list *elp = &daemon_filter_list;
-@@ -2833,6 +2855,12 @@ void server_options(char **args, int *argc_p)
+@@ -2838,6 +2860,12 @@ void server_options(char **args, int *argc_p)
                        args[ac++] = "--no-W";
        }
  
@@ -311,7 +311,7 @@ diff --git a/rsync.1.md b/rsync.1.md
  --compress, -z           compress file data during the transfer
  --compress-choice=STR    choose the compression algorithm (aka --zc)
  --compress-level=NUM     explicitly set compression level (aka --zl)
-@@ -2362,6 +2363,50 @@ your home directory (remove the '=' for that).
+@@ -2381,6 +2382,50 @@ your home directory (remove the '=' for that).
      specified (or implied by `-a`).  You can work-around this bug by avoiding
      the `-o` option when sending to an old rsync.
  
index 968fab84c8a2cbe3e5683a550827b1441e275a9e..2796bbe5325b8ba7c3560790698c566673370567 100644 (file)
@@ -27,7 +27,7 @@ xxHash is still preferred (and faster), but this provides a reasonably
 fast fallback for the case where xxHash libraries are not available at
 build time.
 
-based-on: 3008e7c2269936672d796d95b85b285fc07adc01
+based-on: 3e44bbd3132c22f7ce1ae48c0ce262f237473038
 diff --git a/Makefile.in b/Makefile.in
 --- a/Makefile.in
 +++ b/Makefile.in
index 5d70d6d6687e0d9f21dc22ddfb436de26f8cb478..d798cff7207781a260299ff4b652fc6b767dd50f 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: 3008e7c2269936672d796d95b85b285fc07adc01
+based-on: 3e44bbd3132c22f7ce1ae48c0ce262f237473038
 diff --git a/generator.c b/generator.c
 --- a/generator.c
 +++ b/generator.c
@@ -59,7 +59,7 @@ diff --git a/options.c b/options.c
  int one_file_system = 0;
  int protocol_version = PROTOCOL_VERSION;
  int sparse_files = 0;
-@@ -640,6 +641,7 @@ static struct poptOption long_options[] = {
+@@ -641,6 +642,7 @@ static struct poptOption long_options[] = {
    {"omit-link-times", 'J', POPT_ARG_VAL,    &omit_link_times, 1, 0, 0 },
    {"no-omit-link-times",0, POPT_ARG_VAL,    &omit_link_times, 0, 0, 0 },
    {"no-J",             0,  POPT_ARG_VAL,    &omit_link_times, 0, 0, 0 },
@@ -67,7 +67,7 @@ diff --git a/options.c b/options.c
    {"modify-window",   '@', POPT_ARG_INT,    &modify_window, OPT_MODIFY_WINDOW, 0, 0 },
    {"super",            0,  POPT_ARG_VAL,    &am_root, 2, 0, 0 },
    {"no-super",         0,  POPT_ARG_VAL,    &am_root, 0, 0, 0 },
-@@ -2262,6 +2264,9 @@ int parse_arguments(int *argc_p, const char ***argv_p)
+@@ -2267,6 +2269,9 @@ int parse_arguments(int *argc_p, const char ***argv_p)
                parse_filter_str(&filter_list, backup_dir_buf, rule_template(0), 0);
        }
  
@@ -77,7 +77,7 @@ diff --git a/options.c b/options.c
        if (make_backups && !backup_dir)
                omit_dir_times = -1; /* Implied, so avoid -O to sender. */
  
-@@ -2718,6 +2723,8 @@ void server_options(char **args, int *argc_p)
+@@ -2723,6 +2728,8 @@ void server_options(char **args, int *argc_p)
                        args[ac++] = "--size-only";
                if (do_stats)
                        args[ac++] = "--stats";
@@ -97,7 +97,7 @@ diff --git a/rsync.1.md b/rsync.1.md
  --super                  receiver attempts super-user activities
  --fake-super             store/recover privileged attrs using xattrs
  --sparse, -S             turn sequences of nulls into sparse blocks
-@@ -1426,6 +1427,11 @@ your home directory (remove the '=' for that).
+@@ -1445,6 +1446,11 @@ your home directory (remove the '=' for that).
      This tells rsync to omit symlinks when it is preserving modification,
      access, and create times.
  
index 80657418bfe99d2723307fe544e5a76ae4fcb7d5..19143128716d9e239c45c615ef703c7563776f04 100644 (file)
@@ -14,7 +14,7 @@ To use this patch, run these commands for a successful build:
     ./configure                           (optional if already run)
     make
 
-based-on: 3008e7c2269936672d796d95b85b285fc07adc01
+based-on: 3e44bbd3132c22f7ce1ae48c0ce262f237473038
 diff --git a/flist.c b/flist.c
 --- a/flist.c
 +++ b/flist.c
@@ -39,7 +39,7 @@ diff --git a/flist.c b/flist.c
 diff --git a/options.c b/options.c
 --- a/options.c
 +++ b/options.c
-@@ -116,6 +116,7 @@ int size_only = 0;
+@@ -117,6 +117,7 @@ int size_only = 0;
  int daemon_bwlimit = 0;
  int bwlimit = 0;
  int fuzzy_basis = 0;
@@ -47,7 +47,7 @@ diff --git a/options.c b/options.c
  size_t bwlimit_writemax = 0;
  int ignore_existing = 0;
  int ignore_non_existing = 0;
-@@ -766,6 +767,7 @@ static struct poptOption long_options[] = {
+@@ -767,6 +768,7 @@ static struct poptOption long_options[] = {
    {"itemize-changes", 'i', POPT_ARG_NONE,   0, 'i', 0, 0 },
    {"no-itemize-changes",0, POPT_ARG_VAL,    &itemize_changes, 0, 0, 0 },
    {"no-i",             0,  POPT_ARG_VAL,    &itemize_changes, 0, 0, 0 },
index 46ade148c8ac123e4a9e7bd02cbbde78188c4201..2ab4de6468c5cc2c3d8452180ecbc8c55b7316a0 100644 (file)
--- a/slp.diff
+++ b/slp.diff
@@ -10,7 +10,7 @@ To use this patch, run these commands for a successful build:
 TODO: the configure changes should abort if the user requests --enable-slp
 and we can't honor that request.
 
-based-on: 3008e7c2269936672d796d95b85b285fc07adc01
+based-on: 3e44bbd3132c22f7ce1ae48c0ce262f237473038
 diff --git a/Makefile.in b/Makefile.in
 --- a/Makefile.in
 +++ b/Makefile.in
@@ -200,7 +200,7 @@ diff --git a/rsyncd.conf.5.md b/rsyncd.conf.5.md
  # MODULE PARAMETERS
  
  After the global parameters you should define a number of modules, each module
-@@ -1168,6 +1183,7 @@ A more sophisticated example would be:
+@@ -1173,6 +1188,7 @@ A more sophisticated example would be:
  > max connections = 4
  > syslog facility = local5
  > pid file = /var/run/rsyncd.pid
index 5ae24805f07811b0bcdd7477b56927846fcb65f2..8a5dda888683a0d2c66684a89321070427246bbe 100644 (file)
@@ -10,7 +10,7 @@ To use this patch, run these commands for a successful build:
     ./configure                           (optional if already run)
     make
 
-based-on: 3008e7c2269936672d796d95b85b285fc07adc01
+based-on: 3e44bbd3132c22f7ce1ae48c0ce262f237473038
 diff --git a/syscall.c b/syscall.c
 --- a/syscall.c
 +++ b/syscall.c
index 95773a337e2cf3e469d0567dd20d94074ebdd120..99653acf364e3c74496c26356d4a15e1c9b14cf1 100644 (file)
@@ -9,7 +9,7 @@ To use this patch, run these commands for a successful build:
 
 -- Matt McCutchen <hashproduct@gmail.com>
 
-based-on: 3008e7c2269936672d796d95b85b285fc07adc01
+based-on: 3e44bbd3132c22f7ce1ae48c0ce262f237473038
 diff --git a/options.c b/options.c
 --- a/options.c
 +++ b/options.c
@@ -21,7 +21,7 @@ diff --git a/options.c b/options.c
  
  /**
   * If 1, send the whole file as literal data rather than trying to
-@@ -769,6 +770,7 @@ static struct poptOption long_options[] = {
+@@ -770,6 +771,7 @@ static struct poptOption long_options[] = {
    {"bwlimit",          0,  POPT_ARG_STRING, &bwlimit_arg, OPT_BWLIMIT, 0, 0 },
    {"no-bwlimit",       0,  POPT_ARG_VAL,    &bwlimit, 0, 0, 0 },
    {"backup",          'b', POPT_ARG_VAL,    &make_backups, 1, 0, 0 },
@@ -29,7 +29,7 @@ diff --git a/options.c b/options.c
    {"no-backup",        0,  POPT_ARG_VAL,    &make_backups, 0, 0, 0 },
    {"backup-dir",       0,  POPT_ARG_STRING, &backup_dir, 0, 0, 0 },
    {"suffix",           0,  POPT_ARG_STRING, &backup_suffix, 0, 0, 0 },
-@@ -2724,6 +2726,8 @@ void server_options(char **args, int *argc_p)
+@@ -2729,6 +2731,8 @@ void server_options(char **args, int *argc_p)
                                goto oom;
                        args[ac++] = arg;
                }
@@ -49,7 +49,7 @@ diff --git a/rsync.1.md b/rsync.1.md
  --del                    an alias for --delete-during
  --delete                 delete extraneous files from dest dirs
  --delete-before          receiver deletes before xfer, not during
-@@ -1647,6 +1648,16 @@ your home directory (remove the '=' for that).
+@@ -1666,6 +1667,16 @@ your home directory (remove the '=' for that).
      Starting with 3.1.0, rsync will skip the sender-side removal (and output an
      error) if the file's size or modify time has not stayed unchanged.
  
index 924069bbc2cd595ca257245c2776104175ba5ffc..c3d3c02d51625314dd26c087687cd3e05eb7f93a 100644 (file)
@@ -30,7 +30,7 @@ To use this patch, run these commands for a successful build:
     ./configure                                (optional if already run)
     make
 
-based-on: 3008e7c2269936672d796d95b85b285fc07adc01
+based-on: 3e44bbd3132c22f7ce1ae48c0ce262f237473038
 diff --git a/generator.c b/generator.c
 --- a/generator.c
 +++ b/generator.c
@@ -66,7 +66,7 @@ diff --git a/main.c b/main.c
 diff --git a/options.c b/options.c
 --- a/options.c
 +++ b/options.c
-@@ -113,6 +113,7 @@ int safe_symlinks = 0;
+@@ -114,6 +114,7 @@ int safe_symlinks = 0;
  int copy_unsafe_links = 0;
  int munge_symlinks = 0;
  int size_only = 0;
@@ -74,7 +74,7 @@ diff --git a/options.c b/options.c
  int daemon_bwlimit = 0;
  int bwlimit = 0;
  int fuzzy_basis = 0;
-@@ -173,6 +174,8 @@ char *logfile_name = NULL;
+@@ -174,6 +175,8 @@ char *logfile_name = NULL;
  char *logfile_format = NULL;
  char *stdout_format = NULL;
  char *password_file = NULL;
@@ -83,7 +83,7 @@ diff --git a/options.c b/options.c
  char *early_input_file = NULL;
  char *rsync_path = RSYNC_PATH;
  char *backup_dir = NULL;
-@@ -681,6 +684,7 @@ static struct poptOption long_options[] = {
+@@ -682,6 +685,7 @@ static struct poptOption long_options[] = {
    {"chmod",            0,  POPT_ARG_STRING, 0, OPT_CHMOD, 0, 0 },
    {"ignore-times",    'I', POPT_ARG_NONE,   &ignore_times, 0, 0, 0 },
    {"size-only",        0,  POPT_ARG_NONE,   &size_only, 0, 0, 0 },
@@ -91,7 +91,7 @@ diff --git a/options.c b/options.c
    {"one-file-system", 'x', POPT_ARG_NONE,   0, 'x', 0, 0 },
    {"no-one-file-system",0, POPT_ARG_VAL,    &one_file_system, 0, 0, 0 },
    {"no-x",             0,  POPT_ARG_VAL,    &one_file_system, 0, 0, 0 },
-@@ -816,6 +820,8 @@ static struct poptOption long_options[] = {
+@@ -817,6 +821,8 @@ static struct poptOption long_options[] = {
    {"early-input",      0,  POPT_ARG_STRING, &early_input_file, 0, 0, 0 },
    {"blocking-io",      0,  POPT_ARG_VAL,    &blocking_io, 1, 0, 0 },
    {"no-blocking-io",   0,  POPT_ARG_VAL,    &blocking_io, 0, 0, 0 },
@@ -100,7 +100,7 @@ diff --git a/options.c b/options.c
    {"outbuf",           0,  POPT_ARG_STRING, &outbuf_mode, 0, 0, 0 },
    {"remote-option",   'M', POPT_ARG_STRING, 0, 'M', 0, 0 },
    {"protocol",         0,  POPT_ARG_INT,    &protocol_version, 0, 0, 0 },
-@@ -2385,6 +2391,16 @@ int parse_arguments(int *argc_p, const char ***argv_p)
+@@ -2390,6 +2396,16 @@ int parse_arguments(int *argc_p, const char ***argv_p)
                }
        }
  
@@ -117,7 +117,7 @@ diff --git a/options.c b/options.c
        if (files_from) {
                char *h, *p;
                int q;
-@@ -2738,6 +2754,25 @@ void server_options(char **args, int *argc_p)
+@@ -2743,6 +2759,25 @@ void server_options(char **args, int *argc_p)
        else if (missing_args == 1 && !am_sender)
                args[ac++] = "--ignore-missing-args";
  
@@ -330,7 +330,7 @@ diff --git a/rsync.1.md b/rsync.1.md
  --protocol=NUM           force an older protocol version to be used
  --iconv=CONVERT_SPEC     request charset conversion of filenames
  --checksum-seed=NUM      set block/file checksum seed (advanced)
-@@ -3319,6 +3322,36 @@ your home directory (remove the '=' for that).
+@@ -3336,6 +3339,36 @@ your home directory (remove the '=' for that).
      `--write-batch`.  If _FILE_ is `-`, the batch data will be read from
      standard input. See the "BATCH MODE" section for details.
  
index 658dc16899ca36911da40c830d9e51d185b9ac80..aedb6baca34d5a2a86109f0de5deaff807e6ab95 100644 (file)
@@ -18,7 +18,7 @@ To use this patch, run these commands for a successful build:
     ./configure                               (optional if already run)
     make
 
-based-on: 3008e7c2269936672d796d95b85b285fc07adc01
+based-on: 3e44bbd3132c22f7ce1ae48c0ce262f237473038
 diff --git a/fileio.c b/fileio.c
 --- a/fileio.c
 +++ b/fileio.c
@@ -50,7 +50,7 @@ diff --git a/options.c b/options.c
  int preallocate_files = 0;
  int do_compression = 0;
  int do_compression_level = CLVL_NOT_SPECIFIED;
-@@ -694,6 +695,7 @@ static struct poptOption long_options[] = {
+@@ -695,6 +696,7 @@ static struct poptOption long_options[] = {
    {"sparse",          'S', POPT_ARG_VAL,    &sparse_files, 1, 0, 0 },
    {"no-sparse",        0,  POPT_ARG_VAL,    &sparse_files, 0, 0, 0 },
    {"no-S",             0,  POPT_ARG_VAL,    &sparse_files, 0, 0, 0 },
@@ -58,7 +58,7 @@ diff --git a/options.c b/options.c
    {"preallocate",      0,  POPT_ARG_NONE,   &preallocate_files, 0, 0, 0},
    {"inplace",          0,  POPT_ARG_VAL,    &inplace, 1, 0, 0 },
    {"no-inplace",       0,  POPT_ARG_VAL,    &inplace, 0, 0, 0 },
-@@ -2640,6 +2642,12 @@ void server_options(char **args, int *argc_p)
+@@ -2645,6 +2647,12 @@ void server_options(char **args, int *argc_p)
                args[ac++] = arg;
        }
  
@@ -82,7 +82,7 @@ diff --git a/rsync.1.md b/rsync.1.md
  --preallocate            allocate dest files before writing them
  --write-devices          write to devices as files (implies --inplace)
  --dry-run, -n            perform a trial run with no changes made
-@@ -1498,6 +1499,18 @@ your home directory (remove the '=' for that).
+@@ -1517,6 +1518,18 @@ your home directory (remove the '=' for that).
      opposed to allocated sequences of null bytes) if the kernel version and
      filesystem type support creating holes in the allocated data.
  
index 039568a90a27c3320fd228247f1abb742dd0dac8..edb3b028e275f52be298f5347dbdb5663f840f62 100644 (file)
@@ -10,7 +10,7 @@ To use this patch, run these commands for a successful build:
     ./configure                                 (optional if already run)
     make
 
-based-on: 3008e7c2269936672d796d95b85b285fc07adc01
+based-on: 3e44bbd3132c22f7ce1ae48c0ce262f237473038
 diff --git a/flist.c b/flist.c
 --- a/flist.c
 +++ b/flist.c
@@ -88,7 +88,7 @@ diff --git a/flist.c b/flist.c
 diff --git a/options.c b/options.c
 --- a/options.c
 +++ b/options.c
-@@ -204,6 +204,7 @@ int logfile_format_has_i = 0;
+@@ -205,6 +205,7 @@ int logfile_format_has_i = 0;
  int logfile_format_has_o_or_i = 0;
  int always_checksum = 0;
  int list_only = 0;
@@ -96,7 +96,7 @@ diff --git a/options.c b/options.c
  
  #define MAX_BATCH_NAME_LEN 256        /* Must be less than MAXPATHLEN-13 */
  char *batch_name = NULL;
-@@ -800,6 +801,7 @@ static struct poptOption long_options[] = {
+@@ -801,6 +802,7 @@ static struct poptOption long_options[] = {
    {"temp-dir",        'T', POPT_ARG_STRING, &tmpdir, 0, 0, 0 },
    {"iconv",            0,  POPT_ARG_STRING, &iconv_opt, 0, 0, 0 },
    {"no-iconv",         0,  POPT_ARG_NONE,   0, OPT_NO_ICONV, 0, 0 },
@@ -104,7 +104,7 @@ diff --git a/options.c b/options.c
    {"ipv4",            '4', POPT_ARG_VAL,    &default_af_hint, AF_INET, 0, 0 },
    {"ipv6",            '6', POPT_ARG_VAL,    &default_af_hint, AF_INET6, 0, 0 },
    {"8-bit-output",    '8', POPT_ARG_VAL,    &allow_8bit_chars, 1, 0, 0 },
-@@ -2431,6 +2433,24 @@ int parse_arguments(int *argc_p, const char ***argv_p)
+@@ -2436,6 +2438,24 @@ int parse_arguments(int *argc_p, const char ***argv_p)
                }
        }
  
@@ -129,7 +129,7 @@ diff --git a/options.c b/options.c
        am_starting_up = 0;
  
        return 1;
-@@ -2850,6 +2870,12 @@ void server_options(char **args, int *argc_p)
+@@ -2855,6 +2875,12 @@ void server_options(char **args, int *argc_p)
        if (relative_paths && !implied_dirs && (!am_sender || protocol_version >= 30))
                args[ac++] = "--no-implied-dirs";
  
@@ -153,7 +153,7 @@ diff --git a/rsync.1.md b/rsync.1.md
  --checksum-seed=NUM      set block/file checksum seed (advanced)
  --ipv4, -4               prefer IPv4
  --ipv6, -6               prefer IPv6
-@@ -3361,6 +3362,25 @@ your home directory (remove the '=' for that).
+@@ -3378,6 +3379,25 @@ your home directory (remove the '=' for that).
      free to specify just the local charset for a daemon transfer (e.g.
      `--iconv=utf8`).
  
index 848617d3da8fffc0956b73cbbf3d64eb7193de51..e996bd7e3684143274ec2b2bb664dde637d0ba3d 100644 (file)
@@ -6,7 +6,7 @@ To use this patch, run these commands for a successful build:
     patch -p1 <patches/xxh3-safety-check.diff
     make
 
-based-on: 3008e7c2269936672d796d95b85b285fc07adc01
+based-on: 3e44bbd3132c22f7ce1ae48c0ce262f237473038
 diff --git a/checksum.c b/checksum.c
 --- a/checksum.c
 +++ b/checksum.c
@@ -64,7 +64,7 @@ diff --git a/checksum.c b/checksum.c
 diff --git a/compat.c b/compat.c
 --- a/compat.c
 +++ b/compat.c
-@@ -521,6 +521,8 @@ static void negotiate_the_strings(int f_in, int f_out)
+@@ -523,6 +523,8 @@ static void negotiate_the_strings(int f_in, int f_out)
  {
        /* We send all the negotiation strings before we start to read them to help avoid a slow startup. */