The patches for 3.1.1. v3.1.1
authorWayne Davison <wayned@samba.org>
Sun, 22 Jun 2014 17:10:10 +0000 (10:10 -0700)
committerWayne Davison <wayned@samba.org>
Sun, 22 Jun 2014 17:10:10 +0000 (10:10 -0700)
39 files changed:
acls.diff
adaptec_acl_mods.diff
atimes.diff
backup-deleted.diff
backup-dir-dels.diff
catch_crash_signals.diff
checksum-reading.diff
checksum-updating.diff
checksum-xattr.diff
congestion.diff
copy-devices.diff
crtimes.diff
cvs-entries.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
hfs-compression.diff
ignore-case.diff
link-by-hash.diff
nameconverter.diff
netgroup-auth.diff
omit-dir-changes.diff
slow-down.diff
slp.diff
soften-links.diff
source-backup.diff
source-filter_dest-filter.diff
sparse-block.diff
time-limit.diff
transliterate.diff
tru64.diff
write-devices.diff
xattrs.diff

index 98c52ad676a92d19b736ca922f8cad5566132e09..dfbf503e58f9e769c73a33707f802974b4d0688c 100644 (file)
--- a/acls.diff
+++ b/acls.diff
@@ -9,7 +9,7 @@ To use this patch, run these commands for a successful build:
     ./configure                         (optional if already run)
     make
 
-based-on: 4c8eb5f9511dd1393b147c4e993ee15448faedf5
+based-on: 7cb0de6326c915a72253fd103dae93308031ec3f
 diff --git a/acls.c b/acls.c
 --- a/acls.c
 +++ b/acls.c
@@ -325,7 +325,7 @@ diff --git a/acls.c b/acls.c
 diff --git a/compat.c b/compat.c
 --- a/compat.c
 +++ b/compat.c
