Updated to the latest master.
authorWayne Davison <wayne@opencoder.net>
Thu, 25 Feb 2021 17:21:10 +0000 (09:21 -0800)
committerWayne Davison <wayne@opencoder.net>
Thu, 25 Feb 2021 17:21:10 +0000 (09:21 -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
fsync.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
stderr-compat.diff
transliterate.diff

index 1d8dc025eca10c0de7dd7d36b1855b1873ba5630..f63db15d567570848fff209f780a6c0bf5ce0391 100644 (file)
@@ -7,11 +7,11 @@ To use this patch, run these commands for a successful build:
     ./configure                                 (optional if already run)
     make
 
-based-on: e94bad1c156fc3910f24e2b3b71a81b0b0bdeb70
+based-on: 603cf476ef5a1155203037d2127341cdbb8646d7
 diff --git a/generator.c b/generator.c
 --- a/generator.c
 +++ b/generator.c
-@@ -1837,7 +1837,7 @@ static void recv_generator(char *fname, struct file_struct *file, int ndx,
+@@ -1834,7 +1834,7 @@ static void recv_generator(char *fname, struct file_struct *file, int ndx,
                goto notify_others;
  
        if (read_batch || whole_file) {
@@ -20,7 +20,7 @@ diff --git a/generator.c b/generator.c
                        if (!(backupptr = get_backup_name(fname)))
                                goto cleanup;
                        if (!(back_file = make_file(fname, NULL, NULL, 0, NO_FILTERS)))
-@@ -1873,7 +1873,7 @@ static void recv_generator(char *fname, struct file_struct *file, int ndx,
+@@ -1870,7 +1870,7 @@ static void recv_generator(char *fname, struct file_struct *file, int ndx,
                goto notify_others;
        }
  
@@ -29,7 +29,7 @@ diff --git a/generator.c b/generator.c
                if (!(backupptr = get_backup_name(fname))) {
                        close(fd);
                        goto cleanup;
-@@ -1997,7 +1997,7 @@ int atomic_create(struct file_struct *file, char *fname, const char *slnk, const
+@@ -1994,7 +1994,7 @@ int atomic_create(struct file_struct *file, char *fname, const char *slnk, const
                skip_atomic = 0;
  
        if (del_for_flag) {
@@ -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 },
-@@ -2726,6 +2727,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
-@@ -856,6 +857,13 @@ your home directory (remove the '=' for that).
+@@ -860,6 +861,13 @@ your home directory (remove the '=' for that).
      trailing inclusion/exclusion of `*`, the auto-added rule would never be
      reached).
  
index 3640d40e777770d1a728a01124fc4c71080ccb0d..1ab2c04b592aa471d65d236a6464e3eddd112431 100644 (file)
@@ -319,7 +319,7 @@ diff --git a/options.c b/options.c
  
        if (preserve_times) {
                preserve_times = PRESERVE_FILE_TIMES;
-@@ -2701,6 +2761,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) {
-@@ -2709,6 +2773,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 717256744ee19e3f6df6a0311a8a533084cd236e..c0d91ccac00cbedc71d0516528ac28bc93529cdc 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: e94bad1c156fc3910f24e2b3b71a81b0b0bdeb70
+based-on: 603cf476ef5a1155203037d2127341cdbb8646d7
 diff --git a/errcode.h b/errcode.h
 --- a/errcode.h
 +++ b/errcode.h
@@ -65,7 +65,7 @@ diff --git a/main.c b/main.c
  }
  
  void write_del_stats(int f)
-@@ -1629,6 +1632,14 @@ void remember_children(UNUSED(int val))
+@@ -1632,6 +1635,14 @@ void remember_children(UNUSED(int val))
                                break;
                        }
                }
@@ -80,7 +80,7 @@ diff --git a/main.c b/main.c
        }
  #endif
  #ifndef HAVE_SIGACTION
-@@ -1684,6 +1695,12 @@ static void rsync_panic_handler(UNUSED(int whatsig))
+@@ -1687,6 +1698,12 @@ static void rsync_panic_handler(UNUSED(int whatsig))
  }
  #endif
  
@@ -93,7 +93,7 @@ diff --git a/main.c b/main.c
  
  int main(int argc,char *argv[])
  {
-@@ -1708,6 +1725,11 @@ int main(int argc,char *argv[])
+@@ -1711,6 +1728,11 @@ int main(int argc,char *argv[])
        SIGACTMASK(SIGFPE, rsync_panic_handler);
        SIGACTMASK(SIGABRT, rsync_panic_handler);
        SIGACTMASK(SIGBUS, rsync_panic_handler);
index 7f8a0e3ae4d08c3f26f5482751e8c8efcde255b3..48e55a0cf6c49f74c3d9556729e35a095e5c131b 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: d2a97a7ab492e0d0548708251309e077e6aa8c8b
+based-on: 603cf476ef5a1155203037d2127341cdbb8646d7
 diff --git a/clientserver.c b/clientserver.c
 --- a/clientserver.c
 +++ b/clientserver.c
@@ -472,7 +472,7 @@ diff --git a/generator.c b/generator.c
  extern int remove_source_files;
  extern int delay_updates;
  extern int update_only;
-@@ -611,7 +612,7 @@ static enum filetype get_file_type(mode_t mode)
+@@ -612,7 +613,7 @@ static enum filetype get_file_type(mode_t mode)
  }
  
  /* Perform our quick-check heuristic for determining if a file is unchanged. */
@@ -481,7 +481,7 @@ diff --git a/generator.c b/generator.c
  {
        switch (ftype) {
          case FT_REG:
-@@ -622,7 +623,10 @@ int quick_check_ok(enum filetype ftype, const char *fn, struct file_struct *file
+@@ -623,7 +624,10 @@ int quick_check_ok(enum filetype ftype, const char *fn, struct file_struct *file
                 * of the file mtime to determine whether to sync. */
                if (always_checksum > 0) {
                        char sum[MAX_DIGEST_LEN];
@@ -493,7 +493,7 @@ diff --git a/generator.c b/generator.c
                        return memcmp(sum, F_SUM(file), flist_csum_len) == 0;
                }
  
-@@ -950,7 +954,7 @@ static int try_dests_reg(struct file_struct *file, char *fname, int ndx,
+@@ -951,7 +955,7 @@ static int try_dests_reg(struct file_struct *file, char *fname, int ndx,
                        best_match = j;
                        match_level = 1;
                }
@@ -502,7 +502,7 @@ diff --git a/generator.c b/generator.c
                        continue;
                if (match_level == 1) {
                        best_match = j;
-@@ -1209,7 +1213,7 @@ static void recv_generator(char *fname, struct file_struct *file, int ndx,
+@@ -1210,7 +1214,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;
        static struct file_list *fuzzy_dirlist[MAX_BASIS_DIRS+1];
@@ -511,7 +511,7 @@ diff --git a/generator.c b/generator.c
        struct file_struct *fuzzy_file = NULL;
        int fd = -1, f_copy = -1;
        stat_x sx, real_sx;
-@@ -1327,8 +1331,9 @@ static void recv_generator(char *fname, struct file_struct *file, int ndx,
+@@ -1328,8 +1332,9 @@ static void recv_generator(char *fname, struct file_struct *file, int ndx,
                                                fuzzy_dirlist[i] = NULL;
                                        }
                                }
@@ -523,7 +523,7 @@ diff --git a/generator.c b/generator.c
  #ifdef SUPPORT_ACLS
                        if (!preserve_perms)
                                dflt_perms = default_perms_for_dir(dn);
-@@ -1336,6 +1341,24 @@ static void recv_generator(char *fname, struct file_struct *file, int ndx,
+@@ -1337,6 +1342,24 @@ static void recv_generator(char *fname, struct file_struct *file, int ndx,
                }
                parent_dirname = dn;
  
@@ -548,7 +548,7 @@ diff --git a/generator.c b/generator.c
                statret = link_stat(fname, &sx.st, keep_dirlinks && is_dir);
                stat_errno = errno;
        }
-@@ -1743,22 +1766,6 @@ static void recv_generator(char *fname, struct file_struct *file, int ndx,
+@@ -1746,22 +1769,6 @@ static void recv_generator(char *fname, struct file_struct *file, int ndx,
                partialptr = NULL;
  
        if (statret != 0 && fuzzy_basis) {
@@ -571,7 +571,7 @@ diff --git a/generator.c b/generator.c
                /* Sets fnamecmp_type to FNAMECMP_FUZZY or above. */
                fuzzy_file = find_fuzzy(file, fuzzy_dirlist, &fnamecmp_type);
                if (fuzzy_file) {
-@@ -1791,7 +1798,7 @@ static void recv_generator(char *fname, struct file_struct *file, int ndx,
+@@ -1794,7 +1801,7 @@ static void recv_generator(char *fname, struct file_struct *file, int ndx,
                ;
        else if (fnamecmp_type >= FNAMECMP_FUZZY)
                ;
index 1aaafd93449e78e688c60e8cfdf0d127d1d55160..e75f3bad46203664244ec3e7d64c2179828d2c85 100644 (file)
@@ -455,7 +455,7 @@ diff --git a/generator.c b/generator.c
  static const char *solo_file = NULL;
  
  /* Forward declarations. */
-@@ -1354,7 +1355,8 @@ static void recv_generator(char *fname, struct file_struct *file, int ndx,
+@@ -1355,7 +1356,8 @@ static void recv_generator(char *fname, struct file_struct *file, int ndx,
                                }
                        }
                        if (checksum_files) {
@@ -465,7 +465,7 @@ diff --git a/generator.c b/generator.c
                        }
                        need_new_dirscan = 0;
                }
-@@ -1540,6 +1542,7 @@ static void recv_generator(char *fname, struct file_struct *file, int ndx,
+@@ -1543,6 +1545,7 @@ static void recv_generator(char *fname, struct file_struct *file, int ndx,
                        else
                                change_local_filter_dir(fname, strlen(fname), F_DEPTH(file));
                }
@@ -473,7 +473,7 @@ diff --git a/generator.c b/generator.c
                prior_dir_file = file;
                goto cleanup;
        }
-@@ -1804,6 +1807,8 @@ static void recv_generator(char *fname, struct file_struct *file, int ndx,
+@@ -1807,6 +1810,8 @@ static void recv_generator(char *fname, struct file_struct *file, int ndx,
                        handle_partial_dir(partialptr, PDIR_DELETE);
                }
                set_file_attrs(fname, file, &sx, NULL, maybe_ATTRS_REPORT | maybe_ATTRS_ACCURATE_TIME);
@@ -482,7 +482,7 @@ diff --git a/generator.c b/generator.c
                if (itemizing)
                        itemize(fnamecmp, file, ndx, statret, &sx, 0, 0, NULL);
  #ifdef SUPPORT_HARD_LINKS
-@@ -2300,6 +2305,7 @@ void generate_files(int f_out, const char *local_name)
+@@ -2303,6 +2308,7 @@ void generate_files(int f_out, const char *local_name)
                                } else
                                        change_local_filter_dir(fbuf, strlen(fbuf), F_DEPTH(fp));
                        }
@@ -490,7 +490,7 @@ diff --git a/generator.c b/generator.c
                }
                for (i = cur_flist->low; i <= cur_flist->high; i++) {
                        struct file_struct *file = cur_flist->sorted[i];
-@@ -2394,6 +2400,9 @@ void generate_files(int f_out, const char *local_name)
+@@ -2397,6 +2403,9 @@ void generate_files(int f_out, const char *local_name)
                        wait_for_receiver();
        }
  
index 7dd3c6016b721671450a551ee2d6b8bdf5eebe05..249d2f1de33cae4b207c4ac0e1001a463ddb4331 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: d2a97a7ab492e0d0548708251309e077e6aa8c8b
+based-on: 603cf476ef5a1155203037d2127341cdbb8646d7
 diff --git a/flist.c b/flist.c
 --- a/flist.c
 +++ b/flist.c
@@ -25,7 +25,7 @@ diff --git a/flist.c b/flist.c
 diff --git a/generator.c b/generator.c
 --- a/generator.c
 +++ b/generator.c
-@@ -622,7 +622,8 @@ int quick_check_ok(enum filetype ftype, const char *fn, struct file_struct *file
+@@ -623,7 +623,8 @@ int quick_check_ok(enum filetype ftype, const char *fn, struct file_struct *file
                 * of the file mtime to determine whether to sync. */
                if (always_checksum > 0) {
                        char sum[MAX_DIGEST_LEN];
@@ -317,4 +317,4 @@ diff --git a/xattrs.c b/xattrs.c
 +
  int get_stat_xattr(const char *fname, int fd, STRUCT_STAT *fst, STRUCT_STAT *xst)
  {
-       int mode, rdev_major, rdev_minor, uid, gid, len;
+       unsigned int mode;
index af5a7b231d898b3925bb70c117966521d953de17..00d5f53876557164c2bc101671c56675038244ed 100644 (file)
@@ -1,10 +1,11 @@
-This patch adds the --clone-dest option that works like --link-dest but
-without requiring the metadata of the files to match in order to be able
-to share the file's data.  This currently only supports Linux's FICLONE
-syscall, and that may only be supported on Btrfs at the moment.
+This patch adds the --clone-dest option that works link --link-dest
+but without requiring the metadata of the files to match in order
+to be able to share the file's data.
 
-This patch has had minor testing, including some fixes that make sure
-that the attributes of a cloned file get set after it is cloned.
+NOTE: this patch is mostly untested because I don't currently have
+a btrfs mount to test it out on.  I still need to make sure that a
+cloned file gets its destination attributes set correctly after the
+clone, for instance.
 
 To use this patch, run these commands for a successful build:
 
@@ -12,7 +13,7 @@ To use this patch, run these commands for a successful build:
     ./configure                         (optional if already run)
     make
 
-based-on: a28c4558c5644d4423a937d025ca64fe4e3ce84b
+based-on: 603cf476ef5a1155203037d2127341cdbb8646d7
 diff --git a/Makefile.in b/Makefile.in
 --- a/Makefile.in
 +++ b/Makefile.in
index 857df2242b35b7e8ce54a86f4160172d8d8619be..542e718d0adf60d1bdcdfb2094c00ba3e66fc9de 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: e94bad1c156fc3910f24e2b3b71a81b0b0bdeb70
+based-on: 603cf476ef5a1155203037d2127341cdbb8646d7
 diff --git a/daemon-parm.txt b/daemon-parm.txt
 --- a/daemon-parm.txt
 +++ b/daemon-parm.txt
index 780002c818e77693cf52b061647961afde9c0ce3..2a886938bbebe80ddbb252934d209f125ffdd053 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: d2a97a7ab492e0d0548708251309e077e6aa8c8b
+based-on: 603cf476ef5a1155203037d2127341cdbb8646d7
 diff --git a/generator.c b/generator.c
 --- a/generator.c
 +++ b/generator.c
@@ -20,7 +20,7 @@ diff --git a/generator.c b/generator.c
  extern int write_devices;
  extern int preserve_specials;
  extern int preserve_hard_links;
-@@ -1673,7 +1674,7 @@ static void recv_generator(char *fname, struct file_struct *file, int ndx,
+@@ -1676,7 +1677,7 @@ static void recv_generator(char *fname, struct file_struct *file, int ndx,
                goto cleanup;
        }
  
@@ -29,7 +29,7 @@ diff --git a/generator.c b/generator.c
                if (solo_file)
                        fname = f_name(file, NULL);
                rprintf(FINFO, "skipping non-regular file \"%s\"\n", fname);
-@@ -1894,6 +1895,9 @@ static void recv_generator(char *fname, struct file_struct *file, int ndx,
+@@ -1897,6 +1898,9 @@ static void recv_generator(char *fname, struct file_struct *file, int ndx,
                fnamecmp_type = FNAMECMP_BACKUP;
        }
  
index 41809bbcb6c797116065c781995bc56226ef8fb5..a4d8034a9f8e56143113c06de81363f58596bbe5 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: d2a97a7ab492e0d0548708251309e077e6aa8c8b
+based-on: 603cf476ef5a1155203037d2127341cdbb8646d7
 diff --git a/generator.c b/generator.c
 --- a/generator.c
 +++ b/generator.c
@@ -26,7 +26,7 @@ diff --git a/generator.c b/generator.c
  extern int size_only;
  extern OFF_T max_size;
  extern OFF_T min_size;
-@@ -618,6 +619,9 @@ int quick_check_ok(enum filetype ftype, const char *fn, struct file_struct *file
+@@ -619,6 +620,9 @@ int quick_check_ok(enum filetype ftype, const char *fn, struct file_struct *file
                if (st->st_size != F_LENGTH(file))
                        return 0;
  
diff --git a/db.diff b/db.diff
index 0a7597eaaaf9e325de91ba9a473377510a2c2389..cb7873908ffe0d6c50e56a11ab4d6a586c0afb94 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: 9dd62525f3b98d692e031f22c02be8f775966503
+based-on: 603cf476ef5a1155203037d2127341cdbb8646d7
 diff --git a/.gitignore b/.gitignore
 --- a/.gitignore
 +++ b/.gitignore
@@ -55,7 +55,7 @@ diff --git a/Makefile.in b/Makefile.in
  LIBOBJ=lib/wildmatch.o lib/compat.o lib/snprintf.o lib/mdfour.o lib/md5.o \
 @@ -43,7 +44,7 @@ zlib_OBJS=zlib/deflate.o zlib/inffast.o zlib/inflate.o zlib/inftrees.o \
  OBJS1=flist.o rsync.o generator.o receiver.o cleanup.o sender.o exclude.o \
-       util.o util2.o main.o checksum.o match.o syscall.o log.o backup.o delete.o
+       util1.o util2.o main.o checksum.o match.o syscall.o log.o backup.o delete.o
  OBJS2=options.o io.o compat.o hlink.o token.o uidlist.o socket.o hashtable.o \
 -      usage.o fileio.o batch.o clientname.o chmod.o acls.o xattrs.o
 +      usage.o fileio.o batch.o clientname.o chmod.o db.o acls.o xattrs.o
@@ -226,8 +226,8 @@ diff --git a/configure.ac b/configure.ac
 +    mysql/mysql.h sqlite3.h \
      netdb.h malloc.h float.h limits.h iconv.h libcharset.h langinfo.h mcheck.h \
      sys/acl.h acl/libacl.h attr/xattr.h sys/xattr.h sys/extattr.h dl.h \
-     popt.h popt/popt.h linux/falloc.h netinet/in_systm.h netinet/ip.h \
-@@ -1467,6 +1468,48 @@ if test x"$enable_acl_support" = x"no" -o x"$enable_xattr_support" = x"no" -o x"
+     popt.h popt/popt.h linux/falloc.h netinet/in_systm.h netgroup.h \
+@@ -1473,6 +1474,48 @@ if test x"$enable_acl_support" = x"no" -o x"$enable_xattr_support" = x"no" -o x"
      fi
  fi
  
index 03326df0e4e8537e7531ba162a8520cc3f9cb37c..5738b7e083d7d8790b510d90360c75103daafbdb 100644 (file)
@@ -24,7 +24,7 @@ based-on: patch/master/detect-renamed
 diff --git a/generator.c b/generator.c
 --- a/generator.c
 +++ b/generator.c
-@@ -468,7 +468,9 @@ static int fattr_find(struct file_struct *f, char *fname)
+@@ -465,7 +465,9 @@ static int fattr_find(struct file_struct *f, char *fname)
                                continue;
                        }
                }
@@ -35,7 +35,7 @@ diff --git a/generator.c b/generator.c
                diff = u_strcmp(fmid->basename, f->basename);
                if (diff == 0) {
                        good_match = mid;
-@@ -1982,6 +1984,21 @@ static void recv_generator(char *fname, struct file_struct *file, int ndx,
+@@ -1979,6 +1981,21 @@ static void recv_generator(char *fname, struct file_struct *file, int ndx,
                fnamecmp = partialptr;
                fnamecmp_type = FNAMECMP_PARTIAL_DIR;
                statret = 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 },
-@@ -2763,8 +2765,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
-@@ -2264,6 +2266,17 @@ your home directory (remove the '=' for that).
+@@ -2276,6 +2278,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 a961336bb263ddbc5fbaca97d211de3a89f7cf82..8148546e3915adb48b2897342d63bbfa5c5f4167 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: 9cd85b849672c93c4b1f534898585f92ec4de30d
+based-on: 603cf476ef5a1155203037d2127341cdbb8646d7
 diff --git a/backup.c b/backup.c
 --- a/backup.c
 +++ b/backup.c
@@ -244,7 +244,7 @@ diff --git a/generator.c b/generator.c
  static int deldelay_size = 0, deldelay_cnt = 0;
  static char *deldelay_buf = NULL;
  static int deldelay_fd = -1;
-@@ -269,14 +272,19 @@ static void do_delayed_deletions(char *delbuf)
+@@ -266,14 +269,19 @@ static void do_delayed_deletions(char *delbuf)
   * all the --delete-WHEN options.  Note that the fbuf pointer must point to a
   * MAXPATHLEN buffer with the name of the directory in it (the functions we
   * call will append names onto the end, but the old dir value will be restored
@@ -268,7 +268,7 @@ diff --git a/generator.c b/generator.c
  
        if (!fbuf) {
                change_local_filter_dir(NULL, 0, 0);
-@@ -290,17 +298,22 @@ static void delete_in_dir(char *fbuf, struct file_struct *file, dev_t *fs_dev)
+@@ -287,17 +295,22 @@ static void delete_in_dir(char *fbuf, struct file_struct *file, dev_t *fs_dev)
                maybe_send_keepalive(time(NULL), MSK_ALLOW_FLUSH);
  
        if (io_error & IOERR_GENERAL && !ignore_errors) {
@@ -296,7 +296,7 @@ diff --git a/generator.c b/generator.c
        if (one_file_system) {
                if (!dev_tbl)
                        dev_tbl = hashtable_create(16, HT_KEY64);
-@@ -316,6 +329,14 @@ static void delete_in_dir(char *fbuf, struct file_struct *file, dev_t *fs_dev)
+@@ -313,6 +326,14 @@ static void delete_in_dir(char *fbuf, struct file_struct *file, dev_t *fs_dev)
  
        dirlist = get_dirlist(fbuf, dlen, 0);
  
@@ -311,7 +311,7 @@ diff --git a/generator.c b/generator.c
        /* If an item in dirlist is not found in flist, delete it
         * from the filesystem. */
        for (i = dirlist->used; i--; ) {
-@@ -328,6 +349,10 @@ static void delete_in_dir(char *fbuf, struct file_struct *file, dev_t *fs_dev)
+@@ -325,6 +346,10 @@ static void delete_in_dir(char *fbuf, struct file_struct *file, dev_t *fs_dev)
                                        f_name(fp, NULL));
                        continue;
                }
@@ -322,7 +322,7 @@ diff --git a/generator.c b/generator.c
                /* Here we want to match regardless of file type.  Replacement
                 * of a file with one of another type is handled separately by
                 * a delete_item call with a DEL_MAKE_ROOM flag. */
-@@ -336,14 +361,19 @@ static void delete_in_dir(char *fbuf, struct file_struct *file, dev_t *fs_dev)
+@@ -333,14 +358,19 @@ static void delete_in_dir(char *fbuf, struct file_struct *file, dev_t *fs_dev)
                        if (!(fp->mode & S_IWUSR) && !am_root && fp->flags & FLAG_OWNED_BY_US)
                                flags |= DEL_NO_UID_WRITE;
                        f_name(fp, delbuf);
@@ -346,7 +346,7 @@ diff --git a/generator.c b/generator.c
        flist_free(dirlist);
  }
  
-@@ -379,14 +409,125 @@ static void do_delete_pass(void)
+@@ -376,14 +406,125 @@ static void do_delete_pass(void)
                 || !S_ISDIR(st.st_mode))
                        continue;
  
@@ -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
-@@ -1187,6 +1328,7 @@ static void list_file_entry(struct file_struct *f)
+@@ -1177,6 +1318,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;
  
-@@ -1323,7 +1465,7 @@ static void recv_generator(char *fname, struct file_struct *file, int ndx,
+@@ -1314,7 +1456,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));
-@@ -1459,7 +1601,7 @@ static void recv_generator(char *fname, struct file_struct *file, int ndx,
+@@ -1467,7 +1609,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",
-@@ -1507,9 +1649,12 @@ static void recv_generator(char *fname, struct file_struct *file, int ndx,
+@@ -1515,9 +1657,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;
-@@ -1786,8 +1931,14 @@ static void recv_generator(char *fname, struct file_struct *file, int ndx,
+@@ -1783,8 +1928,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;
-@@ -2251,6 +2402,12 @@ void generate_files(int f_out, const char *local_name)
+@@ -2248,6 +2399,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) {
-@@ -2259,7 +2416,7 @@ void generate_files(int f_out, const char *local_name)
+@@ -2256,7 +2413,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",
-@@ -2295,7 +2452,7 @@ void generate_files(int f_out, const char *local_name)
+@@ -2292,7 +2449,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));
                        }
-@@ -2342,7 +2499,21 @@ void generate_files(int f_out, const char *local_name)
+@@ -2339,7 +2496,21 @@ void generate_files(int f_out, const char *local_name)
        } while ((cur_flist = cur_flist->next) != NULL);
  
        if (delete_during)
@@ -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
-@@ -2249,6 +2250,22 @@ your home directory (remove the '=' for that).
+@@ -2259,6 +2260,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.
  
@@ -692,7 +692,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
-@@ -282,7 +282,7 @@ enum msgcode {
+@@ -286,7 +286,7 @@ enum filetype {
  #define NDX_DEL_STATS -3
  #define NDX_FLIST_OFFSET -101
  
@@ -701,7 +701,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 */
-@@ -292,6 +292,7 @@ enum msgcode {
+@@ -296,6 +296,7 @@ enum filetype {
  #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 */
@@ -709,9 +709,9 @@ diff --git a/rsync.h b/rsync.h
  
  #define DEL_MAKE_ROOM (DEL_FOR_FILE|DEL_FOR_DIR|DEL_FOR_SYMLINK|DEL_FOR_DEVICE|DEL_FOR_SPECIAL)
  
-diff --git a/util.c b/util.c
---- a/util.c
-+++ b/util.c
+diff --git a/util1.c b/util1.c
+--- a/util1.c
++++ b/util1.c
 @@ -182,7 +182,7 @@ int set_times(const char *fname, STRUCT_STAT *stp)
  /* Create any necessary directories in fname.  Any missing directories are
   * created with default permissions.  Returns < 0 on error, or the number
index 8c3189745d24976505a7bd8a352436a60551500b..9638c25450a634d8ce271beee7d268a22b12c68c 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: e94bad1c156fc3910f24e2b3b71a81b0b0bdeb70
+based-on: 603cf476ef5a1155203037d2127341cdbb8646d7
 diff --git a/options.c b/options.c
 --- a/options.c
 +++ b/options.c
@@ -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
-@@ -3012,6 +3013,16 @@ your home directory (remove the '=' for that).
+@@ -3024,6 +3025,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).
  
@@ -94,7 +94,7 @@ diff --git a/syscall.c b/syscall.c
  
        return open(pathname, flags | O_BINARY, mode);
  }
-@@ -624,6 +633,9 @@ int do_open_nofollow(const char *pathname, int flags)
+@@ -632,6 +641,9 @@ int do_open_nofollow(const char *pathname, int flags)
  #endif
        }
  
index 5fb09e8074d488bf3dd45b340db06a01d5d25e26..122d091244781498c84aa0880ce11b8a89a3590b 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: e94bad1c156fc3910f24e2b3b71a81b0b0bdeb70
+based-on: 603cf476ef5a1155203037d2127341cdbb8646d7
 diff --git a/generator.c b/generator.c
 --- a/generator.c
 +++ b/generator.c
@@ -19,7 +19,7 @@ diff --git a/generator.c b/generator.c
  extern int human_readable;
  extern int ignore_existing;
  extern int ignore_non_existing;
-@@ -1713,6 +1714,12 @@ static void recv_generator(char *fname, struct file_struct *file, int ndx,
+@@ -1710,6 +1711,12 @@ static void recv_generator(char *fname, struct file_struct *file, int ndx,
                goto cleanup;
        }
  
@@ -31,8 +31,8 @@ diff --git a/generator.c b/generator.c
 +
        fnamecmp_type = FNAMECMP_FNAME;
  
-       if (statret == 0 && !(S_ISREG(sx.st.st_mode) || (write_devices && IS_DEVICE(sx.st.st_mode)))) {
-@@ -2157,6 +2164,7 @@ void check_for_finished_files(int itemizing, enum logcode code, int check_redo)
+       if (statret == 0 && !(stype == FT_REG || (write_devices && stype == FT_DEVICE))) {
+@@ -2154,6 +2161,7 @@ void check_for_finished_files(int itemizing, enum logcode code, int check_redo)
                        ignore_existing = -ignore_existing;
                        ignore_non_existing = -ignore_non_existing;
                        update_only = -update_only;
@@ -40,7 +40,7 @@ diff --git a/generator.c b/generator.c
                        always_checksum = -always_checksum;
                        size_only = -size_only;
                        append_mode = -append_mode;
-@@ -2182,6 +2190,7 @@ void check_for_finished_files(int itemizing, enum logcode code, int check_redo)
+@@ -2179,6 +2187,7 @@ void check_for_finished_files(int itemizing, enum logcode code, int check_redo)
                        ignore_existing = -ignore_existing;
                        ignore_non_existing = -ignore_non_existing;
                        update_only = -update_only;
index 3116b26e72bd7b18120e48d5ab334002962eeeaf..f5c51ff89d79b4ee2652d4cbeea0057680950c5e 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: 9dd62525f3b98d692e031f22c02be8f775966503
+based-on: 603cf476ef5a1155203037d2127341cdbb8646d7
 diff --git a/compat.c b/compat.c
 --- a/compat.c
 +++ b/compat.c
@@ -1001,9 +1001,9 @@ diff --git a/usage.c b/usage.c
        "*Optimizations",
  
  #ifndef HAVE_SIMD
-diff --git a/util.c b/util.c
---- a/util.c
-+++ b/util.c
+diff --git a/util1.c b/util1.c
+--- a/util1.c
++++ b/util1.c
 @@ -33,6 +33,7 @@ extern int relative_paths;
  extern int preserve_times;
  extern int preserve_xattrs;
index 6d127344cd7a184c7da7c5a128665dec18d75831..34e8785978a379198d277e2f0811e8a1223f8965 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: e94bad1c156fc3910f24e2b3b71a81b0b0bdeb70
+based-on: 603cf476ef5a1155203037d2127341cdbb8646d7
 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
-@@ -1285,7 +1285,9 @@ your home directory (remove the '=' for that).
+@@ -1291,7 +1291,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.
-@@ -2636,6 +2638,10 @@ your home directory (remove the '=' for that).
+@@ -2648,6 +2650,10 @@ your home directory (remove the '=' for that).
      "`--usermap=*:foo --groupmap=*:bar`", only easier.  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
-@@ -3633,6 +3639,15 @@ The following modifiers are accepted after a "`+`" or "`-`":
+@@ -3645,6 +3651,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
-@@ -3690,6 +3705,12 @@ The following modifiers are accepted after a merge or dir-merge rule:
+@@ -3702,6 +3717,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`).
  
@@ -390,7 +390,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
-@@ -171,6 +171,9 @@
+@@ -181,6 +181,9 @@
  #define NO_FILTERS    0
  #define SERVER_FILTERS        1
  #define ALL_FILTERS   2
@@ -400,7 +400,7 @@ diff --git a/rsync.h b/rsync.h
  
  #define XFLG_FATAL_ERRORS     (1<<0)
  #define XFLG_OLD_PREFIXES     (1<<1)
-@@ -966,6 +969,8 @@ struct map_struct {
+@@ -979,6 +982,8 @@ struct map_struct {
        int status;             /* first errno from read errors         */
  };
  
@@ -409,7 +409,7 @@ diff --git a/rsync.h b/rsync.h
  #define NAME_IS_FILE          (0)    /* filter name as a file */
  #define NAME_IS_DIR           (1<<0) /* filter name as a dir */
  #define NAME_IS_XATTR         (1<<2) /* filter name as an xattr */
-@@ -991,8 +996,18 @@ struct map_struct {
+@@ -1004,8 +1009,18 @@ struct map_struct {
  #define FILTRULE_CLEAR_LIST   (1<<18)/* this item is the "!" token */
  #define FILTRULE_PERISHABLE   (1<<19)/* perishable if parent dir goes away */
  #define FILTRULE_XATTR                (1<<20)/* rule only applies to xattr names */
@@ -428,7 +428,7 @@ diff --git a/rsync.h b/rsync.h
  
  typedef struct filter_struct {
        struct filter_struct *next;
-@@ -1002,6 +1017,11 @@ typedef struct filter_struct {
+@@ -1015,6 +1030,11 @@ typedef struct filter_struct {
                int slash_cnt;
                struct filter_list_struct *mergelist;
        } u;
@@ -440,9 +440,9 @@ diff --git a/rsync.h b/rsync.h
  } filter_rule;
  
  typedef struct filter_list_struct {
-diff --git a/util.c b/util.c
---- a/util.c
-+++ b/util.c
+diff --git a/util1.c b/util1.c
+--- a/util1.c
++++ b/util1.c
 @@ -884,6 +884,25 @@ size_t stringjoin(char *dest, size_t destsize, ...)
        return ret;
  }
index 3e1041d9e11ac06cda21eafb47038949362c95fe..255d17af3334ce1a357c81fa5454ba15d1fbb6e4 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: e94bad1c156fc3910f24e2b3b71a81b0b0bdeb70
+based-on: 603cf476ef5a1155203037d2127341cdbb8646d7
 diff --git a/options.c b/options.c
 --- a/options.c
 +++ b/options.c
@@ -27,7 +27,7 @@ diff --git a/options.c b/options.c
    {"stop-after",       0,  POPT_ARG_STRING, 0, OPT_STOP_AFTER, 0, 0 },
    {"time-limit",       0,  POPT_ARG_STRING, 0, OPT_STOP_AFTER, 0, 0 }, /* earlier stop-after name */
    {"stop-at",          0,  POPT_ARG_STRING, 0, OPT_STOP_AT, 0, 0 },
-@@ -2845,6 +2847,9 @@ void server_options(char **args, int *argc_p)
+@@ -2806,6 +2808,9 @@ void server_options(char **args, int *argc_p)
                        args[ac++] = tmpdir;
                }
  
@@ -83,9 +83,9 @@ diff --git a/t_stub.c b/t_stub.c
  int inplace = 0;
  int modify_window = 0;
  int preallocate_files = 0;
-diff --git a/util.c b/util.c
---- a/util.c
-+++ b/util.c
+diff --git a/util1.c b/util1.c
+--- a/util1.c
++++ b/util1.c
 @@ -27,6 +27,7 @@
  
  extern int dry_run;
index c20f55495f8539d21ff726e0c748108a155fc994..711fece597a8a9a21ecfe8715df3304b2b0cc93c 100644 (file)
@@ -12,7 +12,7 @@ TODO:
  - Make this code handle multibyte character encodings, and honor the
    --iconv setting when converting case.
 
-based-on: e94bad1c156fc3910f24e2b3b71a81b0b0bdeb70
+based-on: 603cf476ef5a1155203037d2127341cdbb8646d7
 diff --git a/exclude.c b/exclude.c
 --- a/exclude.c
 +++ b/exclude.c
@@ -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},
-@@ -2795,6 +2798,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
-@@ -2195,6 +2196,12 @@ your home directory (remove the '=' for that).
+@@ -2207,6 +2208,12 @@ your home directory (remove the '=' for that).
  
      >     sudo rsync -aive lsh -M--copy-as=joe src/ lh:dest/
  
index dc1f1824cd2d523464f77bfb8131adaec203e3a0..cce4ce05d8bcd3f14170b4cf697bd3bc22bcffc4 100644 (file)
@@ -9,12 +9,12 @@ To use this patch, run these commands for a successful build:
     ./configure
     make
 
-based-on: e94bad1c156fc3910f24e2b3b71a81b0b0bdeb70
+based-on: 603cf476ef5a1155203037d2127341cdbb8646d7
 diff --git a/Makefile.in b/Makefile.in
 --- a/Makefile.in
 +++ b/Makefile.in
 @@ -44,7 +44,7 @@ OBJS1=flist.o rsync.o generator.o receiver.o cleanup.o sender.o exclude.o \
-       util.o util2.o main.o checksum.o match.o syscall.o log.o backup.o delete.o
+       util1.o util2.o main.o checksum.o match.o syscall.o log.o backup.o delete.o
  OBJS2=options.o io.o compat.o hlink.o token.o uidlist.o socket.o hashtable.o \
        usage.o fileio.o batch.o clientname.o chmod.o acls.o xattrs.o
 -OBJS3=progress.o pipe.o @ASM@
@@ -78,7 +78,7 @@ diff --git a/clientserver.c b/clientserver.c
 diff --git a/configure.ac b/configure.ac
 --- a/configure.ac
 +++ b/configure.ac
-@@ -950,6 +950,31 @@ if test x"$enable_iconv" != x"no"; then
+@@ -1009,6 +1009,31 @@ if test x"$enable_iconv" != x"no"; then
        AC_DEFINE(UTF8_CHARSET, "UTF-8", [String to pass to iconv() for the UTF-8 charset.])
  fi
  
@@ -463,7 +463,7 @@ new file mode 100644
 diff --git a/main.c b/main.c
 --- a/main.c
 +++ b/main.c
-@@ -1572,7 +1572,7 @@ static int start_client(int argc, char *argv[])
+@@ -1575,7 +1575,7 @@ static int start_client(int argc, char *argv[])
         * remote shell command, we need to do the RSYNCD protocol first */
        if (daemon_connection) {
                int tmpret;
@@ -475,7 +475,7 @@ diff --git a/main.c b/main.c
 diff --git a/rsync.h b/rsync.h
 --- a/rsync.h
 +++ b/rsync.h
-@@ -520,6 +520,15 @@ enum delret {
+@@ -533,6 +533,15 @@ enum delret {
  #define iconv_t int
  #endif
  
index 0785f8961ab387fd37d53d36e42d4a584c16c747..c8a0d1c77fbe86e142b0f54227adc6a06a3f0920 100644 (file)
@@ -12,12 +12,12 @@ To use this patch, run these commands for a successful build:
     ./configure
     make
 
-based-on: e94bad1c156fc3910f24e2b3b71a81b0b0bdeb70
+based-on: 603cf476ef5a1155203037d2127341cdbb8646d7
 diff --git a/Makefile.in b/Makefile.in
 --- a/Makefile.in
 +++ b/Makefile.in
 @@ -44,7 +44,7 @@ OBJS1=flist.o rsync.o generator.o receiver.o cleanup.o sender.o exclude.o \
-       util.o util2.o main.o checksum.o match.o syscall.o log.o backup.o delete.o
+       util1.o util2.o main.o checksum.o match.o syscall.o log.o backup.o delete.o
  OBJS2=options.o io.o compat.o hlink.o token.o uidlist.o socket.o hashtable.o \
        usage.o fileio.o batch.o clientname.o chmod.o acls.o xattrs.o
 -OBJS3=progress.o pipe.o @ASM@
@@ -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;
-@@ -2870,6 +2892,12 @@ void server_options(char **args, int *argc_p)
+@@ -2831,6 +2853,12 @@ void server_options(char **args, int *argc_p)
        } else if (inplace)
                args[ac++] = "--inplace";
  
@@ -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)
-@@ -2331,6 +2332,50 @@ your home directory (remove the '=' for that).
+@@ -2343,6 +2344,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.
  
@@ -387,7 +387,7 @@ diff --git a/rsync.c b/rsync.c
 diff --git a/rsync.h b/rsync.h
 --- a/rsync.h
 +++ b/rsync.h
-@@ -1428,7 +1428,8 @@ extern short info_levels[], debug_levels[];
+@@ -1441,7 +1441,8 @@ extern short info_levels[], debug_levels[];
  #define DEBUG_FUZZY (DEBUG_FLIST+1)
  #define DEBUG_GENR (DEBUG_FUZZY+1)
  #define DEBUG_HASH (DEBUG_GENR+1)
index d73a6173cb4a8d494bd9a06a184eb0a15a2ad4ad..1e64578a982ab9af0a2a5f896047631a6d5e1a4a 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: 9f9240b661c5f381831b62d72b6ea928a91ff43a
+based-on: 603cf476ef5a1155203037d2127341cdbb8646d7
 diff --git a/Makefile.in b/Makefile.in
 --- a/Makefile.in
 +++ b/Makefile.in
@@ -187,7 +187,7 @@ diff --git a/checksum.c b/checksum.c
 diff --git a/generator.c b/generator.c
 --- a/generator.c
 +++ b/generator.c
-@@ -729,10 +729,12 @@ static int generate_and_send_sums(int fd, OFF_T len, int f_out, int f_copy)
+@@ -773,10 +773,12 @@ static int generate_and_send_sums(int fd, OFF_T len, int f_out, int f_copy)
        if (append_mode > 0 && f_copy < 0)
                return 0;
  
@@ -202,7 +202,7 @@ diff --git a/generator.c b/generator.c
  
        for (i = 0; i < sum.count; i++) {
                int32 n1 = (int32)MIN(len, (OFF_T)sum.blength);
-@@ -750,7 +752,7 @@ static int generate_and_send_sums(int fd, OFF_T len, int f_out, int f_copy)
+@@ -794,7 +796,7 @@ static int generate_and_send_sums(int fd, OFF_T len, int f_out, int f_copy)
                }
  
                sum1 = get_checksum1(map, n1);
@@ -211,7 +211,7 @@ diff --git a/generator.c b/generator.c
  
                if (DEBUG_GTE(DELTASUM, 3)) {
                        rprintf(FINFO,
-@@ -762,8 +764,10 @@ static int generate_and_send_sums(int fd, OFF_T len, int f_out, int f_copy)
+@@ -806,8 +808,10 @@ static int generate_and_send_sums(int fd, OFF_T len, int f_out, int f_copy)
                write_buf(f_out, sum2, sum.s2length);
        }
  
@@ -458,7 +458,7 @@ diff --git a/simd-checksum-x86_64.cpp b/simd-checksum-x86_64.cpp
  #ifdef HAVE_SIMD
  
  #include <immintrin.h>
-@@ -480,9 +500,235 @@ uint32 get_checksum1(char *buf1, int32 len)
+@@ -473,9 +493,235 @@ uint32 get_checksum1(char *buf1, int32 len)
      return get_checksum1_cpp(buf1, len);
  }
  
@@ -696,7 +696,7 @@ diff --git a/simd-checksum-x86_64.cpp b/simd-checksum-x86_64.cpp
  #pragma clang optimize off
  #pragma GCC push_options
  #pragma GCC optimize ("O0")
-@@ -493,7 +739,9 @@ uint32 get_checksum1(char *buf1, int32 len)
+@@ -486,7 +732,9 @@ uint32 get_checksum1(char *buf1, int32 len)
  #ifndef CLOCK_MONOTONIC_RAW
  #define CLOCK_MONOTONIC_RAW CLOCK_MONOTONIC
  #endif
@@ -706,7 +706,7 @@ diff --git a/simd-checksum-x86_64.cpp b/simd-checksum-x86_64.cpp
  static void benchmark(const char* desc, int32 (*func)(schar* buf, int32 len, int32 i, uint32* ps1, uint32* ps2), schar* buf, int32 len) {
      struct timespec start, end;
      uint64_t us;
-@@ -509,7 +757,7 @@ static void benchmark(const char* desc, int32 (*func)(schar* buf, int32 len, int
+@@ -502,7 +750,7 @@ static void benchmark(const char* desc, int32 (*func)(schar* buf, int32 len, int
      clock_gettime(CLOCK_MONOTONIC_RAW, &end);
      us = next == 0 ? 0 : (end.tv_sec - start.tv_sec) * 1000000 + (end.tv_nsec - start.tv_nsec) / 1000;
      cs = next == 0 ? 0 : (s1 & 0xffff) + (s2 << 16);
@@ -715,7 +715,7 @@ diff --git a/simd-checksum-x86_64.cpp b/simd-checksum-x86_64.cpp
  }
  
  static int32 get_checksum1_auto(schar* buf, int32 len, int32 i, uint32* ps1, uint32* ps2) {
-@@ -533,10 +781,108 @@ int main() {
+@@ -526,10 +774,108 @@ int main() {
      free(buf);
      return 0;
  }
index c305e651b79112ea1058bd9b1ff34011e9424c26..9b6034176546134485c55b52e04a190f154c07dc 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: e94bad1c156fc3910f24e2b3b71a81b0b0bdeb70
+based-on: 603cf476ef5a1155203037d2127341cdbb8646d7
 diff --git a/generator.c b/generator.c
 --- a/generator.c
 +++ b/generator.c
@@ -19,7 +19,7 @@ diff --git a/generator.c b/generator.c
  extern int delete_mode;
  extern int delete_before;
  extern int delete_during;
-@@ -507,6 +508,7 @@ void itemize(const char *fnamecmp, struct file_struct *file, int ndx, int statre
+@@ -504,6 +505,7 @@ void itemize(const char *fnamecmp, struct file_struct *file, int ndx, int statre
             const char *xname)
  {
        if (statret >= 0) { /* A from-dest-dir statret can == 1! */
@@ -27,7 +27,7 @@ diff --git a/generator.c b/generator.c
                int keep_time = !preserve_times ? 0
                    : S_ISDIR(file->mode) ? preserve_times & PRESERVE_DIR_TIMES
                    : S_ISLNK(file->mode) ? preserve_times & PRESERVE_LINK_TIMES
-@@ -544,9 +546,9 @@ void itemize(const char *fnamecmp, struct file_struct *file, int ndx, int statre
+@@ -541,9 +543,9 @@ void itemize(const char *fnamecmp, struct file_struct *file, int ndx, int statre
                } else if (preserve_executability
                 && ((sxp->st.st_mode & 0111 ? 1 : 0) ^ (file->mode & 0111 ? 1 : 0)))
                        iflags |= ITEM_REPORT_PERMS;
@@ -39,7 +39,7 @@ diff --git a/generator.c b/generator.c
                        iflags |= ITEM_REPORT_GROUP;
  #ifdef SUPPORT_ACLS
                if (preserve_acls && !S_ISLNK(file->mode)) {
-@@ -1439,7 +1441,7 @@ static void recv_generator(char *fname, struct file_struct *file, int ndx,
+@@ -1447,7 +1449,7 @@ static void recv_generator(char *fname, struct file_struct *file, int ndx,
                real_ret = statret;
                if (file->flags & FLAG_DIR_CREATED)
                        statret = -1;
@@ -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
-@@ -1405,6 +1406,11 @@ your home directory (remove the '=' for that).
+@@ -1411,6 +1412,11 @@ your home directory (remove the '=' for that).
      This tells rsync to omit symlinks when it is preserving modification times
      (see `--times`).
  
index a8096ddcbe36b37aec70dcaa1e110e84bd29f96a..0c3b1ddf1e74e1d6f1c9265f973333d956b0b234 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: e94bad1c156fc3910f24e2b3b71a81b0b0bdeb70
+based-on: 603cf476ef5a1155203037d2127341cdbb8646d7
 diff --git a/flist.c b/flist.c
 --- a/flist.c
 +++ b/flist.c
index 6d391f2784ef09772016b58c58dd48fe624a90e1..84a4aae9b4465e4c6e26a68318bdd69d8056ca66 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: e94bad1c156fc3910f24e2b3b71a81b0b0bdeb70
+based-on: 603cf476ef5a1155203037d2127341cdbb8646d7
 diff --git a/Makefile.in b/Makefile.in
 --- a/Makefile.in
 +++ b/Makefile.in
@@ -61,7 +61,7 @@ diff --git a/clientserver.c b/clientserver.c
 diff --git a/configure.ac b/configure.ac
 --- a/configure.ac
 +++ b/configure.ac
-@@ -1018,6 +1018,29 @@ if test $rsync_cv_can_hardlink_special = yes; then
+@@ -1077,6 +1077,29 @@ if test $rsync_cv_can_hardlink_special = yes; then
      AC_DEFINE(CAN_HARDLINK_SPECIAL, 1, [Define to 1 if link() can hard-link special files.])
  fi
  
@@ -90,7 +90,7 @@ diff --git a/configure.ac b/configure.ac
 +
  AC_CACHE_CHECK([for working socketpair],rsync_cv_HAVE_SOCKETPAIR,[
  AC_RUN_IFELSE([AC_LANG_SOURCE([[
- #include <sys/types.h>
+ #ifdef HAVE_SYS_TYPES_H
 diff --git a/daemon-parm.txt b/daemon-parm.txt
 --- a/daemon-parm.txt
 +++ b/daemon-parm.txt
@@ -108,7 +108,7 @@ diff --git a/daemon-parm.txt b/daemon-parm.txt
 diff --git a/main.c b/main.c
 --- a/main.c
 +++ b/main.c
-@@ -1405,6 +1405,22 @@ static int start_client(int argc, char *argv[])
+@@ -1408,6 +1408,22 @@ static int start_client(int argc, char *argv[])
  
        if (!read_batch) { /* for read_batch, NO source is specified */
                char *path = check_for_hostspec(argv[0], &shell_machine, &rsync_port);
@@ -158,7 +158,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
-@@ -224,6 +224,10 @@
+@@ -234,6 +234,10 @@
  #define SIGNIFICANT_ITEM_FLAGS (~(\
        ITEM_BASIS_TYPE_FOLLOWS | ITEM_XNAME_FOLLOWS | ITEM_LOCAL_CHANGE))
  
@@ -518,7 +518,7 @@ new file mode 100644
 diff --git a/usage.c b/usage.c
 --- a/usage.c
 +++ b/usage.c
-@@ -131,6 +131,11 @@ static void print_info_flags(enum logcode f)
+@@ -137,6 +137,11 @@ static void print_info_flags(enum logcode f)
  #endif
                        "crtimes",
  
index e3b79069733b4b14c6ef95d1715454f3fb98fd92..a43cc1d8c245a78166b2ab17c24badcf02e5941e 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: e94bad1c156fc3910f24e2b3b71a81b0b0bdeb70
+based-on: 603cf476ef5a1155203037d2127341cdbb8646d7
 diff --git a/syscall.c b/syscall.c
 --- a/syscall.c
 +++ b/syscall.c
index 6c029f3c3cffdf5cc6fd5303067884e5d52117d9..525f7c48621bf1323011288939a717555f4538c1 100644 (file)
@@ -9,7 +9,7 @@ To use this patch, run these commands for a successful build:
 
 -- Matt McCutchen <hashproduct@gmail.com>
 
-based-on: e94bad1c156fc3910f24e2b3b71a81b0b0bdeb70
+based-on: 603cf476ef5a1155203037d2127341cdbb8646d7
 diff --git a/options.c b/options.c
 --- a/options.c
 +++ b/options.c
@@ -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 },
-@@ -2768,6 +2770,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
-@@ -1620,6 +1621,16 @@ your home directory (remove the '=' for that).
+@@ -1632,6 +1633,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 5e8df72d759d3da9e978c1f872112f73f60cff93..e71e130bbde9a1b5ffd42b0964d3826d96e02ab0 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: d2a97a7ab492e0d0548708251309e077e6aa8c8b
+based-on: 603cf476ef5a1155203037d2127341cdbb8646d7
 diff --git a/generator.c b/generator.c
 --- a/generator.c
 +++ b/generator.c
@@ -42,7 +42,7 @@ diff --git a/generator.c b/generator.c
  extern int size_only;
  extern OFF_T max_size;
  extern OFF_T min_size;
-@@ -615,7 +616,7 @@ int quick_check_ok(enum filetype ftype, const char *fn, struct file_struct *file
+@@ -616,7 +617,7 @@ int quick_check_ok(enum filetype ftype, const char *fn, struct file_struct *file
  {
        switch (ftype) {
          case FT_REG:
@@ -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)
-@@ -3292,6 +3295,36 @@ your home directory (remove the '=' for that).
+@@ -3289,6 +3292,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 5b693867be17e419767dec2c1c41a46faf84b3c2..ce170b9177d81718ddb13bf720cd324d87c5cafb 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: e94bad1c156fc3910f24e2b3b71a81b0b0bdeb70
+based-on: 603cf476ef5a1155203037d2127341cdbb8646d7
 diff --git a/fileio.c b/fileio.c
 --- a/fileio.c
 +++ b/fileio.c
@@ -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 },
-@@ -2684,6 +2686,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
-@@ -1477,6 +1478,18 @@ your home directory (remove the '=' for that).
+@@ -1483,6 +1484,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 ce1406348c06226ebf7bc4a32f42af257bd1733b..451c46c735e66f8db3186a5bf262014e4cdce502 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: 58f464f4daa1b1ee00c6afd898a19ca5cd81bf58
+based-on: 603cf476ef5a1155203037d2127341cdbb8646d7
 diff --git a/NEWS.md b/NEWS.md
 --- a/NEWS.md
 +++ b/NEWS.md
index d2beb4d7e5a32733619134ead0259d47fc64751d..e9fcd2febae73e7ece9065954d691254c72fd471 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: e94bad1c156fc3910f24e2b3b71a81b0b0bdeb70
+based-on: 603cf476ef5a1155203037d2127341cdbb8646d7
 diff --git a/flist.c b/flist.c
 --- a/flist.c
 +++ b/flist.c
@@ -129,7 +129,7 @@ diff --git a/options.c b/options.c
        am_starting_up = 0;
  
        return 1;
-@@ -2887,6 +2907,12 @@ void server_options(char **args, int *argc_p)
+@@ -2848,6 +2868,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
-@@ -3319,6 +3320,25 @@ your home directory (remove the '=' for that).
+@@ -3331,6 +3332,25 @@ your home directory (remove the '=' for that).
      free to specify just the local charset for a daemon transfer (e.g.
      `--iconv=utf8`).