-@@ -201,13 +201,6 @@ void setup_protocol(int f_out,int f_in)
+@@ -203,13 +203,6 @@ void setup_protocol(int f_out,int f_in)
        if (protocol_version < 30) {
                if (append_mode == 1)
                        append_mode = 2;
index c1b26b327f5184cff4db474373d7be721591dce8..64292b0da135fed285f66515facd2a92ba766ccf 100644 (file)
@@ -24,7 +24,7 @@ Todo:
 Fix a bug that could lose some bits when stripping some (supposedly)
 superfluous ACL info.
 
-based-on: 4c8eb5f9511dd1393b147c4e993ee15448faedf5
+based-on: 7cb0de6326c915a72253fd103dae93308031ec3f
 diff --git a/lib/sysacls.c b/lib/sysacls.c
 --- a/lib/sysacls.c
 +++ b/lib/sysacls.c
index cd13015b2939a34c59533bbadcfa24e0432eb34c..8eaff2e69474aaf17dcf6d43ad4b875111481915 100644 (file)
@@ -4,11 +4,11 @@ To use this patch, run these commands for a successful build:
     ./configure                      (optional if already run)
     make
 
-based-on: 4c8eb5f9511dd1393b147c4e993ee15448faedf5
+based-on: 7cb0de6326c915a72253fd103dae93308031ec3f
 diff --git a/compat.c b/compat.c
 --- a/compat.c
 +++ b/compat.c
-@@ -46,6 +46,7 @@ extern int protocol_version;
+@@ -47,6 +47,7 @@ extern int protocol_version;
  extern int protect_args;
  extern int preserve_uid;
  extern int preserve_gid;
@@ -16,7 +16,7 @@ diff --git a/compat.c b/compat.c
  extern int preserve_acls;
  extern int preserve_xattrs;
  extern int need_messages_from_generator;
-@@ -63,7 +64,7 @@ extern char *iconv_opt;
+@@ -64,7 +65,7 @@ extern char *iconv_opt;
  #endif
  
  /* These index values are for the file-list's extra-attribute array. */
@@ -25,7 +25,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 */
-@@ -140,6 +141,8 @@ void setup_protocol(int f_out,int f_in)
+@@ -142,6 +143,8 @@ void setup_protocol(int f_out,int f_in)
                uid_ndx = ++file_extra_cnt;
        if (preserve_gid)
                gid_ndx = ++file_extra_cnt;
@@ -103,7 +103,7 @@ diff --git a/flist.c b/flist.c
  
        if (chmod_modes && !S_ISLNK(mode) && mode)
                mode = tweak_mode(mode, chmod_modes);
-@@ -977,6 +997,8 @@ static struct file_struct *recv_file_entry(int f, struct file_list *flist, int x
+@@ -984,6 +1004,8 @@ static struct file_struct *recv_file_entry(int f, struct file_list *flist, int x
                F_GROUP(file) = gid;
                file->flags |= gid_flags;
        }
@@ -112,7 +112,7 @@ diff --git a/flist.c b/flist.c
        if (unsort_ndx)
                F_NDX(file) = flist->used + flist->ndx_start;
  
-@@ -1374,6 +1396,8 @@ struct file_struct *make_file(const char *fname, struct file_list *flist,
+@@ -1381,6 +1403,8 @@ struct file_struct *make_file(const char *fname, struct file_list *flist,
                F_GROUP(file) = st.st_gid;
        if (am_generator && st.st_uid == our_uid)
                file->flags |= FLAG_OWNED_BY_US;
@@ -124,7 +124,7 @@ diff --git a/flist.c b/flist.c
 diff --git a/generator.c b/generator.c
 --- a/generator.c
 +++ b/generator.c
-@@ -499,6 +499,9 @@ void itemize(const char *fnamecmp, struct file_struct *file, int ndx, int statre
+@@ -500,6 +500,9 @@ void itemize(const char *fnamecmp, struct file_struct *file, int ndx, int statre
                 : iflags & (ITEM_TRANSFER|ITEM_LOCAL_CHANGE) && !(iflags & ITEM_MATCHED)
                  && (!(iflags & ITEM_XNAME_FOLLOWS) || *xname))
                        iflags |= ITEM_REPORT_TIME;
@@ -134,7 +134,7 @@ diff --git a/generator.c b/generator.c
  #if !defined HAVE_LCHMOD && !defined HAVE_SETATTRLIST
                if (S_ISLNK(file->mode)) {
                        ;
-@@ -914,6 +917,8 @@ static int try_dests_reg(struct file_struct *file, char *fname, int ndx,
+@@ -917,6 +920,8 @@ static int try_dests_reg(struct file_struct *file, char *fname, int ndx,
                if (link_dest) {
                        if (!hard_link_one(file, fname, cmpbuf, 1))
                                goto try_a_copy;
@@ -143,7 +143,7 @@ diff --git a/generator.c b/generator.c
                        if (preserve_hard_links && F_IS_HLINKED(file))
                                finish_hard_link(file, fname, ndx, &sxp->st, itemizing, code, j);
                        if (!maybe_ATTRS_REPORT && (INFO_GTE(NAME, 2) || stdout_format_has_i > 1)) {
-@@ -1116,6 +1121,7 @@ static int try_dests_non(struct file_struct *file, char *fname, int ndx,
+@@ -1119,6 +1124,7 @@ static int try_dests_non(struct file_struct *file, char *fname, int ndx,
  static void list_file_entry(struct file_struct *f)
  {
        char permbuf[PERMSTRING_SIZE];
@@ -151,7 +151,7 @@ diff --git a/generator.c b/generator.c
        int64 len;
        int colwidth = human_readable ? 14 : 11;
  
-@@ -1131,10 +1137,12 @@ static void list_file_entry(struct file_struct *f)
+@@ -1134,10 +1140,12 @@ static void list_file_entry(struct file_struct *f)
  
  #ifdef SUPPORT_LINKS
        if (preserve_links && S_ISLNK(f->mode)) {
@@ -167,7 +167,7 @@ diff --git a/generator.c b/generator.c
        } else
  #endif
        if (missing_args == 2 && f->mode == 0) {
-@@ -1142,9 +1150,12 @@ static void list_file_entry(struct file_struct *f)
+@@ -1145,9 +1153,12 @@ static void list_file_entry(struct file_struct *f)
                        colwidth + 31, "*missing",
                        f_name(f, NULL));
        } else {
@@ -182,7 +182,7 @@ diff --git a/generator.c b/generator.c
        }
  }
  
-@@ -2048,7 +2059,7 @@ static void touch_up_dirs(struct file_list *flist, int ndx)
+@@ -2050,7 +2061,7 @@ static void touch_up_dirs(struct file_list *flist, int ndx)
                        STRUCT_STAT st;
                        if (link_stat(fname, &st, 0) == 0
                         && cmp_time(st.st_mtime, file->modtime) != 0)
@@ -385,7 +385,7 @@ diff --git a/rsync.h b/rsync.h
 diff --git a/rsync.yo b/rsync.yo
 --- a/rsync.yo
 +++ b/rsync.yo
-@@ -369,6 +369,7 @@ to the detailed description below for a complete description.  verb(
+@@ -372,6 +372,7 @@ to the detailed description below for a complete description.  verb(
       --specials              preserve special files
   -D                          same as --devices --specials
   -t, --times                 preserve modification times
@@ -393,7 +393,7 @@ diff --git a/rsync.yo b/rsync.yo
   -O, --omit-dir-times        omit directories from --times
   -J, --omit-link-times       omit symlinks from --times
       --super                 receiver attempts super-user activities
-@@ -1170,6 +1171,12 @@ cause the next transfer to behave as if it used bf(-I), causing all files to be
+@@ -1173,6 +1174,12 @@ cause the next transfer to behave as if it used bf(-I), causing all files to be
  updated (though rsync's delta-transfer algorithm will make the update fairly efficient
  if the files haven't actually changed, you're much better off using bf(-t)).
  
@@ -406,7 +406,7 @@ diff --git a/rsync.yo b/rsync.yo
  dit(bf(-O, --omit-dir-times)) This tells rsync to omit directories when
  it is preserving modification times (see bf(--times)).  If NFS is sharing
  the directories on the receiving side, it is a good idea to use bf(-O).
-@@ -2127,7 +2134,10 @@ quote(itemization(
+@@ -2130,7 +2137,10 @@ quote(itemization(
    sender's value (requires bf(--owner) and super-user privileges).
    it() A bf(g) means the group is different and is being updated to the
    sender's value (requires bf(--group) and the authority to set the group).
index da96fcc3e30ce0ba2056ed3005cd2d4bbd04d209..884e7a57a3e27f3906eb5b831ad35cdd88b04fd7 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: 4c8eb5f9511dd1393b147c4e993ee15448faedf5
+based-on: 7cb0de6326c915a72253fd103dae93308031ec3f
 diff --git a/generator.c b/generator.c
 --- a/generator.c
 +++ b/generator.c
-@@ -1777,7 +1777,7 @@ static void recv_generator(char *fname, struct file_struct *file, int ndx,
+@@ -1780,7 +1780,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)))
-@@ -1813,7 +1813,7 @@ static void recv_generator(char *fname, struct file_struct *file, int ndx,
+@@ -1816,7 +1816,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;
-@@ -1937,7 +1937,7 @@ int atomic_create(struct file_struct *file, char *fname, const char *lnk,
+@@ -1940,7 +1940,7 @@ int atomic_create(struct file_struct *file, char *fname, const char *slnk, const
                skip_atomic = 0;
  
        if (del_for_flag) {
@@ -59,7 +59,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 },
-@@ -2595,6 +2597,10 @@ void server_options(char **args, int *argc_p)
+@@ -2596,6 +2598,10 @@ void server_options(char **args, int *argc_p)
        }
  
        if (am_sender) {
@@ -73,7 +73,7 @@ diff --git a/options.c b/options.c
 diff --git a/receiver.c b/receiver.c
 --- a/receiver.c
 +++ b/receiver.c
-@@ -421,7 +421,7 @@ static void handle_delayed_updates(char *local_name)
+@@ -422,7 +422,7 @@ static void handle_delayed_updates(char *local_name)
                struct file_struct *file = cur_flist->files[ndx];
                fname = local_name ? local_name : f_name(file, NULL);
                if ((partialptr = partial_dir_fname(fname)) != NULL) {
@@ -82,7 +82,7 @@ diff --git a/receiver.c b/receiver.c
                                continue;
                        if (DEBUG_GTE(RECV, 1)) {
                                rprintf(FINFO, "renaming %s to %s\n",
-@@ -733,7 +733,7 @@ int recv_files(int f_in, int f_out, char *local_name)
+@@ -736,7 +736,7 @@ int recv_files(int f_in, int f_out, char *local_name)
                } else {
                        /* Reminder: --inplace && --partial-dir are never
                         * enabled at the same time. */
@@ -106,7 +106,7 @@ diff --git a/rsync.c b/rsync.c
 diff --git a/rsync.yo b/rsync.yo
 --- a/rsync.yo
 +++ b/rsync.yo
-@@ -343,6 +343,7 @@ to the detailed description below for a complete description.  verb(
+@@ -346,6 +346,7 @@ to the detailed description below for a complete description.  verb(
   -R, --relative              use relative path names
       --no-implied-dirs       don't send implied dirs with --relative
   -b, --backup                make backups (see --suffix & --backup-dir)
@@ -114,7 +114,7 @@ diff --git a/rsync.yo b/rsync.yo
       --backup-dir=DIR        make backups into hierarchy based in DIR
       --suffix=SUFFIX         backup suffix (default ~ w/o --backup-dir)
   -u, --update                skip files that are newer on the receiver
-@@ -775,6 +776,11 @@ in the list so that it has a high enough priority to be effective (e.g., if
+@@ -778,6 +779,11 @@ in the list so that it has a high enough priority to be effective (e.g., if
  your rules specify a trailing inclusion/exclusion of '*', the auto-added
  rule would never be reached).
  
index 1cf473f8ea912de4032389cc0f5a6b75c56d7119..e798864fe0757f71977000d28f462df53d2eaa87 100644 (file)
@@ -322,7 +322,7 @@ diff --git a/options.c b/options.c
  
        if (preserve_times) {
                preserve_times = PRESERVE_FILE_TIMES;
-@@ -2587,6 +2649,10 @@ void server_options(char **args, int *argc_p)
+@@ -2588,6 +2650,10 @@ void server_options(char **args, int *argc_p)
                args[ac++] = "--backup-dir";
                args[ac++] = backup_dir;
        }
@@ -333,7 +333,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) {
-@@ -2595,7 +2661,14 @@ void server_options(char **args, int *argc_p)
+@@ -2596,7 +2662,14 @@ void server_options(char **args, int *argc_p)
                        goto oom;
                args[ac++] = arg;
        }
index f6ed706a51bf9322ca33155c602357082ef31091..974baab32b3d434199d8ed8fe4565c69dea017a6 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: 4c8eb5f9511dd1393b147c4e993ee15448faedf5
+based-on: 7cb0de6326c915a72253fd103dae93308031ec3f
 diff --git a/errcode.h b/errcode.h
 --- a/errcode.h
 +++ b/errcode.h
index f980439b7f991ca505683291b8a7edda3c055c1c..c0d786e2e41ec28fdbe8b838591a5e9c3bea241f 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: 4c8eb5f9511dd1393b147c4e993ee15448faedf5
+based-on: 7cb0de6326c915a72253fd103dae93308031ec3f
 diff --git a/clientserver.c b/clientserver.c
 --- a/clientserver.c
 +++ b/clientserver.c
@@ -347,7 +347,7 @@ diff --git a/flist.c b/flist.c
  /* Call this with EITHER (1) "file, NULL, 0" to chdir() to the file's
   * F_PATHNAME(), or (2) "NULL, dir, dirlen" to chdir() to the supplied dir,
   * with dir == NULL taken to be the starting directory, and dirlen < 0
-@@ -1139,7 +1393,7 @@ struct file_struct *make_file(const char *fname, struct file_list *flist,
+@@ -1146,7 +1400,7 @@ struct file_struct *make_file(const char *fname, struct file_list *flist,
                              STRUCT_STAT *stp, int flags, int filter_level)
  {
        static char *lastdir;
@@ -356,7 +356,7 @@ diff --git a/flist.c b/flist.c
        struct file_struct *file;
        char thisname[MAXPATHLEN];
        char linkname[MAXPATHLEN];
-@@ -1285,9 +1539,16 @@ struct file_struct *make_file(const char *fname, struct file_list *flist,
+@@ -1292,9 +1546,16 @@ struct file_struct *make_file(const char *fname, struct file_list *flist,
                        memcpy(lastdir, thisname, len);
                        lastdir[len] = '\0';
                        lastdir_len = len;
@@ -374,7 +374,7 @@ diff --git a/flist.c b/flist.c
        basename_len = strlen(basename) + 1; /* count the '\0' */
  
  #ifdef SUPPORT_LINKS
-@@ -1305,11 +1566,8 @@ struct file_struct *make_file(const char *fname, struct file_list *flist,
+@@ -1312,11 +1573,8 @@ struct file_struct *make_file(const char *fname, struct file_list *flist,
                extra_len += EXTRA_LEN;
  #endif
  
@@ -388,7 +388,7 @@ diff --git a/flist.c b/flist.c
  
  #if EXTRA_ROUNDING > 0
        if (extra_len & (EXTRA_ROUNDING * EXTRA_LEN))
-@@ -1394,8 +1652,14 @@ struct file_struct *make_file(const char *fname, struct file_list *flist,
+@@ -1401,8 +1659,14 @@ struct file_struct *make_file(const char *fname, struct file_list *flist,
                return NULL;
        }
  
@@ -405,7 +405,7 @@ diff --git a/flist.c b/flist.c
  
        if (unsort_ndx)
                F_NDX(file) = stats.num_dirs;
-@@ -2559,7 +2823,7 @@ struct file_list *recv_file_list(int f)
+@@ -2566,7 +2830,7 @@ struct file_list *recv_file_list(int f)
        /* The --relative option sends paths with a leading slash, so we need
         * to specify the strip_root option here.  We rejected leading slashes
         * for a non-relative transfer in recv_file_entry(). */
@@ -414,7 +414,7 @@ diff --git a/flist.c b/flist.c
  
        if (protocol_version < 30) {
                /* Recv the io_error flag */
-@@ -2782,7 +3046,7 @@ void flist_free(struct file_list *flist)
+@@ -2789,7 +3053,7 @@ void flist_free(struct file_list *flist)
  
  /* This routine ensures we don't have any duplicate names in our file list.
   * duplicate names can cause corruption because of the pipelining. */
@@ -423,7 +423,7 @@ diff --git a/flist.c b/flist.c
  {
        char fbuf[MAXPATHLEN];
        int i, prev_i;
-@@ -2833,7 +3097,7 @@ static void flist_sort_and_clean(struct file_list *flist, int strip_root)
+@@ -2840,7 +3104,7 @@ static void flist_sort_and_clean(struct file_list *flist, int strip_root)
                        /* If one is a dir and the other is not, we want to
                         * keep the dir because it might have contents in the
                         * list.  Otherwise keep the first one. */
@@ -432,7 +432,7 @@ diff --git a/flist.c b/flist.c
                                struct file_struct *fp = flist->sorted[j];
                                if (!S_ISDIR(fp->mode))
                                        keep = i, drop = j;
-@@ -2849,8 +3113,8 @@ static void flist_sort_and_clean(struct file_list *flist, int strip_root)
+@@ -2856,8 +3120,8 @@ static void flist_sort_and_clean(struct file_list *flist, int strip_root)
                        } else
                                keep = j, drop = i;
  
@@ -443,7 +443,7 @@ diff --git a/flist.c b/flist.c
                                        rprintf(FINFO,
                                            "removing duplicate name %s from file list (%d)\n",
                                            f_name(file, fbuf), drop + flist->ndx_start);
-@@ -2872,7 +3136,7 @@ static void flist_sort_and_clean(struct file_list *flist, int strip_root)
+@@ -2879,7 +3143,7 @@ static void flist_sort_and_clean(struct file_list *flist, int strip_root)
        }
        flist->high = prev_i;
  
@@ -463,7 +463,7 @@ diff --git a/generator.c b/generator.c
  extern int remove_source_files;
  extern int delay_updates;
  extern int update_only;
-@@ -566,7 +567,7 @@ void itemize(const char *fnamecmp, struct file_struct *file, int ndx, int statre
+@@ -569,7 +570,7 @@ void itemize(const char *fnamecmp, struct file_struct *file, int ndx, int statre
  
  
  /* Perform our quick-check heuristic for determining if a file is unchanged. */
@@ -472,7 +472,7 @@ diff --git a/generator.c b/generator.c
  {
        if (st->st_size != F_LENGTH(file))
                return 0;
-@@ -575,7 +576,10 @@ int unchanged_file(char *fn, struct file_struct *file, STRUCT_STAT *st)
+@@ -578,7 +579,10 @@ int unchanged_file(char *fn, struct file_struct *file, STRUCT_STAT *st)
           of the file time to determine whether to sync */
        if (always_checksum > 0 && S_ISREG(st->st_mode)) {
                char sum[MAX_DIGEST_LEN];
@@ -484,7 +484,7 @@ diff --git a/generator.c b/generator.c
                return memcmp(sum, F_SUM(file), checksum_len) == 0;
        }
  
-@@ -874,7 +878,7 @@ static int try_dests_reg(struct file_struct *file, char *fname, int ndx,
+@@ -877,7 +881,7 @@ static int try_dests_reg(struct file_struct *file, char *fname, int ndx,
                        match_level = 1;
                        /* FALL THROUGH */
                case 1:
@@ -493,7 +493,7 @@ diff --git a/generator.c b/generator.c
                                continue;
                        best_match = j;
                        match_level = 2;
-@@ -1180,7 +1184,7 @@ static void recv_generator(char *fname, struct file_struct *file, int ndx,
+@@ -1183,7 +1187,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];
@@ -502,7 +502,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;
-@@ -1271,8 +1275,9 @@ static void recv_generator(char *fname, struct file_struct *file, int ndx,
+@@ -1274,8 +1278,9 @@ static void recv_generator(char *fname, struct file_struct *file, int ndx,
                                                fuzzy_dirlist[i] = NULL;
                                        }
                                }
@@ -514,7 +514,7 @@ diff --git a/generator.c b/generator.c
  #ifdef SUPPORT_ACLS
                        if (!preserve_perms)
                                dflt_perms = default_perms_for_dir(dn);
-@@ -1280,7 +1285,7 @@ static void recv_generator(char *fname, struct file_struct *file, int ndx,
+@@ -1283,7 +1288,7 @@ static void recv_generator(char *fname, struct file_struct *file, int ndx,
                }
                parent_dirname = dn;
  
@@ -523,7 +523,7 @@ diff --git a/generator.c b/generator.c
                        int i;
                        strlcpy(fnamecmpbuf, dn, sizeof fnamecmpbuf);
                        for (i = 0; i < fuzzy_basis; i++) {
-@@ -1292,7 +1297,10 @@ static void recv_generator(char *fname, struct file_struct *file, int ndx,
+@@ -1295,7 +1300,10 @@ static void recv_generator(char *fname, struct file_struct *file, int ndx,
                                        fuzzy_dirlist[i] = NULL;
                                }
                        }
@@ -535,7 +535,7 @@ diff --git a/generator.c b/generator.c
                }
  
                statret = link_stat(fname, &sx.st, keep_dirlinks && is_dir);
-@@ -1737,7 +1745,7 @@ static void recv_generator(char *fname, struct file_struct *file, int ndx,
+@@ -1740,7 +1748,7 @@ static void recv_generator(char *fname, struct file_struct *file, int ndx,
                ;
        else if (fnamecmp_type == FNAMECMP_FUZZY)
                ;
@@ -722,7 +722,7 @@ diff --git a/rsync.h b/rsync.h
 diff --git a/rsync.yo b/rsync.yo
 --- a/rsync.yo
 +++ b/rsync.yo
-@@ -337,6 +337,7 @@ to the detailed description below for a complete description.  verb(
+@@ -340,6 +340,7 @@ to the detailed description below for a complete description.  verb(
   -q, --quiet                 suppress non-error messages
       --no-motd               suppress daemon-mode MOTD (see caveat)
   -c, --checksum              skip based on checksum, not mod-time & size
@@ -730,7 +730,7 @@ diff --git a/rsync.yo b/rsync.yo
   -a, --archive               archive mode; equals -rlptgoD (no -H,-A,-X)
       --no-OPTION             turn off an implied OPTION (e.g. --no-D)
   -r, --recursive             recurse into directories
-@@ -614,9 +615,9 @@ uses a "quick check" that (by default) checks if each file's size and time
+@@ -617,9 +618,9 @@ uses a "quick check" that (by default) checks if each file's size and time
  of last modification match between the sender and receiver.  This option
  changes this to compare a 128-bit checksum for each file that has a
  matching size.  Generating the checksums means that both sides will expend
@@ -743,7 +743,7 @@ diff --git a/rsync.yo b/rsync.yo
  
  The sending side generates its checksums while it is doing the file-system
  scan that builds the list of the available files.  The receiver generates
-@@ -624,6 +625,8 @@ its checksums when it is scanning for changed files, and will checksum any
+@@ -627,6 +628,8 @@ its checksums when it is scanning for changed files, and will checksum any
  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.
  
@@ -752,7 +752,7 @@ diff --git a/rsync.yo b/rsync.yo
  Note that rsync always verifies that each em(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
-@@ -633,6 +636,36 @@ option's before-the-transfer "Does this file need to be updated?" check.
+@@ -636,6 +639,36 @@ option's before-the-transfer "Does this file need to be updated?" check.
  For protocol 30 and beyond (first supported in 3.0.0), the checksum used is
  MD5.  For older protocols, the checksum used is MD4.
  
index 1bb62fe7414b80d3424765c61c428fd3e7d2c744..7095223d8ba1c5458deca9fa3b5a0cb9f782c408 100644 (file)
@@ -390,7 +390,7 @@ diff --git a/flist.c b/flist.c
  }
  
  /* Call this with EITHER (1) "file, NULL, 0" to chdir() to the file's
-@@ -1494,6 +1705,8 @@ struct file_struct *make_file(const char *fname, struct file_list *flist,
+@@ -1501,6 +1712,8 @@ struct file_struct *make_file(const char *fname, struct file_list *flist,
        if (is_excluded(thisname, S_ISDIR(st.st_mode) != 0, filter_level)) {
                if (ignore_perishable)
                        non_perishable_cnt++;
@@ -399,7 +399,7 @@ diff --git a/flist.c b/flist.c
                return NULL;
        }
  
-@@ -1540,13 +1753,13 @@ struct file_struct *make_file(const char *fname, struct file_list *flist,
+@@ -1547,13 +1760,13 @@ struct file_struct *make_file(const char *fname, struct file_list *flist,
                        lastdir[len] = '\0';
                        lastdir_len = len;
                        if (checksum_files && am_sender && flist)
@@ -415,7 +415,7 @@ diff --git a/flist.c b/flist.c
                }
        }
        basename_len = strlen(basename) + 1; /* count the '\0' */
-@@ -1654,7 +1867,7 @@ struct file_struct *make_file(const char *fname, struct file_list *flist,
+@@ -1661,7 +1874,7 @@ struct file_struct *make_file(const char *fname, struct file_list *flist,
  
        if (always_checksum && am_sender && S_ISREG(st.st_mode)) {
                if (flist && checksum_files)
@@ -424,7 +424,7 @@ diff --git a/flist.c b/flist.c
                else
                        file_checksum(thisname, &st, tmp_sum);
                if (sender_keeps_checksum)
-@@ -2030,6 +2243,9 @@ static void send_directory(int f, struct file_list *flist, char *fbuf, int len,
+@@ -2037,6 +2250,9 @@ static void send_directory(int f, struct file_list *flist, char *fbuf, int len,
  
        closedir(d);
  
@@ -434,7 +434,7 @@ diff --git a/flist.c b/flist.c
        if (f >= 0 && recurse && !divert_dirs) {
                int i, end = flist->used - 1;
                /* send_if_directory() bumps flist->used, so use "end". */
-@@ -2689,6 +2905,9 @@ struct file_list *send_file_list(int f, int argc, char *argv[])
+@@ -2696,6 +2912,9 @@ struct file_list *send_file_list(int f, int argc, char *argv[])
                        rprintf(FINFO, "[%s] flist_eof=1\n", who_am_i());
        }
  
@@ -447,7 +447,7 @@ diff --git a/flist.c b/flist.c
 diff --git a/generator.c b/generator.c
 --- a/generator.c
 +++ b/generator.c
-@@ -109,6 +109,7 @@ static int dir_tweaking;
+@@ -110,6 +110,7 @@ static int dir_tweaking;
  static int symlink_timeset_failed_flags;
  static int need_retouch_dir_times;
  static int need_retouch_dir_perms;
@@ -455,7 +455,7 @@ diff --git a/generator.c b/generator.c
  static const char *solo_file = NULL;
  
  enum nonregtype {
-@@ -577,7 +578,7 @@ int unchanged_file(char *fn, struct file_struct *file, STRUCT_STAT *st, int slot
+@@ -580,7 +581,7 @@ int unchanged_file(char *fn, struct file_struct *file, STRUCT_STAT *st, int slot
        if (always_checksum > 0 && S_ISREG(st->st_mode)) {
                char sum[MAX_DIGEST_LEN];
                if (checksum_files && slot >= 0)
@@ -464,7 +464,7 @@ diff --git a/generator.c b/generator.c
                else
                        file_checksum(fn, st, sum);
                return memcmp(sum, F_SUM(file), checksum_len) == 0;
-@@ -1298,7 +1299,8 @@ static void recv_generator(char *fname, struct file_struct *file, int ndx,
+@@ -1301,7 +1302,8 @@ static void recv_generator(char *fname, struct file_struct *file, int ndx,
                                }
                        }
                        if (checksum_files) {
@@ -474,7 +474,7 @@ diff --git a/generator.c b/generator.c
                        }
                        need_new_dirscan = 0;
                }
-@@ -1472,6 +1474,7 @@ static void recv_generator(char *fname, struct file_struct *file, int ndx,
+@@ -1475,6 +1477,7 @@ static void recv_generator(char *fname, struct file_struct *file, int ndx,
                        else
                                change_local_filter_dir(fname, strlen(fname), F_DEPTH(file));
                }
@@ -482,7 +482,7 @@ diff --git a/generator.c b/generator.c
                goto cleanup;
        }
  
-@@ -1751,6 +1754,8 @@ static void recv_generator(char *fname, struct file_struct *file, int ndx,
+@@ -1754,6 +1757,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);
@@ -491,7 +491,7 @@ diff --git a/generator.c b/generator.c
                if (itemizing)
                        itemize(fnamecmp, file, ndx, statret, &sx, 0, 0, NULL);
  #ifdef SUPPORT_HARD_LINKS
-@@ -2246,6 +2251,7 @@ void generate_files(int f_out, const char *local_name)
+@@ -2248,6 +2253,7 @@ void generate_files(int f_out, const char *local_name)
                                } else
                                        change_local_filter_dir(fbuf, strlen(fbuf), F_DEPTH(fp));
                        }
@@ -499,7 +499,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];
-@@ -2340,6 +2346,9 @@ void generate_files(int f_out, const char *local_name)
+@@ -2342,6 +2348,9 @@ void generate_files(int f_out, const char *local_name)
                        wait_for_receiver();
        }
  
@@ -567,7 +567,7 @@ diff --git a/options.c b/options.c
 diff --git a/receiver.c b/receiver.c
 --- a/receiver.c
 +++ b/receiver.c
-@@ -49,6 +49,7 @@ extern int preallocate_files;
+@@ -50,6 +50,7 @@ extern int preallocate_files;
  extern int keep_partial;
  extern int checksum_len;
  extern int checksum_seed;
@@ -575,7 +575,7 @@ diff --git a/receiver.c b/receiver.c
  extern int inplace;
  extern int allowed_lull;
  extern int delay_updates;
-@@ -434,7 +435,7 @@ static void handle_delayed_updates(char *local_name)
+@@ -435,7 +436,7 @@ static void handle_delayed_updates(char *local_name)
                                        "rename failed for %s (from %s)",
                                        full_fname(fname), partialptr);
                        } else {
@@ -584,7 +584,7 @@ diff --git a/receiver.c b/receiver.c
                                 || (preserve_hard_links && F_IS_HLINKED(file)))
                                        send_msg_int(MSG_SUCCESS, ndx);
                                handle_partial_dir(partialptr, PDIR_DELETE);
-@@ -895,7 +896,7 @@ int recv_files(int f_in, int f_out, char *local_name)
+@@ -898,7 +899,7 @@ int recv_files(int f_in, int f_out, char *local_name)
                case 2:
                        break;
                case 1:
@@ -608,7 +608,7 @@ diff --git a/rsync.h b/rsync.h
 diff --git a/rsync.yo b/rsync.yo
 --- a/rsync.yo
 +++ b/rsync.yo
-@@ -645,9 +645,13 @@ computed just as it would be if bf(--sumfiles) was not specified.
+@@ -648,9 +648,13 @@ computed just as it would be if bf(--sumfiles) was not specified.
  
  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 a1f013b2809bf771bf9360612832899f1e5803a4..35e510e6df8f89951c6abd076dd45403f0132d87 100644 (file)
@@ -8,11 +8,11 @@ To use this patch, run these commands for a successful build:
     ./configure                               (optional if already run)
     make
 
-based-on: 4c8eb5f9511dd1393b147c4e993ee15448faedf5
+based-on: 7cb0de6326c915a72253fd103dae93308031ec3f
 diff --git a/flist.c b/flist.c
 --- a/flist.c
 +++ b/flist.c
-@@ -1306,7 +1306,8 @@ struct file_struct *make_file(const char *fname, struct file_list *flist,
+@@ -1313,7 +1313,8 @@ struct file_struct *make_file(const char *fname, struct file_list *flist,
  #endif
  
        if (always_checksum && am_sender && S_ISREG(st.st_mode)) {
@@ -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
-@@ -575,7 +575,8 @@ int unchanged_file(char *fn, struct file_struct *file, STRUCT_STAT *st)
+@@ -578,7 +578,8 @@ int unchanged_file(char *fn, struct file_struct *file, STRUCT_STAT *st)
           of the file time to determine whether to sync */
        if (always_checksum > 0 && S_ISREG(st->st_mode)) {
                char sum[MAX_DIGEST_LEN];
index c523b49125b4fe19b4204bb3c78940558c2be71d..6971c0476154e0958b09cd4a964986e02dc24df9 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: 4c8eb5f9511dd1393b147c4e993ee15448faedf5
+based-on: 7cb0de6326c915a72253fd103dae93308031ec3f
 diff --git a/loadparm.c b/loadparm.c
 --- a/loadparm.c
 +++ b/loadparm.c
index 1256eee4a7f6c31f983a80bdd89360a34dff022e..b2d8db3c609355ed8984b1b14f2c8d3b42370231 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: 4c8eb5f9511dd1393b147c4e993ee15448faedf5
+based-on: 7cb0de6326c915a72253fd103dae93308031ec3f
 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 preserve_specials;
  extern int preserve_hard_links;
  extern int preserve_executability;
-@@ -1633,7 +1634,7 @@ static void recv_generator(char *fname, struct file_struct *file, int ndx,
+@@ -1636,7 +1637,7 @@ static void recv_generator(char *fname, struct file_struct *file, int ndx,
                goto cleanup;
        }
  
@@ -56,7 +56,7 @@ diff --git a/options.c b/options.c
    {"specials",         0,  POPT_ARG_VAL,    &preserve_specials, 1, 0, 0 },
    {"no-specials",      0,  POPT_ARG_VAL,    &preserve_specials, 0, 0, 0 },
    {"links",           'l', POPT_ARG_VAL,    &preserve_links, 1, 0, 0 },
-@@ -2759,6 +2762,9 @@ void server_options(char **args, int *argc_p)
+@@ -2760,6 +2763,9 @@ void server_options(char **args, int *argc_p)
        else if (remove_source_files)
                args[ac++] = "--remove-sent-files";
  
@@ -90,7 +90,7 @@ diff --git a/rsync.c b/rsync.c
 diff --git a/sender.c b/sender.c
 --- a/sender.c
 +++ b/sender.c
-@@ -363,6 +363,20 @@ void send_files(int f_in, int f_out)
+@@ -365,6 +365,20 @@ void send_files(int f_in, int f_out)
                        exit_cleanup(RERR_FILEIO);
                }
  
index bd590976fb171360820714f6036b2ee25c8bf788..1b7e7a20d825796076a6bc91e71d906cc806c500 100644 (file)
@@ -13,7 +13,7 @@ based-on: patch/master/fileflags
 diff --git a/compat.c b/compat.c
 --- a/compat.c
 +++ b/compat.c
-@@ -47,6 +47,7 @@ extern int force_change;
+@@ -48,6 +48,7 @@ extern int force_change;
  extern int protect_args;
  extern int preserve_uid;
  extern int preserve_gid;
@@ -21,7 +21,7 @@ diff --git a/compat.c b/compat.c
  extern int preserve_fileflags;
  extern int preserve_acls;
  extern int preserve_xattrs;
-@@ -65,7 +66,7 @@ extern char *iconv_opt;
+@@ -66,7 +67,7 @@ extern char *iconv_opt;
  #endif
  
  /* These index values are for the file-list's extra-attribute array. */
@@ -30,7 +30,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 */
-@@ -142,6 +143,8 @@ void setup_protocol(int f_out,int f_in)
+@@ -144,6 +145,8 @@ void setup_protocol(int f_out,int f_in)
                uid_ndx = ++file_extra_cnt;
        if (preserve_gid)
                gid_ndx = ++file_extra_cnt;
@@ -111,7 +111,7 @@ diff --git a/flist.c b/flist.c
        if (!(xflags & XMIT_SAME_MODE))
                mode = from_wire_mode(read_int(f));
  
-@@ -1008,6 +1031,8 @@ static struct file_struct *recv_file_entry(int f, struct file_list *flist, int x
+@@ -1015,6 +1038,8 @@ static struct file_struct *recv_file_entry(int f, struct file_list *flist, int x
                F_GROUP(file) = gid;
                file->flags |= gid_flags;
        }
@@ -120,7 +120,7 @@ diff --git a/flist.c b/flist.c
        if (unsort_ndx)
                F_NDX(file) = flist->used + flist->ndx_start;
  
-@@ -1409,6 +1434,8 @@ struct file_struct *make_file(const char *fname, struct file_list *flist,
+@@ -1416,6 +1441,8 @@ struct file_struct *make_file(const char *fname, struct file_list *flist,
                F_GROUP(file) = st.st_gid;
        if (am_generator && st.st_uid == our_uid)
                file->flags |= FLAG_OWNED_BY_US;
@@ -140,7 +140,7 @@ diff --git a/generator.c b/generator.c
  extern int preserve_hard_links;
  extern int preserve_executability;
  extern int preserve_fileflags;
-@@ -383,8 +384,15 @@ static void do_delete_pass(void)
+@@ -384,8 +385,15 @@ static void do_delete_pass(void)
                rprintf(FINFO, "                    \r");
  }
  
@@ -157,7 +157,7 @@ diff --git a/generator.c b/generator.c
        return cmp_time(sxp->st.st_mtime, file->modtime);
  }
  
-@@ -442,7 +450,7 @@ int unchanged_attrs(const char *fname, struct file_struct *file, stat_x *sxp)
+@@ -443,7 +451,7 @@ int unchanged_attrs(const char *fname, struct file_struct *file, stat_x *sxp)
  {
        if (S_ISLNK(file->mode)) {
  #ifdef CAN_SET_SYMLINK_TIMES
@@ -166,7 +166,7 @@ diff --git a/generator.c b/generator.c
                        return 0;
  #endif
  #ifdef CAN_CHMOD_SYMLINK
-@@ -462,7 +470,7 @@ int unchanged_attrs(const char *fname, struct file_struct *file, stat_x *sxp)
+@@ -463,7 +471,7 @@ int unchanged_attrs(const char *fname, struct file_struct *file, stat_x *sxp)
                        return 0;
  #endif
        } else {
@@ -175,7 +175,7 @@ diff --git a/generator.c b/generator.c
                        return 0;
                if (perms_differ(file, sxp))
                        return 0;
-@@ -505,6 +513,12 @@ void itemize(const char *fnamecmp, struct file_struct *file, int ndx, int statre
+@@ -506,6 +514,12 @@ void itemize(const char *fnamecmp, struct file_struct *file, int ndx, int statre
                 : iflags & (ITEM_TRANSFER|ITEM_LOCAL_CHANGE) && !(iflags & ITEM_MATCHED)
                  && (!(iflags & ITEM_XNAME_FOLLOWS) || *xname))
                        iflags |= ITEM_REPORT_TIME;
@@ -188,7 +188,7 @@ diff --git a/generator.c b/generator.c
  #if !defined HAVE_LCHMOD && !defined HAVE_SETATTRLIST
                if (S_ISLNK(file->mode)) {
                        ;
-@@ -1127,6 +1141,7 @@ static int try_dests_non(struct file_struct *file, char *fname, int ndx,
+@@ -1130,6 +1144,7 @@ static int try_dests_non(struct file_struct *file, char *fname, int ndx,
  static void list_file_entry(struct file_struct *f)
  {
        char permbuf[PERMSTRING_SIZE];
@@ -196,7 +196,7 @@ diff --git a/generator.c b/generator.c
        int64 len;
        int colwidth = human_readable ? 14 : 11;
  
-@@ -1142,10 +1157,12 @@ static void list_file_entry(struct file_struct *f)
+@@ -1145,10 +1160,12 @@ static void list_file_entry(struct file_struct *f)
  
  #ifdef SUPPORT_LINKS
        if (preserve_links && S_ISLNK(f->mode)) {
@@ -212,7 +212,7 @@ diff --git a/generator.c b/generator.c
        } else
  #endif
        if (missing_args == 2 && f->mode == 0) {
-@@ -1153,9 +1170,12 @@ static void list_file_entry(struct file_struct *f)
+@@ -1156,9 +1173,12 @@ static void list_file_entry(struct file_struct *f)
                        colwidth + 31, "*missing",
                        f_name(f, NULL));
        } else {
@@ -227,7 +227,7 @@ diff --git a/generator.c b/generator.c
        }
  }
  
-@@ -1247,6 +1267,7 @@ static void recv_generator(char *fname, struct file_struct *file, int ndx,
+@@ -1250,6 +1270,7 @@ static void recv_generator(char *fname, struct file_struct *file, int ndx,
                        return;
                }
        }
@@ -421,7 +421,7 @@ diff --git a/rsync.h b/rsync.h
 diff --git a/rsync.yo b/rsync.yo
 --- a/rsync.yo
 +++ b/rsync.yo
-@@ -370,6 +370,7 @@ to the detailed description below for a complete description.  verb(
+@@ -373,6 +373,7 @@ to the detailed description below for a complete description.  verb(
       --specials              preserve special files
   -D                          same as --devices --specials
   -t, --times                 preserve modification times
@@ -429,7 +429,7 @@ diff --git a/rsync.yo b/rsync.yo
   -O, --omit-dir-times        omit directories from --times
   -J, --omit-link-times       omit symlinks from --times
       --super                 receiver attempts super-user activities
-@@ -1198,6 +1199,9 @@ cause the next transfer to behave as if it used bf(-I), causing all files to be
+@@ -1201,6 +1202,9 @@ cause the next transfer to behave as if it used bf(-I), causing all files to be
  updated (though rsync's delta-transfer algorithm will make the update fairly efficient
  if the files haven't actually changed, you're much better off using bf(-t)).
  
@@ -439,7 +439,7 @@ diff --git a/rsync.yo b/rsync.yo
  dit(bf(-O, --omit-dir-times)) This tells rsync to omit directories when
  it is preserving modification times (see bf(--times)).  If NFS is sharing
  the directories on the receiving side, it is a good idea to use bf(-O).
-@@ -2100,7 +2104,7 @@ with older versions of rsync, but that also turns on the output of other
+@@ -2103,7 +2107,7 @@ with older versions of rsync, but that also turns on the output of other
  verbose messages).
  
  The "%i" escape has a cryptic output that is 11 letters long.  The general
@@ -448,7 +448,7 @@ diff --git a/rsync.yo b/rsync.yo
  type of update being done, bf(X) is replaced by the file-type, and the
  other letters represent attributes that may be output if they are being
  modified.
-@@ -2159,6 +2163,8 @@ quote(itemization(
+@@ -2162,6 +2166,8 @@ quote(itemization(
    it() The bf(f) means that the fileflags information changed.
    it() The bf(a) means that the ACL information changed.
    it() The bf(x) means that the extended attribute information changed.
index 9b99c642413c219abc1dd360b4555b5a53c0e1a8..e9df0f41313ae6e46f4ee85debaea6c3d840e2da 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: 4c8eb5f9511dd1393b147c4e993ee15448faedf5
+based-on: 7cb0de6326c915a72253fd103dae93308031ec3f
 diff --git a/exclude.c b/exclude.c
 --- a/exclude.c
 +++ b/exclude.c
index b3a4d19f13676e74c06aef369cd4052c25bd7ea7..55a048b14c45a990062b6c353434cb4d75e1122f 100644 (file)
@@ -14,11 +14,11 @@ To use this patch, run these commands for a successful build:
     ./configure                                 (optional if already run)
     make
 
-based-on: 4c8eb5f9511dd1393b147c4e993ee15448faedf5
+based-on: 7cb0de6326c915a72253fd103dae93308031ec3f
 diff --git a/generator.c b/generator.c
 --- a/generator.c
 +++ b/generator.c
-@@ -62,6 +62,7 @@ extern int append_mode;
+@@ -63,6 +63,7 @@ extern int append_mode;
  extern int make_backups;
  extern int csum_length;
  extern int ignore_times;
@@ -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;
-@@ -568,6 +569,9 @@ void itemize(const char *fnamecmp, struct file_struct *file, int ndx, int statre
+@@ -571,6 +572,9 @@ void itemize(const char *fnamecmp, struct file_struct *file, int ndx, int statre
  /* Perform our quick-check heuristic for determining if a file is unchanged. */
  int unchanged_file(char *fn, struct file_struct *file, STRUCT_STAT *st)
  {
@@ -63,7 +63,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 },
-@@ -2646,6 +2649,9 @@ void server_options(char **args, int *argc_p)
+@@ -2647,6 +2650,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/options.c b/options.c
 diff --git a/rsync.yo b/rsync.yo
 --- a/rsync.yo
 +++ b/rsync.yo
-@@ -410,6 +410,7 @@ to the detailed description below for a complete description.  verb(
+@@ -413,6 +413,7 @@ to the detailed description below for a complete description.  verb(
       --contimeout=SECONDS    set daemon connection timeout in seconds
   -I, --ignore-times          don't skip files that match size and time
       --size-only             skip files that match in size
@@ -84,7 +84,7 @@ diff --git a/rsync.yo b/rsync.yo
       --modify-window=NUM     compare mod-times with reduced accuracy
   -T, --temp-dir=DIR          create temporary files in directory DIR
   -y, --fuzzy                 find similar file for basis if no dest file
-@@ -600,6 +601,12 @@ time to just looking for files that have changed in size.  This is useful
+@@ -603,6 +604,12 @@ time to just looking for files that have changed in size.  This is useful
  when starting to use rsync after using another mirroring system which may
  not preserve timestamps exactly.
  
diff --git a/db.diff b/db.diff
index 4b989bbb5d887ca71626ea8c2a71b2fd1bc98928..57817c0e1a97726f04c926175f1bafa4a05c304e 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: 4c8eb5f9511dd1393b147c4e993ee15448faedf5
+based-on: 7cb0de6326c915a72253fd103dae93308031ec3f
 diff --git a/.gitignore b/.gitignore
 --- a/.gitignore
 +++ b/.gitignore
@@ -236,7 +236,7 @@ diff --git a/configure.ac b/configure.ac
      netdb.h malloc.h float.h limits.h iconv.h libcharset.h langinfo.h \
      sys/acl.h acl/libacl.h attr/xattr.h sys/xattr.h sys/extattr.h \
      popt.h popt/popt.h linux/falloc.h netinet/in_systm.h netinet/ip.h \
-@@ -1098,6 +1099,48 @@ if test x"$enable_acl_support" = x"no" -o x"$enable_xattr_support" = x"no" -o x"
+@@ -1100,6 +1101,48 @@ if test x"$enable_acl_support" = x"no" -o x"$enable_xattr_support" = x"no" -o x"
      fi
  fi
  
@@ -548,8 +548,8 @@ new file mode 100644
 +              rprintf(FCLIENT, "[%s] SQL being run: %s\n", who_am_i(), query);
 +
 +      switch (use_db) {
-+      case DB_TYPE_MYSQL:
 +#ifdef USE_MYSQL
++      case DB_TYPE_MYSQL:
 +              if (mysql_query(dbh.mysql, query) < 0) {
 +                      rprintf(FERROR, "Failed to run sql: %s\n", mysql_error(dbh.mysql));
 +                      rprintf(FERROR, "%s\n", query);
@@ -2214,7 +2214,7 @@ diff --git a/flist.c b/flist.c
  extern int eol_nulls;
  extern int relative_paths;
  extern int implied_dirs;
-@@ -1305,11 +1306,8 @@ struct file_struct *make_file(const char *fname, struct file_list *flist,
+@@ -1312,11 +1313,8 @@ struct file_struct *make_file(const char *fname, struct file_list *flist,
                extra_len += EXTRA_LEN;
  #endif
  
@@ -2228,7 +2228,7 @@ diff --git a/flist.c b/flist.c
  
  #if EXTRA_ROUNDING > 0
        if (extra_len & (EXTRA_ROUNDING * EXTRA_LEN))
-@@ -1394,8 +1392,12 @@ struct file_struct *make_file(const char *fname, struct file_list *flist,
+@@ -1401,8 +1399,12 @@ struct file_struct *make_file(const char *fname, struct file_list *flist,
                return NULL;
        }
  
@@ -2243,7 +2243,7 @@ diff --git a/flist.c b/flist.c
  
        if (unsort_ndx)
                F_NDX(file) = stats.num_dirs;
-@@ -2056,6 +2058,9 @@ void send_extra_file_list(int f, int at_least)
+@@ -2063,6 +2065,9 @@ void send_extra_file_list(int f, int at_least)
    finish:
        if (io_error != save_io_error && protocol_version == 30 && !ignore_errors)
                send_msg_int(MSG_IO_ERROR, io_error);
@@ -2253,7 +2253,7 @@ diff --git a/flist.c b/flist.c
  }
  
  struct file_list *send_file_list(int f, int argc, char *argv[])
-@@ -2079,6 +2084,13 @@ struct file_list *send_file_list(int f, int argc, char *argv[])
+@@ -2086,6 +2091,13 @@ struct file_list *send_file_list(int f, int argc, char *argv[])
                     | (eol_nulls || reading_remotely ? RL_EOL_NULLS : 0);
        int implied_dot_dir = 0;
  
@@ -2267,7 +2267,7 @@ diff --git a/flist.c b/flist.c
        rprintf(FLOG, "building file list\n");
        if (show_filelist_p())
                start_filelist_progress("building file list");
-@@ -2425,6 +2437,9 @@ struct file_list *send_file_list(int f, int argc, char *argv[])
+@@ -2432,6 +2444,9 @@ struct file_list *send_file_list(int f, int argc, char *argv[])
                        rprintf(FINFO, "[%s] flist_eof=1\n", who_am_i());
        }
  
@@ -2280,15 +2280,15 @@ diff --git a/flist.c b/flist.c
 diff --git a/generator.c b/generator.c
 --- a/generator.c
 +++ b/generator.c
-@@ -58,6 +58,7 @@ extern int human_readable;
- extern int ignore_existing;
+@@ -59,6 +59,7 @@ extern int ignore_existing;
  extern int ignore_non_existing;
+ extern int want_xattr_optim;
  extern int inplace;
 +extern int use_db;
  extern int append_mode;
  extern int make_backups;
  extern int csum_length;
-@@ -575,7 +576,8 @@ int unchanged_file(char *fn, struct file_struct *file, STRUCT_STAT *st)
+@@ -578,7 +579,8 @@ int unchanged_file(char *fn, struct file_struct *file, STRUCT_STAT *st)
           of the file time to determine whether to sync */
        if (always_checksum > 0 && S_ISREG(st->st_mode)) {
                char sum[MAX_DIGEST_LEN];
@@ -2298,7 +2298,7 @@ diff --git a/generator.c b/generator.c
                return memcmp(sum, F_SUM(file), checksum_len) == 0;
        }
  
-@@ -2207,6 +2209,13 @@ void generate_files(int f_out, const char *local_name)
+@@ -2209,6 +2211,13 @@ void generate_files(int f_out, const char *local_name)
                        : "enabled");
        }
  
@@ -2312,7 +2312,7 @@ diff --git a/generator.c b/generator.c
        dflt_perms = (ACCESSPERMS & ~orig_umask);
  
        do {
-@@ -2332,6 +2341,9 @@ void generate_files(int f_out, const char *local_name)
+@@ -2334,6 +2343,9 @@ void generate_files(int f_out, const char *local_name)
                        wait_for_receiver();
        }
  
@@ -2854,7 +2854,7 @@ diff --git a/receiver.c b/receiver.c
  extern int am_root;
  extern int am_server;
  extern int inc_recurse;
-@@ -434,6 +436,11 @@ static void handle_delayed_updates(char *local_name)
+@@ -435,6 +437,11 @@ static void handle_delayed_updates(char *local_name)
                                        "rename failed for %s (from %s)",
                                        full_fname(fname), partialptr);
                        } else {
@@ -2866,7 +2866,7 @@ diff --git a/receiver.c b/receiver.c
                                if (remove_source_files
                                 || (preserve_hard_links && F_IS_HLINKED(file)))
                                        send_msg_int(MSG_SUCCESS, ndx);
-@@ -540,6 +547,9 @@ int recv_files(int f_in, int f_out, char *local_name)
+@@ -541,6 +548,9 @@ int recv_files(int f_in, int f_out, char *local_name)
        if (delay_updates)
                delayed_bits = bitbag_create(cur_flist->used + 1);
  
@@ -2876,7 +2876,7 @@ diff --git a/receiver.c b/receiver.c
        while (1) {
                cleanup_disable();
  
-@@ -867,6 +877,8 @@ int recv_files(int f_in, int f_out, char *local_name)
+@@ -870,6 +880,8 @@ int recv_files(int f_in, int f_out, char *local_name)
                                do_unlink(partialptr);
                                handle_partial_dir(partialptr, PDIR_DELETE);
                        }
@@ -2885,7 +2885,7 @@ diff --git a/receiver.c b/receiver.c
                } else if (keep_partial && partialptr) {
                        if (!handle_partial_dir(partialptr, PDIR_CREATE)) {
                                rprintf(FERROR,
-@@ -880,6 +892,8 @@ int recv_files(int f_in, int f_out, char *local_name)
+@@ -883,6 +895,8 @@ int recv_files(int f_in, int f_out, char *local_name)
                                recv_ok = -1;
                        else if (delay_updates && recv_ok) {
                                bitbag_set_bit(delayed_bits, ndx);
@@ -2947,7 +2947,7 @@ diff --git a/rsync.h b/rsync.h
 diff --git a/rsync.yo b/rsync.yo
 --- a/rsync.yo
 +++ b/rsync.yo
-@@ -337,6 +337,9 @@ to the detailed description below for a complete description.  verb(
+@@ -340,6 +340,9 @@ to the detailed description below for a complete description.  verb(
   -q, --quiet                 suppress non-error messages
       --no-motd               suppress daemon-mode MOTD (see caveat)
   -c, --checksum              skip based on checksum, not mod-time & size
@@ -2957,7 +2957,7 @@ diff --git a/rsync.yo b/rsync.yo
   -a, --archive               archive mode; equals -rlptgoD (no -H,-A,-X)
       --no-OPTION             turn off an implied OPTION (e.g. --no-D)
   -r, --recursive             recurse into directories
-@@ -633,6 +636,67 @@ option's before-the-transfer "Does this file need to be updated?" check.
+@@ -636,6 +639,67 @@ option's before-the-transfer "Does this file need to be updated?" check.
  For protocol 30 and beyond (first supported in 3.0.0), the checksum used is
  MD5.  For older protocols, the checksum used is MD4.
  
index 17b924756efea8552c95c65dedf8094558b11fab..d908e62dac49cd2ced5861246c60fc2b72564d33 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
-@@ -462,7 +462,9 @@ static int fattr_find(struct file_struct *f, char *fname)
+@@ -463,7 +463,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;
-@@ -1922,6 +1924,21 @@ static void recv_generator(char *fname, struct file_struct *file, int ndx,
+@@ -1925,6 +1927,21 @@ static void recv_generator(char *fname, struct file_struct *file, int ndx,
                fnamecmp = partialptr;
                fnamecmp_type = FNAMECMP_PARTIAL_DIR;
                statret = 0;
@@ -80,7 +80,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 },
-@@ -2633,8 +2637,14 @@ void server_options(char **args, int *argc_p)
+@@ -2634,8 +2638,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/options.c b/options.c
 diff --git a/rsync.yo b/rsync.yo
 --- a/rsync.yo
 +++ b/rsync.yo
-@@ -414,6 +414,8 @@ to the detailed description below for a complete description.  verb(
+@@ -417,6 +417,8 @@ to the detailed description below for a complete description.  verb(
   -T, --temp-dir=DIR          create temporary files in directory DIR
   -y, --fuzzy                 find similar file for basis if no dest file
       --detect-renamed        try to find renamed files to speed the xfer
@@ -109,7 +109,7 @@ diff --git a/rsync.yo b/rsync.yo
       --compare-dest=DIR      also compare received files relative to DIR
       --copy-dest=DIR         ... and include copies of unchanged files
       --link-dest=DIR         hardlink to files in DIR when unchanged
-@@ -1806,6 +1808,17 @@ the bf(--partial-dir) option, that directory will be used instead.  These
+@@ -1809,6 +1811,17 @@ the bf(--partial-dir) option, that directory will be used instead.  These
  potential alternate-basis files will be removed as the transfer progresses.
  This option conflicts with bf(--inplace) and bf(--append).
  
index 28de2248d85da4f51031d094371bdb2dd3df4fc9..4d452bd82a82133197edff9b1cd8c4be3b6f30c2 100644 (file)
@@ -38,11 +38,11 @@ TODO:
   a file that can't use it, while missing out on giving it to a file
   that could use it.
 
-based-on: 4c8eb5f9511dd1393b147c4e993ee15448faedf5
+based-on: 7cb0de6326c915a72253fd103dae93308031ec3f
 diff --git a/compat.c b/compat.c
 --- a/compat.c
 +++ b/compat.c
-@@ -43,6 +43,7 @@ extern int checksum_seed;
+@@ -44,6 +44,7 @@ extern int checksum_seed;
  extern int basis_dir_cnt;
  extern int prune_empty_dirs;
  extern int protocol_version;
@@ -50,7 +50,7 @@ diff --git a/compat.c b/compat.c
  extern int protect_args;
  extern int preserve_uid;
  extern int preserve_gid;
-@@ -123,6 +124,7 @@ void set_allow_inc_recurse(void)
+@@ -125,6 +126,7 @@ void set_allow_inc_recurse(void)
                allow_inc_recurse = 0;
        else if (!am_sender
         && (delete_before || delete_after
@@ -183,7 +183,7 @@ diff --git a/flist.c b/flist.c
  static void send_directory(int f, struct file_list *flist,
                           char *fbuf, int len, int flags);
  
-@@ -2561,6 +2603,25 @@ struct file_list *recv_file_list(int f)
+@@ -2568,6 +2610,25 @@ struct file_list *recv_file_list(int f)
         * for a non-relative transfer in recv_file_entry(). */
        flist_sort_and_clean(flist, relative_paths);
  
@@ -212,7 +212,7 @@ diff --git a/flist.c b/flist.c
 diff --git a/generator.c b/generator.c
 --- a/generator.c
 +++ b/generator.c
-@@ -78,6 +78,7 @@ extern char *partial_dir;
+@@ -79,6 +79,7 @@ extern char *partial_dir;
  extern int compare_dest;
  extern int copy_dest;
  extern int link_dest;
@@ -220,7 +220,7 @@ diff --git a/generator.c b/generator.c
  extern int whole_file;
  extern int list_only;
  extern int read_batch;
-@@ -96,10 +97,12 @@ extern char *tmpdir;
+@@ -97,10 +98,12 @@ extern char *tmpdir;
  extern char *basis_dir[MAX_BASIS_DIRS+1];
  extern struct file_list *cur_flist, *first_flist, *dir_flist;
  extern filter_rule_list filter_list, daemon_filter_list;
@@ -233,7 +233,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;
-@@ -270,13 +273,18 @@ static void do_delayed_deletions(char *delbuf)
+@@ -271,13 +274,18 @@ 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
@@ -256,7 +256,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)
+@@ -291,17 +299,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) {
@@ -284,7 +284,7 @@ diff --git a/generator.c b/generator.c
        if (one_file_system) {
                if (file->flags & FLAG_TOP_DIR)
                        filesystem_dev = *fs_dev;
-@@ -310,6 +323,14 @@ static void delete_in_dir(char *fbuf, struct file_struct *file, dev_t *fs_dev)
+@@ -311,6 +324,14 @@ static void delete_in_dir(char *fbuf, struct file_struct *file, dev_t *fs_dev)
  
        dirlist = get_dirlist(fbuf, dlen, 0);
  
@@ -299,7 +299,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--; ) {
-@@ -322,6 +343,10 @@ static void delete_in_dir(char *fbuf, struct file_struct *file, dev_t *fs_dev)
+@@ -323,6 +344,10 @@ static void delete_in_dir(char *fbuf, struct file_struct *file, dev_t *fs_dev)
                                        f_name(fp, NULL));
                        continue;
                }
@@ -310,7 +310,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. */
-@@ -330,14 +355,19 @@ static void delete_in_dir(char *fbuf, struct file_struct *file, dev_t *fs_dev)
+@@ -331,14 +356,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);
@@ -334,7 +334,7 @@ diff --git a/generator.c b/generator.c
        flist_free(dirlist);
  }
  
-@@ -373,14 +403,125 @@ static void do_delete_pass(void)
+@@ -374,14 +404,125 @@ static void do_delete_pass(void)
                 || !S_ISDIR(st.st_mode))
                        continue;
  
@@ -462,7 +462,7 @@ diff --git a/generator.c b/generator.c
  static inline int time_differs(struct file_struct *file, stat_x *sxp)
  {
        return cmp_time(sxp->st.st_mtime, file->modtime);
-@@ -1148,6 +1289,7 @@ static void list_file_entry(struct file_struct *f)
+@@ -1151,6 +1292,7 @@ static void list_file_entry(struct file_struct *f)
        }
  }
  
@@ -470,7 +470,7 @@ diff --git a/generator.c b/generator.c
  static int phase = 0;
  static int dflt_perms;
  
-@@ -1257,7 +1399,7 @@ static void recv_generator(char *fname, struct file_struct *file, int ndx,
+@@ -1260,7 +1402,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;
@@ -479,7 +479,7 @@ diff --git a/generator.c b/generator.c
                                        rsyserr(FERROR_XFER, errno,
                                                "recv_generator: mkdir %s failed",
                                                full_fname(dn));
-@@ -1410,7 +1552,7 @@ static void recv_generator(char *fname, struct file_struct *file, int ndx,
+@@ -1413,7 +1555,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
@@ -488,7 +488,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",
-@@ -1459,9 +1601,12 @@ static void recv_generator(char *fname, struct file_struct *file, int ndx,
+@@ -1462,9 +1604,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)) {
@@ -504,7 +504,7 @@ diff --git a/generator.c b/generator.c
                                change_local_filter_dir(fname, strlen(fname), F_DEPTH(file));
                }
                goto cleanup;
-@@ -1726,8 +1871,14 @@ static void recv_generator(char *fname, struct file_struct *file, int ndx,
+@@ -1729,8 +1874,14 @@ static void recv_generator(char *fname, struct file_struct *file, int ndx,
                        goto cleanup;
                }
  #endif
@@ -520,7 +520,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;
-@@ -2188,6 +2339,12 @@ void generate_files(int f_out, const char *local_name)
+@@ -2190,6 +2341,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());
  
@@ -533,7 +533,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) {
-@@ -2198,7 +2355,7 @@ void generate_files(int f_out, const char *local_name)
+@@ -2200,7 +2357,7 @@ void generate_files(int f_out, const char *local_name)
        }
        info_levels[INFO_FLIST] = info_levels[INFO_PROGRESS] = 0;
  
@@ -542,7 +542,7 @@ diff --git a/generator.c b/generator.c
                whole_file = 0;
        if (DEBUG_GTE(FLIST, 1)) {
                rprintf(FINFO, "delta-transmission %s\n",
-@@ -2234,7 +2391,7 @@ void generate_files(int f_out, const char *local_name)
+@@ -2236,7 +2393,7 @@ void generate_files(int f_out, const char *local_name)
                                                dirdev = MAKEDEV(DEV_MAJOR(devp), DEV_MINOR(devp));
                                        } else
                                                dirdev = MAKEDEV(0, 0);
@@ -551,7 +551,7 @@ diff --git a/generator.c b/generator.c
                                } else
                                        change_local_filter_dir(fbuf, strlen(fbuf), F_DEPTH(fp));
                        }
-@@ -2281,7 +2438,21 @@ void generate_files(int f_out, const char *local_name)
+@@ -2283,7 +2440,21 @@ void generate_files(int f_out, const char *local_name)
        } while ((cur_flist = cur_flist->next) != NULL);
  
        if (delete_during)
@@ -630,7 +630,7 @@ diff --git a/options.c b/options.c
                                 delay_updates ? "delay-updates" : "partial-dir");
                        return 0;
                }
-@@ -2629,6 +2633,8 @@ void server_options(char **args, int *argc_p)
+@@ -2630,6 +2634,8 @@ void server_options(char **args, int *argc_p)
                        args[ac++] = "--super";
                if (size_only)
                        args[ac++] = "--size-only";
@@ -642,7 +642,7 @@ diff --git a/options.c b/options.c
 diff --git a/receiver.c b/receiver.c
 --- a/receiver.c
 +++ b/receiver.c
-@@ -211,7 +211,7 @@ int open_tmpfile(char *fnametmp, const char *fname, struct file_struct *file)
+@@ -212,7 +212,7 @@ int open_tmpfile(char *fnametmp, const char *fname, struct file_struct *file)
         * information should have been previously transferred, but that may
         * not be the case with -R */
        if (fd == -1 && relative_paths && errno == ENOENT
@@ -674,7 +674,7 @@ diff --git a/rsync.h b/rsync.h
 diff --git a/rsync.yo b/rsync.yo
 --- a/rsync.yo
 +++ b/rsync.yo
-@@ -413,6 +413,7 @@ to the detailed description below for a complete description.  verb(
+@@ -416,6 +416,7 @@ to the detailed description below for a complete description.  verb(
       --modify-window=NUM     compare mod-times with reduced accuracy
   -T, --temp-dir=DIR          create temporary files in directory DIR
   -y, --fuzzy                 find similar file for basis if no dest file
@@ -682,7 +682,7 @@ diff --git a/rsync.yo b/rsync.yo
       --compare-dest=DIR      also compare received files relative to DIR
       --copy-dest=DIR         ... and include copies of unchanged files
       --link-dest=DIR         hardlink to files in DIR when unchanged
-@@ -1790,6 +1791,21 @@ Note that the use of the bf(--delete) option might get rid of any potential
+@@ -1793,6 +1794,21 @@ Note that the use of the bf(--delete) option might get rid of any potential
  fuzzy-match files, so either use bf(--delete-after) or specify some
  filename exclusions if you need to prevent this.
  
index 4f32b60c53e6964b4a03b3b4960da62e31eb1aed..1d10e11e1c92e57336774b65752035ce17e55fe5 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: 4c8eb5f9511dd1393b147c4e993ee15448faedf5
+based-on: 7cb0de6326c915a72253fd103dae93308031ec3f
 diff --git a/options.c b/options.c
 --- a/options.c
 +++ b/options.c
@@ -42,7 +42,7 @@ diff --git a/options.c b/options.c
 diff --git a/rsync.yo b/rsync.yo
 --- a/rsync.yo
 +++ b/rsync.yo
-@@ -401,6 +401,7 @@ to the detailed description below for a complete description.  verb(
+@@ -404,6 +404,7 @@ to the detailed description below for a complete description.  verb(
       --partial               keep partially transferred files
       --partial-dir=DIR       put a partially transferred file into DIR
       --delay-updates         put all updated files into place at end
@@ -50,7 +50,7 @@ diff --git a/rsync.yo b/rsync.yo
   -m, --prune-empty-dirs      prune empty directory chains from file-list
       --numeric-ids           don't map uid/gid values by user/group name
       --usermap=STRING        custom username mapping
-@@ -2359,6 +2360,14 @@ See also the "atomic-rsync" perl script in the "support" subdir for an
+@@ -2362,6 +2363,14 @@ See also the "atomic-rsync" perl script in the "support" subdir for an
  update algorithm that is even more atomic (it uses bf(--link-dest) and a
  parallel hierarchy of files).
  
index 480777008361a7eeaaa2aa091e0e6b4d469188df..a297c7be222671758679b21389a29c1df3cc3e0a 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: 4c8eb5f9511dd1393b147c4e993ee15448faedf5
+based-on: 7cb0de6326c915a72253fd103dae93308031ec3f
 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;
-@@ -1668,6 +1669,13 @@ static void recv_generator(char *fname, struct file_struct *file, int ndx,
+@@ -1671,6 +1672,13 @@ static void recv_generator(char *fname, struct file_struct *file, int ndx,
                goto cleanup;
        }
  
@@ -33,7 +33,7 @@ diff --git a/generator.c b/generator.c
        fnamecmp_type = FNAMECMP_FNAME;
  
        if (statret == 0 && !S_ISREG(sx.st.st_mode)) {
-@@ -2094,6 +2102,7 @@ void check_for_finished_files(int itemizing, enum logcode code, int check_redo)
+@@ -2096,6 +2104,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;
@@ -41,7 +41,7 @@ diff --git a/generator.c b/generator.c
                        always_checksum = -always_checksum;
                        size_only = -size_only;
                        append_mode = -append_mode;
-@@ -2119,6 +2128,7 @@ void check_for_finished_files(int itemizing, enum logcode code, int check_redo)
+@@ -2121,6 +2130,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 66a04cef0dff17001c04305425835df610792f03..cec7418770ae6358cdbda813b5f8da286231c0a0 100644 (file)
@@ -8,7 +8,7 @@ To use this patch, run these commands for a successful build:
     ./configure
     make
 
-based-on: 4c8eb5f9511dd1393b147c4e993ee15448faedf5
+based-on: 7cb0de6326c915a72253fd103dae93308031ec3f
 diff --git a/Makefile.in b/Makefile.in
 --- a/Makefile.in
 +++ b/Makefile.in
@@ -33,7 +33,7 @@ diff --git a/Makefile.in b/Makefile.in
 diff --git a/compat.c b/compat.c
 --- a/compat.c
 +++ b/compat.c
-@@ -43,9 +43,11 @@ extern int checksum_seed;
+@@ -44,9 +44,11 @@ extern int checksum_seed;
  extern int basis_dir_cnt;
  extern int prune_empty_dirs;
  extern int protocol_version;
@@ -45,7 +45,7 @@ diff --git a/compat.c b/compat.c
  extern int preserve_acls;
  extern int preserve_xattrs;
  extern int need_messages_from_generator;
-@@ -63,7 +65,7 @@ extern char *iconv_opt;
+@@ -64,7 +66,7 @@ extern char *iconv_opt;
  #endif
  
  /* These index values are for the file-list's extra-attribute array. */
@@ -54,7 +54,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 */
-@@ -140,6 +142,8 @@ void setup_protocol(int f_out,int f_in)
+@@ -142,6 +144,8 @@ void setup_protocol(int f_out,int f_in)
                uid_ndx = ++file_extra_cnt;
        if (preserve_gid)
                gid_ndx = ++file_extra_cnt;
@@ -198,7 +198,7 @@ diff --git a/flist.c b/flist.c
  
        if (preserve_uid && !(xflags & XMIT_SAME_UID)) {
                if (protocol_version < 30)
-@@ -971,6 +998,10 @@ static struct file_struct *recv_file_entry(int f, struct file_list *flist, int x
+@@ -978,6 +1005,10 @@ static struct file_struct *recv_file_entry(int f, struct file_list *flist, int x
        }
  #endif
        file->mode = mode;
@@ -209,7 +209,7 @@ diff --git a/flist.c b/flist.c
        if (preserve_uid)
                F_OWNER(file) = uid;
        if (preserve_gid) {
-@@ -1368,6 +1399,10 @@ struct file_struct *make_file(const char *fname, struct file_list *flist,
+@@ -1375,6 +1406,10 @@ struct file_struct *make_file(const char *fname, struct file_list *flist,
        }
  #endif
        file->mode = st.st_mode;
@@ -234,7 +234,7 @@ diff --git a/generator.c b/generator.c
  extern int delete_mode;
  extern int delete_before;
  extern int delete_during;
-@@ -464,6 +466,10 @@ int unchanged_attrs(const char *fname, struct file_struct *file, stat_x *sxp)
+@@ -465,6 +467,10 @@ int unchanged_attrs(const char *fname, struct file_struct *file, stat_x *sxp)
                        return 0;
                if (perms_differ(file, sxp))
                        return 0;
@@ -245,7 +245,7 @@ diff --git a/generator.c b/generator.c
                if (ownership_differs(file, sxp))
                        return 0;
  #ifdef SUPPORT_ACLS
-@@ -515,6 +521,11 @@ void itemize(const char *fnamecmp, struct file_struct *file, int ndx, int statre
+@@ -516,6 +522,11 @@ void itemize(const char *fnamecmp, struct file_struct *file, int ndx, int statre
                if (gid_ndx && !(file->flags & FLAG_SKIP_GROUP)
                    && sxp->st.st_gid != (gid_t)F_GROUP(file))
                        iflags |= ITEM_REPORT_GROUP;
@@ -257,7 +257,7 @@ diff --git a/generator.c b/generator.c
  #ifdef SUPPORT_ACLS
                if (preserve_acls && !S_ISLNK(file->mode)) {
                        if (!ACL_READY(*sxp))
-@@ -1392,6 +1403,10 @@ static void recv_generator(char *fname, struct file_struct *file, int ndx,
+@@ -1395,6 +1406,10 @@ static void recv_generator(char *fname, struct file_struct *file, int ndx,
                        file->mode = dest_mode(file->mode, sx.st.st_mode,
                                               dflt_perms, statret == 0);
                }
@@ -268,7 +268,7 @@ diff --git a/generator.c b/generator.c
                if (statret != 0 && basis_dir[0] != NULL) {
                        int j = try_dests_non(file, fname, ndx, fnamecmpbuf, &sx,
                                              itemizing, code);
-@@ -1436,10 +1451,15 @@ static void recv_generator(char *fname, struct file_struct *file, int ndx,
+@@ -1439,10 +1454,15 @@ static void recv_generator(char *fname, struct file_struct *file, int ndx,
                 * readable and writable permissions during the time we are
                 * putting files within them.  This is then restored to the
                 * former permissions after the transfer is done. */
@@ -285,7 +285,7 @@ diff --git a/generator.c b/generator.c
                                rsyserr(FERROR_XFER, errno,
                                        "failed to modify permissions on %s",
                                        full_fname(fname));
-@@ -1474,6 +1494,10 @@ static void recv_generator(char *fname, struct file_struct *file, int ndx,
+@@ -1477,6 +1497,10 @@ static void recv_generator(char *fname, struct file_struct *file, int ndx,
                file->mode = dest_mode(file->mode, sx.st.st_mode, dflt_perms,
                                       exists);
        }
@@ -296,7 +296,7 @@ diff --git a/generator.c b/generator.c
  
  #ifdef SUPPORT_HARD_LINKS
        if (preserve_hard_links && F_HLINK_NOT_FIRST(file)
-@@ -2043,13 +2067,17 @@ static void touch_up_dirs(struct file_list *flist, int ndx)
+@@ -2045,13 +2069,17 @@ static void touch_up_dirs(struct file_list *flist, int ndx)
                        continue;
                fname = f_name(file, NULL);
                if (fix_dir_perms)
@@ -470,7 +470,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 },
-@@ -2536,6 +2562,9 @@ void server_options(char **args, int *argc_p)
+@@ -2537,6 +2563,9 @@ void server_options(char **args, int *argc_p)
        if (xfer_dirs && !recurse && delete_mode && am_sender)
                args[ac++] = "--no-r";
  
@@ -480,7 +480,7 @@ diff --git a/options.c b/options.c
        if (do_compression && def_compress_level != Z_DEFAULT_COMPRESSION) {
                if (asprintf(&arg, "--compress-level=%d", def_compress_level) < 0)
                        goto oom;
-@@ -2623,6 +2652,16 @@ void server_options(char **args, int *argc_p)
+@@ -2624,6 +2653,16 @@ void server_options(char **args, int *argc_p)
                        args[ac++] = "--delete-excluded";
                if (force_delete)
                        args[ac++] = "--force";
@@ -695,7 +695,7 @@ diff --git a/rsync.h b/rsync.h
 diff --git a/rsync.yo b/rsync.yo
 --- a/rsync.yo
 +++ b/rsync.yo
-@@ -359,6 +359,7 @@ to the detailed description below for a complete description.  verb(
+@@ -362,6 +362,7 @@ to the detailed description below for a complete description.  verb(
   -K, --keep-dirlinks         treat symlinked dir on receiver as dir
   -H, --hard-links            preserve hard links
   -p, --perms                 preserve permissions
@@ -703,7 +703,7 @@ diff --git a/rsync.yo b/rsync.yo
   -E, --executability         preserve executability
       --chmod=CHMOD           affect file and/or directory permissions
   -A, --acls                  preserve ACLs (implies -p)
-@@ -394,7 +395,10 @@ to the detailed description below for a complete description.  verb(
+@@ -397,7 +398,10 @@ to the detailed description below for a complete description.  verb(
       --ignore-missing-args   ignore missing source args without error
       --delete-missing-args   delete missing source args from destination
       --ignore-errors         delete even if there are I/O errors
@@ -715,7 +715,7 @@ diff --git a/rsync.yo b/rsync.yo
       --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
-@@ -641,7 +645,8 @@ specified, in which case bf(-r) is not implied.
+@@ -644,7 +648,8 @@ specified, in which case bf(-r) is not implied.
  
  Note that bf(-a) bf(does not preserve hardlinks), because
  finding multiply-linked files is expensive.  You must separately
@@ -725,7 +725,7 @@ diff --git a/rsync.yo b/rsync.yo
  
  dit(--no-OPTION) You may turn off one or more implied options by prefixing
  the option name with "no-".  Not all options may be prefixed with a "no-":
-@@ -940,7 +945,7 @@ they would be using bf(--copy-links).
+@@ -943,7 +948,7 @@ they would be using bf(--copy-links).
  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
@@ -734,7 +734,7 @@ diff --git a/rsync.yo b/rsync.yo
  
  See also bf(--keep-dirlinks) for an analogous option for the receiving
  side.
-@@ -1103,6 +1108,29 @@ Note that this option does not copy rsyncs special xattr values (e.g. those
+@@ -1106,6 +1111,29 @@ Note that this option does not copy rsyncs special xattr values (e.g. those
  used by bf(--fake-super)) unless you repeat the option (e.g. -XX).  This
  "copy all xattrs" mode cannot be used with bf(--fake-super).
  
@@ -764,7 +764,7 @@ diff --git a/rsync.yo b/rsync.yo
  dit(bf(--chmod)) This option tells rsync to apply one or more
  comma-separated "chmod" modes to the permission of the files in the
  transfer.  The resulting value is treated as though it were the permissions
-@@ -1432,12 +1460,13 @@ display as a "*missing" entry in the bf(--list-only) output.
+@@ -1435,12 +1463,13 @@ display as a "*missing" entry in the bf(--list-only) output.
  dit(bf(--ignore-errors)) Tells bf(--delete) to go ahead and delete files
  even when there are I/O errors.
  
@@ -781,7 +781,7 @@ diff --git a/rsync.yo b/rsync.yo
  bf(--recursive) option was also enabled.
  
  dit(bf(--max-delete=NUM)) This tells rsync not to delete more than NUM
-@@ -2071,7 +2100,7 @@ with older versions of rsync, but that also turns on the output of other
+@@ -2074,7 +2103,7 @@ with older versions of rsync, but that also turns on the output of other
  verbose messages).
  
  The "%i" escape has a cryptic output that is 11 letters long.  The general
@@ -790,7 +790,7 @@ diff --git a/rsync.yo b/rsync.yo
  type of update being done, bf(X) is replaced by the file-type, and the
  other letters represent attributes that may be output if they are being
  modified.
-@@ -2127,7 +2156,7 @@ quote(itemization(
+@@ -2130,7 +2159,7 @@ quote(itemization(
    sender's value (requires bf(--owner) and super-user privileges).
    it() A bf(g) means the group is different and is being updated to the
    sender's value (requires bf(--group) and the authority to set the group).
index 023060e2ffcfa53e05ed3c0f3ab7ae722bd53483..f47f2e73226ab9fb7d8c17b81625387b1504067d 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: 4c8eb5f9511dd1393b147c4e993ee15448faedf5
+based-on: 7cb0de6326c915a72253fd103dae93308031ec3f
 diff --git a/exclude.c b/exclude.c
 --- a/exclude.c
 +++ b/exclude.c
@@ -265,7 +265,7 @@ diff --git a/flist.c b/flist.c
        if (filter_level != ALL_FILTERS)
                return 0;
        if (filter_list.head
-@@ -1167,7 +1171,7 @@ struct file_struct *make_file(const char *fname, struct file_list *flist,
+@@ -1174,7 +1178,7 @@ struct file_struct *make_file(const char *fname, struct file_list *flist,
        } else if (readlink_stat(thisname, &st, linkname) != 0) {
                int save_errno = errno;
                /* See if file is excluded before reporting an error. */
@@ -274,7 +274,7 @@ diff --git a/flist.c b/flist.c
                 && (is_excluded(thisname, 0, filter_level)
                  || is_excluded(thisname, 1, filter_level))) {
                        if (ignore_perishable && save_errno != ENOENT)
-@@ -1212,6 +1216,12 @@ struct file_struct *make_file(const char *fname, struct file_list *flist,
+@@ -1219,6 +1223,12 @@ struct file_struct *make_file(const char *fname, struct file_list *flist,
  
        if (filter_level == NO_FILTERS)
                goto skip_filters;
@@ -287,7 +287,7 @@ diff --git a/flist.c b/flist.c
  
        if (S_ISDIR(st.st_mode)) {
                if (!xfer_dirs) {
-@@ -1414,12 +1424,23 @@ static struct file_struct *send_file_name(int f, struct file_list *flist,
+@@ -1421,12 +1431,23 @@ static struct file_struct *send_file_name(int f, struct file_list *flist,
                                          int flags, int filter_level)
  {
        struct file_struct *file;
@@ -312,7 +312,7 @@ diff --git a/flist.c b/flist.c
                file->mode = tweak_mode(file->mode, chmod_modes);
  
        if (f >= 0) {
-@@ -2310,7 +2331,7 @@ struct file_list *send_file_list(int f, int argc, char *argv[])
+@@ -2317,7 +2338,7 @@ struct file_list *send_file_list(int f, int argc, char *argv[])
                        struct file_struct *file;
                        file = send_file_name(f, flist, fbuf, &st,
                                              FLAG_TOP_DIR | FLAG_CONTENT_DIR | flags,
@@ -321,7 +321,7 @@ diff --git a/flist.c b/flist.c
                        if (!file)
                                continue;
                        if (inc_recurse) {
-@@ -2324,7 +2345,7 @@ struct file_list *send_file_list(int f, int argc, char *argv[])
+@@ -2331,7 +2352,7 @@ struct file_list *send_file_list(int f, int argc, char *argv[])
                        } else
                                send_if_directory(f, flist, file, fbuf, len, flags);
                } else
@@ -386,7 +386,7 @@ diff --git a/rsync.h b/rsync.h
 diff --git a/rsync.yo b/rsync.yo
 --- a/rsync.yo
 +++ b/rsync.yo
-@@ -1125,6 +1125,8 @@ quote(--chmod=D2775,F664)
+@@ -1128,6 +1128,8 @@ quote(--chmod=D2775,F664)
  
  It is also legal to specify multiple bf(--chmod) options, as each
  additional option is just appended to the list of changes to make.
@@ -395,7 +395,7 @@ diff --git a/rsync.yo b/rsync.yo
  
  See the bf(--perms) and bf(--executability) options for how the resulting
  permission value can be applied to the files in the transfer.
-@@ -2021,6 +2023,10 @@ be omitted, but if USER is empty, a leading colon must be supplied.
+@@ -2024,6 +2026,10 @@ be omitted, but if USER is empty, a leading colon must be supplied.
  If you specify "--chown=foo:bar, this is exactly the same as specifying
  "--usermap=*:foo --groupmap=*:bar", only easier.
  
@@ -406,7 +406,7 @@ diff --git a/rsync.yo b/rsync.yo
  dit(bf(--timeout=TIMEOUT)) This option allows you to set a maximum I/O
  timeout in seconds. If no data is transferred for the specified time
  then rsync will exit. The default is 0, which means no timeout.
-@@ -2880,6 +2886,15 @@ itemization(
+@@ -2883,6 +2889,15 @@ itemization(
    option's default 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.
@@ -422,7 +422,7 @@ diff --git a/rsync.yo b/rsync.yo
  )
  
  manpagesection(MERGE-FILE FILTER RULES)
-@@ -2941,6 +2956,12 @@ itemization(
+@@ -2944,6 +2959,12 @@ itemization(
    a rule prefix such as bf(hide)).
  )
  
index 7b89f6d0cea16297a3627e33901ce057b38eda1e..13cbe2a0eed67dff1b2d67b89a664f54d5495c6f 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: 4c8eb5f9511dd1393b147c4e993ee15448faedf5
+based-on: 7cb0de6326c915a72253fd103dae93308031ec3f
 diff --git a/options.c b/options.c
 --- a/options.c
 +++ b/options.c
@@ -35,7 +35,7 @@ diff --git a/options.c b/options.c
    {"rsh",             'e', POPT_ARG_STRING, &shell_cmd, 0, 0, 0 },
    {"rsync-path",       0,  POPT_ARG_STRING, &rsync_path, 0, 0, 0 },
    {"temp-dir",        'T', POPT_ARG_STRING, &tmpdir, 0, 0, 0 },
-@@ -2708,6 +2711,9 @@ void server_options(char **args, int *argc_p)
+@@ -2709,6 +2712,9 @@ void server_options(char **args, int *argc_p)
                        args[ac++] = tmpdir;
                }
  
@@ -48,7 +48,7 @@ diff --git a/options.c b/options.c
 diff --git a/receiver.c b/receiver.c
 --- a/receiver.c
 +++ b/receiver.c
-@@ -39,6 +39,7 @@ extern int relative_paths;
+@@ -40,6 +40,7 @@ extern int relative_paths;
  extern int preserve_hard_links;
  extern int preserve_perms;
  extern int preserve_xattrs;
@@ -56,7 +56,7 @@ diff --git a/receiver.c b/receiver.c
  extern int basis_dir_cnt;
  extern int make_backups;
  extern int cleanup_got_literal;
-@@ -395,6 +396,12 @@ static int receive_data(int f_in, char *fname_r, int fd_r, OFF_T size_r,
+@@ -396,6 +397,12 @@ static int receive_data(int f_in, char *fname_r, int fd_r, OFF_T size_r,
        if (sum_end(file_sum1) != checksum_len)
                overflow_exit("checksum_len"); /* Impossible... */
  
index eb266742c08a5cd123dd763332147a93348e002f..1ca904b06d1fe1957f775a38f7eae90de51b30c6 100644 (file)
@@ -22,7 +22,7 @@ based-on: patch/master/crtimes
 diff --git a/flist.c b/flist.c
 --- a/flist.c
 +++ b/flist.c
-@@ -1576,6 +1576,9 @@ static struct file_struct *send_file_name(int f, struct file_list *flist,
+@@ -1583,6 +1583,9 @@ 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;
@@ -43,7 +43,7 @@ diff --git a/generator.c b/generator.c
  extern int preserve_links;
  extern int preserve_devices;
  extern int preserve_specials;
-@@ -1759,6 +1760,14 @@ static void recv_generator(char *fname, struct file_struct *file, int ndx,
+@@ -1762,6 +1763,14 @@ static void recv_generator(char *fname, struct file_struct *file, int ndx,
                                        fname, fnamecmpbuf);
                        }
                        sx.st.st_size = F_LENGTH(fuzzy_file);
@@ -58,7 +58,7 @@ diff --git a/generator.c b/generator.c
                        statret = 0;
                        fnamecmp = fnamecmpbuf;
                }
-@@ -1926,6 +1935,18 @@ static void recv_generator(char *fname, struct file_struct *file, int ndx,
+@@ -1929,6 +1938,18 @@ static void recv_generator(char *fname, struct file_struct *file, int ndx,
        if (read_batch)
                goto cleanup;
  
@@ -296,7 +296,7 @@ diff --git a/options.c b/options.c
        if (block_size > MAX_BLOCK_SIZE) {
                snprintf(err_buf, sizeof err_buf,
                         "--block-size=%lu is too large (max: %u)\n", block_size, MAX_BLOCK_SIZE);
-@@ -2572,6 +2592,11 @@ void server_options(char **args, int *argc_p)
+@@ -2573,6 +2593,11 @@ void server_options(char **args, int *argc_p)
        if (preserve_fileflags)
                args[ac++] = "--fileflags";
  
@@ -378,7 +378,7 @@ diff --git a/rsync.h b/rsync.h
 diff --git a/rsync.yo b/rsync.yo
 --- a/rsync.yo
 +++ b/rsync.yo
-@@ -364,6 +364,8 @@ to the detailed description below for a complete description.  verb(
+@@ -367,6 +367,8 @@ to the detailed description below for a complete description.  verb(
       --chmod=CHMOD           affect file and/or directory permissions
   -A, --acls                  preserve ACLs (implies -p)
   -X, --xattrs                preserve extended attributes
@@ -387,7 +387,7 @@ diff --git a/rsync.yo b/rsync.yo
   -o, --owner                 preserve owner (super-user only)
   -g, --group                 preserve group
       --devices               preserve device files (super-user only)
-@@ -1132,6 +1134,42 @@ flags on files and directories that are being updated or deleted on the
+@@ -1135,6 +1137,42 @@ flags on files and directories that are being updated or deleted on the
  receiving side.  It does not try to affect user flags.  This option overrides
  bf(--force-change) and bf(--force-uchange).
  
index 06ce07cc304644252e7971b32a2a459f4e1b81f3..518a68aa34eae6824f8be7c8094ba26800e7622d 100644 (file)
@@ -12,7 +12,7 @@ TODO:
  - Make this code handle multibyte character encodings, and honor the
    --iconv setting when converting case.
 
-based-on: 4c8eb5f9511dd1393b147c4e993ee15448faedf5
+based-on: 7cb0de6326c915a72253fd103dae93308031ec3f
 diff --git a/exclude.c b/exclude.c
 --- a/exclude.c
 +++ b/exclude.c
@@ -56,7 +56,7 @@ diff --git a/flist.c b/flist.c
  extern int ignore_errors;
  extern int numeric_ids;
  extern int recurse;
-@@ -3023,6 +3024,7 @@ int f_name_cmp(const struct file_struct *f1, const struct file_struct *f2)
+@@ -3030,6 +3031,7 @@ int f_name_cmp(const struct file_struct *f1, const struct file_struct *f2)
  {
        int dif;
        const uchar *c1, *c2;
@@ -64,7 +64,7 @@ diff --git a/flist.c b/flist.c
        enum fnc_state state1, state2;
        enum fnc_type type1, type2;
        enum fnc_type t_path = protocol_version >= 29 ? t_PATH : t_ITEM;
-@@ -3133,7 +3135,15 @@ int f_name_cmp(const struct file_struct *f1, const struct file_struct *f2)
+@@ -3140,7 +3142,15 @@ int f_name_cmp(const struct file_struct *f1, const struct file_struct *f2)
                        if (type1 != type2)
                                return type1 == t_PATH ? 1 : -1;
                }
@@ -237,7 +237,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},
-@@ -2658,6 +2662,9 @@ void server_options(char **args, int *argc_p)
+@@ -2659,6 +2663,9 @@ void server_options(char **args, int *argc_p)
                args[ac++] = arg;
        }
  
@@ -250,7 +250,7 @@ diff --git a/options.c b/options.c
 diff --git a/rsync.yo b/rsync.yo
 --- a/rsync.yo
 +++ b/rsync.yo
-@@ -430,6 +430,7 @@ to the detailed description below for a complete description.  verb(
+@@ -433,6 +433,7 @@ to the detailed description below for a complete description.  verb(
       --files-from=FILE       read list of source-file names from FILE
   -0, --from0                 all *from/filter files are delimited by 0s
   -s, --protect-args          no space-splitting; wildcard chars only
@@ -258,7 +258,7 @@ diff --git a/rsync.yo b/rsync.yo
       --address=ADDRESS       bind address for outgoing socket to daemon
       --port=PORT             specify double-colon alternate port number
       --sockopts=OPTIONS      specify custom TCP options
-@@ -1741,6 +1742,10 @@ default (with is overridden by both the environment and the command-line).
+@@ -1744,6 +1745,10 @@ default (with is overridden by both the environment and the command-line).
  This option will eventually become a new default setting at some
  as-yet-undetermined point in the future.
  
index 2389a6a76a732148b84ef2e70f14b5f9a72e585d..caff5f50678f507a4bf8dd241a5881fd46e86ba0 100644 (file)
@@ -12,7 +12,7 @@ To use this patch, run these commands for a successful build:
     ./configure
     make
 
-based-on: 4c8eb5f9511dd1393b147c4e993ee15448faedf5
+based-on: 7cb0de6326c915a72253fd103dae93308031ec3f
 diff --git a/Makefile.in b/Makefile.in
 --- a/Makefile.in
 +++ b/Makefile.in
@@ -102,7 +102,7 @@ diff --git a/clientserver.c b/clientserver.c
 diff --git a/compat.c b/compat.c
 --- a/compat.c
 +++ b/compat.c
-@@ -55,6 +55,7 @@ extern char *partial_dir;
+@@ -56,6 +56,7 @@ extern char *partial_dir;
  extern char *dest_option;
  extern char *files_from;
  extern char *filesfrom_host;
@@ -336,7 +336,7 @@ diff --git a/options.c b/options.c
        }
        if (daemon_filter_list.head && !am_sender) {
                filter_rule_list *elp = &daemon_filter_list;
-@@ -2737,6 +2761,12 @@ void server_options(char **args, int *argc_p)
+@@ -2738,6 +2762,12 @@ void server_options(char **args, int *argc_p)
        } else if (inplace)
                args[ac++] = "--inplace";
  
@@ -387,7 +387,7 @@ diff --git a/rsync.h b/rsync.h
 diff --git a/rsync.yo b/rsync.yo
 --- a/rsync.yo
 +++ b/rsync.yo
-@@ -416,6 +416,7 @@ to the detailed description below for a complete description.  verb(
+@@ -419,6 +419,7 @@ to the detailed description below for a complete description.  verb(
       --compare-dest=DIR      also compare received files relative to DIR
       --copy-dest=DIR         ... and include copies of unchanged files
       --link-dest=DIR         hardlink to files in DIR when unchanged
@@ -395,7 +395,7 @@ diff --git a/rsync.yo b/rsync.yo
   -z, --compress              compress file data during the transfer
       --compress-level=NUM    explicitly set compression level
       --skip-compress=LIST    skip compressing files with suffix in LIST
-@@ -1871,6 +1872,48 @@ bf(--link-dest) from working properly for a non-super-user when bf(-o) was
+@@ -1874,6 +1875,48 @@ bf(--link-dest) from working properly for a non-super-user when bf(-o) was
  specified (or implied by bf(-a)).  You can work-around this bug by avoiding
  the bf(-o) option when sending to an old rsync.
  
index c41f07d1d7a1a6abbc2c1d390366944029e128be..f808dd8aeeefbb83ebf65825729e78c8b6bc7698 100644 (file)
@@ -20,7 +20,7 @@ To use this patch, run these commands for a successful build:
     ./configure                         (optional if already run)
     make
 
-based-on: 4c8eb5f9511dd1393b147c4e993ee15448faedf5
+based-on: 7cb0de6326c915a72253fd103dae93308031ec3f
 diff --git a/authenticate.c b/authenticate.c
 --- a/authenticate.c
 +++ b/authenticate.c
index 6f7bedd701e4f000ae02693eb7bf40783755cf63..63b0fab3f6b4179217e08f15d6d0b44f20678c39 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: 4c8eb5f9511dd1393b147c4e993ee15448faedf5
+based-on: 7cb0de6326c915a72253fd103dae93308031ec3f
 diff --git a/access.c b/access.c
 --- a/access.c
 +++ b/access.c
index b47a2c0bed8ef1a55e0c38de45de9ae65886cfd8..445c1fed1528c57b5d0a6ff4438ae31854751d0b 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: 4c8eb5f9511dd1393b147c4e993ee15448faedf5
+based-on: 7cb0de6326c915a72253fd103dae93308031ec3f
 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;
-@@ -484,6 +485,7 @@ void itemize(const char *fnamecmp, struct file_struct *file, int ndx, int statre
+@@ -485,6 +486,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
-@@ -510,10 +512,11 @@ void itemize(const char *fnamecmp, struct file_struct *file, int ndx, int statre
+@@ -511,10 +513,11 @@ 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;
@@ -42,7 +42,7 @@ diff --git a/generator.c b/generator.c
                        iflags |= ITEM_REPORT_GROUP;
  #ifdef SUPPORT_ACLS
                if (preserve_acls && !S_ISLNK(file->mode)) {
-@@ -1388,7 +1391,7 @@ static void recv_generator(char *fname, struct file_struct *file, int ndx,
+@@ -1391,7 +1394,7 @@ static void recv_generator(char *fname, struct file_struct *file, int ndx,
                real_ret = statret;
                if (file->flags & FLAG_DIR_CREATED)
                        statret = -1;
@@ -125,7 +125,7 @@ diff --git a/rsync.c b/rsync.c
 diff --git a/rsync.yo b/rsync.yo
 --- a/rsync.yo
 +++ b/rsync.yo
-@@ -371,6 +371,7 @@ to the detailed description below for a complete description.  verb(
+@@ -374,6 +374,7 @@ to the detailed description below for a complete description.  verb(
   -t, --times                 preserve modification times
   -O, --omit-dir-times        omit directories from --times
   -J, --omit-link-times       omit symlinks from --times
@@ -133,7 +133,7 @@ diff --git a/rsync.yo b/rsync.yo
       --super                 receiver attempts super-user activities
       --fake-super            store/recover privileged attrs using xattrs
   -S, --sparse                handle sparse files efficiently
-@@ -1189,6 +1190,10 @@ directories.
+@@ -1192,6 +1193,10 @@ directories.
  dit(bf(-J, --omit-link-times)) This tells rsync to omit symlinks when
  it is preserving modification times (see bf(--times)).
  
index 33b9c32aaf11bb0619933bd8283f4df3bd556d8d..ec16a4f864646dd500b96382c1c078ab01f5e333 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: 4c8eb5f9511dd1393b147c4e993ee15448faedf5
+based-on: 7cb0de6326c915a72253fd103dae93308031ec3f
 diff --git a/flist.c b/flist.c
 --- a/flist.c
 +++ b/flist.c
@@ -26,7 +26,7 @@ diff --git a/flist.c b/flist.c
  extern uid_t our_uid;
  extern struct stats stats;
  extern char *filesfrom_host;
-@@ -1755,6 +1756,9 @@ static void send_directory(int f, struct file_list *flist, char *fbuf, int len,
+@@ -1762,6 +1763,9 @@ static void send_directory(int f, struct file_list *flist, char *fbuf, int len,
                }
  
                send_file_name(f, flist, fbuf, NULL, flags, filter_level);
index 2de74b8047b286da9a90e7685dd80f6f1a83afd4..97d977cea9097b0a83076fe6b88ae89c6ece4032 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: 4c8eb5f9511dd1393b147c4e993ee15448faedf5
+based-on: 7cb0de6326c915a72253fd103dae93308031ec3f
 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
-@@ -732,6 +732,29 @@ if test $rsync_cv_can_hardlink_special = yes; then
+@@ -734,6 +734,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
  
@@ -195,7 +195,7 @@ diff --git a/rsync.h b/rsync.h
 diff --git a/rsync.yo b/rsync.yo
 --- a/rsync.yo
 +++ b/rsync.yo
-@@ -148,7 +148,12 @@ particular rsync daemon by leaving off the module name:
+@@ -151,7 +151,12 @@ particular rsync daemon by leaving off the module name:
  
  quote(tt(rsync somehost.mydomain.com::))
  
index 94088c8fe47b5f19ef407b70fecaa9f87bb158c1..91268fc8fd5c65a24c6ab71cf9510c6b2a1b5141 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: 4c8eb5f9511dd1393b147c4e993ee15448faedf5
+based-on: 7cb0de6326c915a72253fd103dae93308031ec3f
 diff --git a/syscall.c b/syscall.c
 --- a/syscall.c
 +++ b/syscall.c
index 3a5e70bdee942a4542f4e74c0b2eb2038d21e405..f2b6dfa3097500ee9082f1108f09a37d28203fd6 100644 (file)
@@ -9,7 +9,7 @@ To use this patch, run these commands for a successful build:
 
 -- Matt McCutchen <hashproduct@gmail.com>
 
-based-on: 4c8eb5f9511dd1393b147c4e993ee15448faedf5
+based-on: 7cb0de6326c915a72253fd103dae93308031ec3f
 diff --git a/options.c b/options.c
 --- a/options.c
 +++ b/options.c
@@ -37,7 +37,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 },
-@@ -2637,6 +2640,8 @@ void server_options(char **args, int *argc_p)
+@@ -2638,6 +2641,8 @@ void server_options(char **args, int *argc_p)
                                goto oom;
                        args[ac++] = arg;
                }
@@ -49,7 +49,7 @@ diff --git a/options.c b/options.c
 diff --git a/rsync.yo b/rsync.yo
 --- a/rsync.yo
 +++ b/rsync.yo
-@@ -384,6 +384,7 @@ to the detailed description below for a complete description.  verb(
+@@ -387,6 +387,7 @@ to the detailed description below for a complete description.  verb(
       --existing              skip creating new files on receiver
       --ignore-existing       skip updating files that exist on receiver
       --remove-source-files   sender removes synchronized files (non-dir)
@@ -57,7 +57,7 @@ diff --git a/rsync.yo b/rsync.yo
       --del                   an alias for --delete-during
       --delete                delete extraneous files from dest dirs
       --delete-before         receiver deletes before xfer, not during
-@@ -1329,6 +1330,14 @@ bf(--exclude='*.new') for the rsync transfer).
+@@ -1332,6 +1333,14 @@ bf(--exclude='*.new') for the rsync transfer).
  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.
  
@@ -75,7 +75,7 @@ diff --git a/rsync.yo b/rsync.yo
 diff --git a/sender.c b/sender.c
 --- a/sender.c
 +++ b/sender.c
-@@ -39,6 +39,7 @@ extern int protocol_version;
+@@ -40,6 +40,7 @@ extern int protocol_version;
  extern int remove_source_files;
  extern int updating_basis_file;
  extern int make_backups;
@@ -83,7 +83,7 @@ diff --git a/sender.c b/sender.c
  extern int inplace;
  extern int batch_fd;
  extern int write_batch;
-@@ -127,6 +128,7 @@ void successful_send(int ndx)
+@@ -128,6 +129,7 @@ void successful_send(int ndx)
        struct file_struct *file;
        struct file_list *flist;
        STRUCT_STAT st;
@@ -91,7 +91,7 @@ diff --git a/sender.c b/sender.c
  
        if (!remove_source_files)
                return;
-@@ -151,7 +153,11 @@ void successful_send(int ndx)
+@@ -152,7 +154,11 @@ void successful_send(int ndx)
                return;
        }
  
index b9288d65ac0d85e72c30125739f17cb3153779e4..c750d2da1554dc8299c2786669dd1be14281dc05 100644 (file)
@@ -30,11 +30,11 @@ To use this patch, run these commands for a successful build:
     ./configure                                (optional if already run)
     make
 
-based-on: 4c8eb5f9511dd1393b147c4e993ee15448faedf5
+based-on: 7cb0de6326c915a72253fd103dae93308031ec3f
 diff --git a/generator.c b/generator.c
 --- a/generator.c
 +++ b/generator.c
-@@ -62,6 +62,7 @@ extern int append_mode;
+@@ -63,6 +63,7 @@ extern int append_mode;
  extern int make_backups;
  extern int csum_length;
  extern int ignore_times;
@@ -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;
-@@ -568,7 +569,7 @@ void itemize(const char *fnamecmp, struct file_struct *file, int ndx, int statre
+@@ -571,7 +572,7 @@ void itemize(const char *fnamecmp, struct file_struct *file, int ndx, int statre
  /* Perform our quick-check heuristic for determining if a file is unchanged. */
  int unchanged_file(char *fn, struct file_struct *file, STRUCT_STAT *st)
  {
@@ -134,7 +134,7 @@ diff --git a/options.c b/options.c
        if (files_from) {
                char *h, *p;
                int q;
-@@ -2646,6 +2665,25 @@ void server_options(char **args, int *argc_p)
+@@ -2647,6 +2666,25 @@ void server_options(char **args, int *argc_p)
        else if (missing_args == 1 && !am_sender)
                args[ac++] = "--ignore-missing-args";
  
@@ -252,7 +252,7 @@ diff --git a/pipe.c b/pipe.c
 diff --git a/receiver.c b/receiver.c
 --- a/receiver.c
 +++ b/receiver.c
-@@ -55,6 +55,7 @@ extern int delay_updates;
+@@ -56,6 +56,7 @@ extern int delay_updates;
  extern mode_t orig_umask;
  extern struct stats stats;
  extern char *tmpdir;
@@ -260,7 +260,7 @@ diff --git a/receiver.c b/receiver.c
  extern char *partial_dir;
  extern char *basis_dir[MAX_BASIS_DIRS+1];
  extern char sender_file_sum[MAX_DIGEST_LEN];
-@@ -533,6 +534,8 @@ int recv_files(int f_in, int f_out, char *local_name)
+@@ -534,6 +535,8 @@ int recv_files(int f_in, int f_out, char *local_name)
        const char *parent_dirname = "";
  #endif
        int ndx, recv_ok;
@@ -269,7 +269,7 @@ diff --git a/receiver.c b/receiver.c
  
        if (DEBUG_GTE(RECV, 1))
                rprintf(FINFO, "recv_files(%d) starting\n", cur_flist->used);
-@@ -540,6 +543,23 @@ int recv_files(int f_in, int f_out, char *local_name)
+@@ -541,6 +544,23 @@ int recv_files(int f_in, int f_out, char *local_name)
        if (delay_updates)
                delayed_bits = bitbag_create(cur_flist->used + 1);
  
@@ -293,7 +293,7 @@ diff --git a/receiver.c b/receiver.c
        while (1) {
                cleanup_disable();
  
-@@ -843,6 +863,9 @@ int recv_files(int f_in, int f_out, char *local_name)
+@@ -846,6 +866,9 @@ int recv_files(int f_in, int f_out, char *local_name)
                else if (!am_server && INFO_GTE(NAME, 1) && INFO_EQ(PROGRESS, 1))
                        rprintf(FINFO, "%s\n", fname);
  
@@ -303,7 +303,7 @@ diff --git a/receiver.c b/receiver.c
                /* recv file data */
                recv_ok = receive_data(f_in, fnamecmp, fd1, st.st_size,
                                       fname, fd2, F_LENGTH(file));
-@@ -857,6 +880,16 @@ int recv_files(int f_in, int f_out, char *local_name)
+@@ -860,6 +883,16 @@ int recv_files(int f_in, int f_out, char *local_name)
                        exit_cleanup(RERR_FILEIO);
                }
  
@@ -334,7 +334,7 @@ diff --git a/rsync.h b/rsync.h
 diff --git a/rsync.yo b/rsync.yo
 --- a/rsync.yo
 +++ b/rsync.yo
-@@ -410,6 +410,7 @@ to the detailed description below for a complete description.  verb(
+@@ -413,6 +413,7 @@ to the detailed description below for a complete description.  verb(
       --contimeout=SECONDS    set daemon connection timeout in seconds
   -I, --ignore-times          don't skip files that match size and time
       --size-only             skip files that match in size
@@ -342,7 +342,7 @@ diff --git a/rsync.yo b/rsync.yo
       --modify-window=NUM     compare mod-times with reduced accuracy
   -T, --temp-dir=DIR          create temporary files in directory DIR
   -y, --fuzzy                 find similar file for basis if no dest file
-@@ -451,6 +452,8 @@ to the detailed description below for a complete description.  verb(
+@@ -454,6 +455,8 @@ to the detailed description below for a complete description.  verb(
       --write-batch=FILE      write a batched update to FILE
       --only-write-batch=FILE like --write-batch but w/o updating dest
       --read-batch=FILE       read a batched update from FILE
@@ -351,7 +351,7 @@ diff --git a/rsync.yo b/rsync.yo
       --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)
-@@ -2540,6 +2543,33 @@ file previously generated by bf(--write-batch).
+@@ -2543,6 +2546,33 @@ file previously generated by bf(--write-batch).
  If em(FILE) is bf(-), the batch data will be read from standard input.
  See the "BATCH MODE" section for details.
  
@@ -388,7 +388,7 @@ diff --git a/rsync.yo b/rsync.yo
 diff --git a/sender.c b/sender.c
 --- a/sender.c
 +++ b/sender.c
-@@ -43,6 +43,7 @@ extern int inplace;
+@@ -44,6 +44,7 @@ extern int inplace;
  extern int batch_fd;
  extern int write_batch;
  extern int file_old_total;
@@ -396,7 +396,7 @@ diff --git a/sender.c b/sender.c
  extern struct stats stats;
  extern struct file_list *cur_flist, *first_flist, *dir_flist;
  
-@@ -199,6 +200,26 @@ void send_files(int f_in, int f_out)
+@@ -201,6 +202,26 @@ void send_files(int f_in, int f_out)
        int f_xfer = write_batch < 0 ? batch_fd : f_out;
        int save_io_error = io_error;
        int ndx, j;
@@ -423,7 +423,7 @@ diff --git a/sender.c b/sender.c
  
        if (DEBUG_GTE(SEND, 1))
                rprintf(FINFO, "send_files starting\n");
-@@ -333,6 +354,7 @@ void send_files(int f_in, int f_out)
+@@ -335,6 +356,7 @@ void send_files(int f_in, int f_out)
                        exit_cleanup(RERR_PROTOCOL);
                }
  
@@ -431,7 +431,7 @@ diff --git a/sender.c b/sender.c
                fd = do_open(fname, O_RDONLY, 0);
                if (fd == -1) {
                        if (errno == ENOENT) {
-@@ -354,6 +376,33 @@ void send_files(int f_in, int f_out)
+@@ -356,6 +378,33 @@ void send_files(int f_in, int f_out)
                        continue;
                }
  
@@ -465,7 +465,7 @@ diff --git a/sender.c b/sender.c
                /* map the local file */
                if (do_fstat(fd, &st) != 0) {
                        io_error |= IOERR_GENERAL;
-@@ -404,6 +453,8 @@ void send_files(int f_in, int f_out)
+@@ -406,6 +455,8 @@ void send_files(int f_in, int f_out)
                        }
                }
                close(fd);
index d3b4e407a4a549df2c628332a792e3eb8c7e4e8c..4c6b75c4b6e7b792268ecd9c8feab0273cba2417 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: 4c8eb5f9511dd1393b147c4e993ee15448faedf5
+based-on: 7cb0de6326c915a72253fd103dae93308031ec3f
 diff --git a/fileio.c b/fileio.c
 --- a/fileio.c
 +++ b/fileio.c
@@ -66,7 +66,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 },
-@@ -2569,6 +2572,12 @@ void server_options(char **args, int *argc_p)
+@@ -2570,6 +2573,12 @@ void server_options(char **args, int *argc_p)
                args[ac++] = arg;
        }
  
@@ -82,7 +82,7 @@ diff --git a/options.c b/options.c
 diff --git a/rsync.yo b/rsync.yo
 --- a/rsync.yo
 +++ b/rsync.yo
-@@ -374,6 +374,7 @@ to the detailed description below for a complete description.  verb(
+@@ -377,6 +377,7 @@ to the detailed description below for a complete description.  verb(
       --super                 receiver attempts super-user activities
       --fake-super            store/recover privileged attrs using xattrs
   -S, --sparse                handle sparse files efficiently
@@ -90,7 +90,7 @@ diff --git a/rsync.yo b/rsync.yo
       --preallocate           allocate dest files before writing
   -n, --dry-run               perform a trial run with no changes made
   -W, --whole-file            copy files whole (w/o delta-xfer algorithm)
-@@ -1245,6 +1246,15 @@ filesystem, but with this option rsync will probably copy more slowly.  If the
+@@ -1248,6 +1249,15 @@ filesystem, but with this option rsync will probably copy more slowly.  If the
  destination is not an extent-supporting filesystem (such as ext4, xfs, NTFS,
  etc.), this option may have no positive effect at all.
  
index 5d5077cda3d14c7a7d4082692105a63d781ac816..15c28dd7f0e73429fa72730c939587cb2baaeeb1 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: 4c8eb5f9511dd1393b147c4e993ee15448faedf5
+based-on: 7cb0de6326c915a72253fd103dae93308031ec3f
 diff --git a/io.c b/io.c
 --- a/io.c
 +++ b/io.c
@@ -116,7 +116,7 @@ diff --git a/options.c b/options.c
                default:
                        /* A large opt value means that set_refuse_options()
                         * turned this option off. */
-@@ -2581,6 +2617,15 @@ void server_options(char **args, int *argc_p)
+@@ -2582,6 +2618,15 @@ void server_options(char **args, int *argc_p)
                args[ac++] = arg;
        }
  
@@ -135,7 +135,7 @@ diff --git a/options.c b/options.c
 diff --git a/rsync.yo b/rsync.yo
 --- a/rsync.yo
 +++ b/rsync.yo
-@@ -448,6 +448,8 @@ to the detailed description below for a complete description.  verb(
+@@ -451,6 +451,8 @@ to the detailed description below for a complete description.  verb(
       --password-file=FILE    read daemon-access password from FILE
       --list-only             list the files instead of copying them
       --bwlimit=RATE          limit socket I/O bandwidth
@@ -144,7 +144,7 @@ diff --git a/rsync.yo b/rsync.yo
       --write-batch=FILE      write a batched update to FILE
       --only-write-batch=FILE like --write-batch but w/o updating dest
       --read-batch=FILE       read a batched update from FILE
-@@ -2514,6 +2516,19 @@ files can show up as being rapidly sent when the data is quickly buffered,
+@@ -2517,6 +2519,19 @@ files can show up as being rapidly sent when the data is quickly buffered,
  while other can show up as very slow when the flushing of the output buffer
  occurs.  This may be fixed in a future version.
  
index d5c2d841f2165ffa27997e257379e60f3eedd1ad..19d6393537903a1fb7d5581b8216b999fa82a450 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: 4c8eb5f9511dd1393b147c4e993ee15448faedf5
+based-on: 7cb0de6326c915a72253fd103dae93308031ec3f
 diff --git a/flist.c b/flist.c
 --- a/flist.c
 +++ b/flist.c
@@ -69,7 +69,7 @@ diff --git a/flist.c b/flist.c
        if (*thisname
         && (clean_fname(thisname, CFN_REFUSE_DOT_DOT_DIRS) < 0 || (!relative_paths && *thisname == '/'))) {
                rprintf(FERROR, "ABORTING due to unsafe pathname from sender: %s\n", thisname);
-@@ -2444,6 +2468,15 @@ struct file_list *recv_file_list(int f)
+@@ -2451,6 +2475,15 @@ struct file_list *recv_file_list(int f)
                        parse_name_map(usermap, True);
                if (groupmap)
                        parse_name_map(groupmap, False);
@@ -137,7 +137,7 @@ diff --git a/options.c b/options.c
        am_starting_up = 0;
  
        return 1;
-@@ -2754,6 +2775,12 @@ void server_options(char **args, int *argc_p)
+@@ -2755,6 +2776,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/options.c b/options.c
 diff --git a/rsync.yo b/rsync.yo
 --- a/rsync.yo
 +++ b/rsync.yo
-@@ -453,6 +453,7 @@ to the detailed description below for a complete description.  verb(
+@@ -456,6 +456,7 @@ to the detailed description below for a complete description.  verb(
       --read-batch=FILE       read a batched update from FILE
       --protocol=NUM          force an older protocol version to be used
       --iconv=CONVERT_SPEC    request charset conversion of filenames
@@ -161,7 +161,7 @@ diff --git a/rsync.yo b/rsync.yo
       --checksum-seed=NUM     set block/file checksum seed (advanced)
   -4, --ipv4                  prefer IPv4
   -6, --ipv6                  prefer IPv6
-@@ -2578,6 +2579,22 @@ daemon uses the charset specified in its "charset" configuration parameter
+@@ -2581,6 +2582,22 @@ daemon uses the charset specified in its "charset" configuration parameter
  regardless of the remote charset you actually pass.  Thus, you may feel free to
  specify just the local charset for a daemon transfer (e.g. bf(--iconv=utf8)).
  
index 496cd9bf5b81e69e56236e9a969b0c09de685f05..410432f27204715f62a68d2ae2c9386aeee1b532 100644 (file)
@@ -6,7 +6,7 @@ To use this patch, run these commands for a successful build:
     ./configure                          (optional if already run)
     make
 
-based-on: 4c8eb5f9511dd1393b147c4e993ee15448faedf5
+based-on: 7cb0de6326c915a72253fd103dae93308031ec3f
 diff --git a/syscall.c b/syscall.c
 --- a/syscall.c
 +++ b/syscall.c
index 7a6e9c1bb7d16fa892bb84fb8bd40224cda0282f..aff513af790c348f14828c9fbe842ddb2ca90851 100644 (file)
@@ -10,7 +10,7 @@ To use this patch, run these commands for a successful build:
 This patch has not yet been tested by me (Wayne), but was provided
 Darryl Dixon.  Thanks!
 
-based-on: 4c8eb5f9511dd1393b147c4e993ee15448faedf5
+based-on: 7cb0de6326c915a72253fd103dae93308031ec3f
 diff --git a/generator.c b/generator.c
 --- a/generator.c
 +++ b/generator.c
@@ -22,7 +22,7 @@ diff --git a/generator.c b/generator.c
  extern int preserve_specials;
  extern int preserve_hard_links;
  extern int preserve_executability;
-@@ -1670,7 +1671,7 @@ static void recv_generator(char *fname, struct file_struct *file, int ndx,
+@@ -1673,7 +1674,7 @@ static void recv_generator(char *fname, struct file_struct *file, int ndx,
  
        fnamecmp_type = FNAMECMP_FNAME;
  
@@ -70,7 +70,7 @@ diff --git a/options.c b/options.c
                default:
                        /* A large opt value means that set_refuse_options()
                         * turned this option off. */
-@@ -2754,6 +2762,9 @@ void server_options(char **args, int *argc_p)
+@@ -2755,6 +2763,9 @@ void server_options(char **args, int *argc_p)
        if (relative_paths && !implied_dirs && (!am_sender || protocol_version >= 30))
                args[ac++] = "--no-implied-dirs";
  
@@ -83,7 +83,7 @@ diff --git a/options.c b/options.c
 diff --git a/receiver.c b/receiver.c
 --- a/receiver.c
 +++ b/receiver.c
-@@ -38,6 +38,7 @@ extern int protocol_version;
+@@ -39,6 +39,7 @@ extern int protocol_version;
  extern int relative_paths;
  extern int preserve_hard_links;
  extern int preserve_perms;
@@ -91,7 +91,7 @@ diff --git a/receiver.c b/receiver.c
  extern int preserve_xattrs;
  extern int basis_dir_cnt;
  extern int make_backups;
-@@ -228,7 +229,7 @@ int open_tmpfile(char *fnametmp, const char *fname, struct file_struct *file)
+@@ -229,7 +230,7 @@ int open_tmpfile(char *fnametmp, const char *fname, struct file_struct *file)
  }
  
  static int receive_data(int f_in, char *fname_r, int fd_r, OFF_T size_r,
@@ -100,7 +100,7 @@ diff --git a/receiver.c b/receiver.c
  {
        static char file_sum1[MAX_DIGEST_LEN];
        struct map_struct *mapbuf;
-@@ -244,12 +245,12 @@ static int receive_data(int f_in, char *fname_r, int fd_r, OFF_T size_r,
+@@ -245,12 +246,12 @@ static int receive_data(int f_in, char *fname_r, int fd_r, OFF_T size_r,
        OFF_T preallocated_len = 0;
  #endif
  
@@ -116,7 +116,7 @@ diff --git a/receiver.c b/receiver.c
  #endif
                } else
                        rsyserr(FWARNING, errno, "do_fallocate %s", full_fname(fname));
-@@ -278,7 +279,7 @@ static int receive_data(int f_in, char *fname_r, int fd_r, OFF_T size_r,
+@@ -279,7 +280,7 @@ static int receive_data(int f_in, char *fname_r, int fd_r, OFF_T size_r,
                if (append_mode == 2 && mapbuf) {
                        for (j = CHUNK_SIZE; j < sum.flength; j += CHUNK_SIZE) {
                                if (INFO_GTE(PROGRESS, 1))
@@ -125,7 +125,7 @@ diff --git a/receiver.c b/receiver.c
                                sum_update(map_ptr(mapbuf, offset, CHUNK_SIZE),
                                           CHUNK_SIZE);
                                offset = j;
-@@ -286,7 +287,7 @@ static int receive_data(int f_in, char *fname_r, int fd_r, OFF_T size_r,
+@@ -287,7 +288,7 @@ static int receive_data(int f_in, char *fname_r, int fd_r, OFF_T size_r,
                        if (offset < sum.flength) {
                                int32 len = (int32)(sum.flength - offset);
                                if (INFO_GTE(PROGRESS, 1))
@@ -134,7 +134,7 @@ diff --git a/receiver.c b/receiver.c
                                sum_update(map_ptr(mapbuf, offset, len), len);
                        }
                }
-@@ -300,7 +301,7 @@ static int receive_data(int f_in, char *fname_r, int fd_r, OFF_T size_r,
+@@ -301,7 +302,7 @@ static int receive_data(int f_in, char *fname_r, int fd_r, OFF_T size_r,
  
        while ((i = recv_token(f_in, &data)) != 0) {
                if (INFO_GTE(PROGRESS, 1))
@@ -143,7 +143,7 @@ diff --git a/receiver.c b/receiver.c
  
                if (allowed_lull)
                        maybe_send_keepalive(time(NULL), MSK_ALLOW_FLUSH | MSK_ACTIVE_RECEIVER);
-@@ -370,20 +371,20 @@ static int receive_data(int f_in, char *fname_r, int fd_r, OFF_T size_r,
+@@ -371,20 +372,20 @@ static int receive_data(int f_in, char *fname_r, int fd_r, OFF_T size_r,
  
  #ifdef HAVE_FTRUNCATE
        /* inplace: New data could be shorter than old data.
@@ -167,7 +167,7 @@ diff --git a/receiver.c b/receiver.c
  
        if (fd != -1 && offset > 0 && sparse_end(fd, offset) != 0) {
            report_write_error:
-@@ -407,9 +408,9 @@ static int receive_data(int f_in, char *fname_r, int fd_r, OFF_T size_r,
+@@ -408,9 +409,9 @@ static int receive_data(int f_in, char *fname_r, int fd_r, OFF_T size_r,
  }
  
  
@@ -179,7 +179,7 @@ diff --git a/receiver.c b/receiver.c
  }
  
  static void handle_delayed_updates(char *local_name)
-@@ -663,7 +664,7 @@ int recv_files(int f_in, int f_out, char *local_name)
+@@ -666,7 +667,7 @@ int recv_files(int f_in, int f_out, char *local_name)
                                        "(Skipping batched update for%s \"%s\")\n",
                                        redoing ? " resend of" : "",
                                        fname);
@@ -188,7 +188,7 @@ diff --git a/receiver.c b/receiver.c
                                file->flags |= FLAG_FILE_SENT;
                                continue;
                        }
-@@ -675,13 +676,13 @@ int recv_files(int f_in, int f_out, char *local_name)
+@@ -678,13 +679,13 @@ int recv_files(int f_in, int f_out, char *local_name)
                if (!do_xfers) { /* log the transfer */
                        log_item(FCLIENT, file, iflags, NULL);
                        if (read_batch)
@@ -204,7 +204,7 @@ diff --git a/receiver.c b/receiver.c
                        if (inc_recurse)
                                send_msg_int(MSG_SUCCESS, ndx);
                        continue;
-@@ -771,7 +772,7 @@ int recv_files(int f_in, int f_out, char *local_name)
+@@ -774,7 +775,7 @@ int recv_files(int f_in, int f_out, char *local_name)
                } else if (do_fstat(fd1,&st) != 0) {
                        rsyserr(FERROR_XFER, errno, "fstat %s failed",
                                full_fname(fnamecmp));
@@ -213,7 +213,7 @@ diff --git a/receiver.c b/receiver.c
                        close(fd1);
                        if (inc_recurse)
                                send_msg_int(MSG_NO_SEND, ndx);
-@@ -786,18 +787,32 @@ int recv_files(int f_in, int f_out, char *local_name)
+@@ -789,18 +790,32 @@ int recv_files(int f_in, int f_out, char *local_name)
                         */
                        rprintf(FERROR_XFER, "recv_files: %s is a directory\n",
                                full_fname(fnamecmp));
@@ -248,7 +248,7 @@ diff --git a/receiver.c b/receiver.c
                /* If we're not preserving permissions, change the file-list's
                 * mode based on the local permissions and some heuristics. */
                if (!preserve_perms) {
-@@ -829,7 +844,7 @@ int recv_files(int f_in, int f_out, char *local_name)
+@@ -832,7 +847,7 @@ int recv_files(int f_in, int f_out, char *local_name)
                }
  
                if (fd2 == -1) {
@@ -257,7 +257,7 @@ diff --git a/receiver.c b/receiver.c
                        if (fd1 != -1)
                                close(fd1);
                        if (inc_recurse)
-@@ -844,8 +859,7 @@ int recv_files(int f_in, int f_out, char *local_name)
+@@ -847,8 +862,7 @@ int recv_files(int f_in, int f_out, char *local_name)
                        rprintf(FINFO, "%s\n", fname);
  
                /* recv file data */
index e6840e94e4bd4645999e54de93109988ae0b2dae..a8acba0fe7d877a9da239e721955daa1a809b20e 100644 (file)
@@ -14,7 +14,7 @@ based-on: patch/master/acls
 diff --git a/compat.c b/compat.c
 --- a/compat.c
 +++ b/compat.c
-@@ -201,13 +201,6 @@ void setup_protocol(int f_out,int f_in)
+@@ -203,13 +203,6 @@ void setup_protocol(int f_out,int f_in)
        if (protocol_version < 30) {
                if (append_mode == 1)
                        append_mode = 2;