Fixed failing hunks.
[rsync/rsync-patches.git] / flags.diff
index 9a8b155..80ac3d7 100644 (file)
@@ -12,24 +12,24 @@ TODO: fix --delete-delay to work with --flags option.
 
 --- old/compat.c
 +++ new/compat.c
 
 --- old/compat.c
 +++ new/compat.c
-@@ -44,6 +44,7 @@ extern int prune_empty_dirs;
- extern int protocol_version;
+@@ -44,6 +44,7 @@ extern int protocol_version;
+ extern int protect_args;
  extern int preserve_uid;
  extern int preserve_gid;
 +extern int preserve_fileflags;
  extern int preserve_acls;
  extern int preserve_xattrs;
  extern int preserve_uid;
  extern int preserve_gid;
 +extern int preserve_fileflags;
  extern int preserve_acls;
  extern int preserve_xattrs;
- extern int preserve_hard_links;
-@@ -58,7 +59,7 @@ extern char *dest_option;
- extern struct filter_list_struct filter_list;
+ extern int need_messages_from_generator;
+@@ -63,7 +64,7 @@ extern iconv_t ic_send, ic_recv;
+ #endif
  
  /* These index values are for the file-list's extra-attribute array. */
 -int uid_ndx, gid_ndx, acls_ndx, xattrs_ndx;
 +int uid_ndx, gid_ndx, fileflags_ndx, acls_ndx, xattrs_ndx;
  
  /* These index values are for the file-list's extra-attribute array. */
 -int uid_ndx, gid_ndx, acls_ndx, xattrs_ndx;
 +int uid_ndx, gid_ndx, fileflags_ndx, acls_ndx, xattrs_ndx;
+ #ifdef ICONV_OPTION
+ int ic_ndx;
  
  
- /* The server makes sure that if either side only supports a pre-release
-  * version of a protocol, that both sides must speak a compatible version
-@@ -99,6 +100,8 @@ void setup_protocol(int f_out,int f_in)
+@@ -115,6 +116,8 @@ void setup_protocol(int f_out,int f_in)
                uid_ndx = ++file_extra_cnt;
        if (preserve_gid)
                gid_ndx = ++file_extra_cnt;
                uid_ndx = ++file_extra_cnt;
        if (preserve_gid)
                gid_ndx = ++file_extra_cnt;
@@ -51,15 +51,15 @@ TODO: fix --delete-delay to work with --flags option.
  AC_CHECK_FUNCS(getpgrp tcgetpgrp)
 --- old/flist.c
 +++ new/flist.c
  AC_CHECK_FUNCS(getpgrp tcgetpgrp)
 --- old/flist.c
 +++ new/flist.c
-@@ -52,6 +52,7 @@ extern int preserve_devices;
+@@ -50,6 +50,7 @@ extern int preserve_links;
+ extern int preserve_hard_links;
+ extern int preserve_devices;
  extern int preserve_specials;
  extern int preserve_specials;
++extern int fileflags_ndx;
  extern int uid_ndx;
  extern int gid_ndx;
  extern int uid_ndx;
  extern int gid_ndx;
-+extern int fileflags_ndx;
- extern int relative_paths;
- extern int implied_dirs;
- extern int file_extra_cnt;
-@@ -348,6 +349,9 @@ static void send_file_entry(int f, struc
+ extern int eol_nulls;
+@@ -364,6 +365,9 @@ static void send_file_entry(int f, struc
  {
        static time_t modtime;
        static mode_t mode;
  {
        static time_t modtime;
        static mode_t mode;
@@ -69,7 +69,7 @@ TODO: fix --delete-delay to work with --flags option.
        static int64 dev;
        static dev_t rdev;
        static uint32 rdev_major;
        static int64 dev;
        static dev_t rdev;
        static uint32 rdev_major;
-@@ -396,6 +400,12 @@ static void send_file_entry(int f, struc
+@@ -411,6 +415,12 @@ static void send_file_entry(int f, struc
                xflags |= XMIT_SAME_MODE;
        else
                mode = file->mode;
                xflags |= XMIT_SAME_MODE;
        else
                mode = file->mode;
@@ -82,7 +82,7 @@ TODO: fix --delete-delay to work with --flags option.
  
        if (protocol_version >= 30 && S_ISDIR(mode) && !(file->flags & FLAG_XFER_DIR))
                xflags |= XMIT_NON_XFER_DIR;
  
        if (protocol_version >= 30 && S_ISDIR(mode) && !(file->flags & FLAG_XFER_DIR))
                xflags |= XMIT_NON_XFER_DIR;
-@@ -517,6 +527,10 @@ static void send_file_entry(int f, struc
+@@ -534,6 +544,10 @@ static void send_file_entry(int f, struc
        }
        if (!(xflags & XMIT_SAME_MODE))
                write_int(f, to_wire_mode(mode));
        }
        if (!(xflags & XMIT_SAME_MODE))
                write_int(f, to_wire_mode(mode));
@@ -93,7 +93,7 @@ TODO: fix --delete-delay to work with --flags option.
        if (uid_ndx && !(xflags & XMIT_SAME_UID)) {
                if (protocol_version < 30)
                        write_int(f, uid);
        if (uid_ndx && !(xflags & XMIT_SAME_UID)) {
                if (protocol_version < 30)
                        write_int(f, uid);
-@@ -605,6 +619,9 @@ static struct file_struct *recv_file_ent
+@@ -622,6 +636,9 @@ static struct file_struct *recv_file_ent
  {
        static int64 modtime;
        static mode_t mode;
  {
        static int64 modtime;
        static mode_t mode;
@@ -103,7 +103,7 @@ TODO: fix --delete-delay to work with --flags option.
        static int64 dev;
        static dev_t rdev;
        static uint32 rdev_major;
        static int64 dev;
        static dev_t rdev;
        static uint32 rdev_major;
-@@ -739,9 +756,12 @@ static struct file_struct *recv_file_ent
+@@ -751,9 +768,12 @@ static struct file_struct *recv_file_ent
        }
        if (!(xflags & XMIT_SAME_MODE))
                mode = from_wire_mode(read_int(f));
        }
        if (!(xflags & XMIT_SAME_MODE))
                mode = from_wire_mode(read_int(f));
@@ -117,7 +117,7 @@ TODO: fix --delete-delay to work with --flags option.
  
        if (uid_ndx && !(xflags & XMIT_SAME_UID)) {
                if (protocol_version < 30)
  
        if (uid_ndx && !(xflags & XMIT_SAME_UID)) {
                if (protocol_version < 30)
-@@ -861,6 +881,10 @@ static struct file_struct *recv_file_ent
+@@ -873,6 +893,10 @@ static struct file_struct *recv_file_ent
                OPT_EXTRA(file, 0)->unum = (uint32)(file_length >> 32);
        }
        file->mode = mode;
                OPT_EXTRA(file, 0)->unum = (uint32)(file_length >> 32);
        }
        file->mode = mode;
@@ -128,7 +128,7 @@ TODO: fix --delete-delay to work with --flags option.
        if (uid_ndx)
                F_OWNER(file) = uid;
        if (gid_ndx) {
        if (uid_ndx)
                F_OWNER(file) = uid;
        if (gid_ndx) {
-@@ -1187,6 +1211,10 @@ struct file_struct *make_file(const char
+@@ -1192,6 +1216,10 @@ struct file_struct *make_file(const char
                OPT_EXTRA(file, 0)->unum = (uint32)(st.st_size >> 32);
        }
        file->mode = st.st_mode;
                OPT_EXTRA(file, 0)->unum = (uint32)(st.st_size >> 32);
        }
        file->mode = st.st_mode;
@@ -141,7 +141,7 @@ TODO: fix --delete-delay to work with --flags option.
        if (gid_ndx)
 --- old/generator.c
 +++ new/generator.c
        if (gid_ndx)
 --- old/generator.c
 +++ new/generator.c
-@@ -116,6 +116,14 @@ static int need_retouch_dir_times;
+@@ -114,6 +114,14 @@ static int need_retouch_dir_times;
  static int need_retouch_dir_perms;
  static const char *solo_file = NULL;
  
  static int need_retouch_dir_perms;
  static const char *solo_file = NULL;
  
@@ -156,7 +156,7 @@ TODO: fix --delete-delay to work with --flags option.
  /* For calling delete_item() and delete_dir_contents(). */
  #define DEL_RECURSE           (1<<1) /* recurse */
  #define DEL_DIR_IS_EMPTY      (1<<2) /* internal delete_FUNCTIONS use only */
  /* For calling delete_item() and delete_dir_contents(). */
  #define DEL_RECURSE           (1<<1) /* recurse */
  #define DEL_DIR_IS_EMPTY      (1<<2) /* internal delete_FUNCTIONS use only */
-@@ -131,7 +139,6 @@ enum delret {
+@@ -129,7 +137,6 @@ enum delret {
  /* Forward declaration for delete_item(). */
  static enum delret delete_dir_contents(char *fname, int flags);
  
  /* Forward declaration for delete_item(). */
  static enum delret delete_dir_contents(char *fname, int flags);
  
@@ -164,7 +164,7 @@ TODO: fix --delete-delay to work with --flags option.
  static int is_backup_file(char *fn)
  {
        int k = strlen(fn) - backup_suffix_len;
  static int is_backup_file(char *fn)
  {
        int k = strlen(fn) - backup_suffix_len;
-@@ -144,17 +151,20 @@ static int is_backup_file(char *fn)
+@@ -142,17 +149,20 @@ static int is_backup_file(char *fn)
   * Note that fbuf must point to a MAXPATHLEN buffer if the mode indicates it's
   * a directory! (The buffer is used for recursion, but returned unchanged.)
   */
   * Note that fbuf must point to a MAXPATHLEN buffer if the mode indicates it's
   * a directory! (The buffer is used for recursion, but returned unchanged.)
   */
@@ -188,7 +188,7 @@ TODO: fix --delete-delay to work with --flags option.
        if (S_ISDIR(mode) && !(flags & DEL_DIR_IS_EMPTY)) {
                ignore_perishable = 1;
                /* If DEL_RECURSE is not set, this just reports emptiness. */
        if (S_ISDIR(mode) && !(flags & DEL_DIR_IS_EMPTY)) {
                ignore_perishable = 1;
                /* If DEL_RECURSE is not set, this just reports emptiness. */
-@@ -266,7 +276,7 @@ static enum delret delete_dir_contents(c
+@@ -264,7 +274,7 @@ static enum delret delete_dir_contents(c
                if (S_ISDIR(fp->mode)
                 && delete_dir_contents(fname, flags | DEL_RECURSE) != DR_SUCCESS)
                        ret = DR_NOT_EMPTY;
                if (S_ISDIR(fp->mode)
                 && delete_dir_contents(fname, flags | DEL_RECURSE) != DR_SUCCESS)
                        ret = DR_NOT_EMPTY;
@@ -197,7 +197,7 @@ TODO: fix --delete-delay to work with --flags option.
                        ret = DR_NOT_EMPTY;
        }
  
                        ret = DR_NOT_EMPTY;
        }
  
-@@ -322,8 +332,9 @@ static int remember_delete(struct file_s
+@@ -320,8 +330,9 @@ static int remember_delete(struct file_s
        
        while (1) {
                len = snprintf(deldelay_buf + deldelay_cnt,
        
        while (1) {
                len = snprintf(deldelay_buf + deldelay_cnt,
@@ -209,7 +209,7 @@ TODO: fix --delete-delay to work with --flags option.
                if ((deldelay_cnt += len) <= deldelay_size)
                        break;
                if (deldelay_fd < 0 && !start_delete_delay_temp())
                if ((deldelay_cnt += len) <= deldelay_size)
                        break;
                if (deldelay_fd < 0 && !start_delete_delay_temp())
-@@ -336,7 +347,7 @@ static int remember_delete(struct file_s
+@@ -334,7 +345,7 @@ static int remember_delete(struct file_s
        return 1;
  }
  
        return 1;
  }
  
@@ -218,7 +218,7 @@ TODO: fix --delete-delay to work with --flags option.
  {
        static int read_pos = 0;
        int j, len, mode;
  {
        static int read_pos = 0;
        int j, len, mode;
-@@ -378,7 +389,7 @@ static int read_delay_line(char *buf)
+@@ -376,7 +387,7 @@ static int read_delay_line(char *buf)
  
        bp = deldelay_buf + read_pos;
  
  
        bp = deldelay_buf + read_pos;
  
@@ -227,7 +227,7 @@ TODO: fix --delete-delay to work with --flags option.
          invalid_data:
                rprintf(FERROR, "ERROR: invalid data in delete-delay file.\n");
                return -1;
          invalid_data:
                rprintf(FERROR, "ERROR: invalid data in delete-delay file.\n");
                return -1;
-@@ -401,15 +412,15 @@ static int read_delay_line(char *buf)
+@@ -399,15 +410,15 @@ static int read_delay_line(char *buf)
  
  static void do_delayed_deletions(char *delbuf)
  {
  
  static void do_delayed_deletions(char *delbuf)
  {
@@ -246,7 +246,7 @@ TODO: fix --delete-delay to work with --flags option.
        if (deldelay_fd >= 0)
                close(deldelay_fd);
  }
        if (deldelay_fd >= 0)
                close(deldelay_fd);
  }
-@@ -476,7 +487,7 @@ static void delete_in_dir(char *fbuf, st
+@@ -474,7 +485,7 @@ static void delete_in_dir(char *fbuf, st
                                if (!remember_delete(fp, delbuf))
                                        break;
                        } else
                                if (!remember_delete(fp, delbuf))
                                        break;
                        } else
@@ -255,7 +255,7 @@ TODO: fix --delete-delay to work with --flags option.
                }
        }
  
                }
        }
  
-@@ -1220,7 +1231,7 @@ static void recv_generator(char *fname, 
+@@ -1233,7 +1244,7 @@ static void recv_generator(char *fname, 
                 * we need to delete it.  If it doesn't exist, then
                 * (perhaps recursively) create it. */
                if (statret == 0 && !S_ISDIR(sx.st.st_mode)) {
                 * we need to delete it.  If it doesn't exist, then
                 * (perhaps recursively) create it. */
                if (statret == 0 && !S_ISDIR(sx.st.st_mode)) {
@@ -264,7 +264,7 @@ TODO: fix --delete-delay to work with --flags option.
                                goto skipping_dir_contents;
                        statret = -1;
                }
                                goto skipping_dir_contents;
                        statret = -1;
                }
-@@ -1352,7 +1363,7 @@ static void recv_generator(char *fname, 
+@@ -1362,7 +1373,7 @@ static void recv_generator(char *fname, 
                        }
                        /* Not the right symlink (or not a symlink), so
                         * delete it. */
                        }
                        /* Not the right symlink (or not a symlink), so
                         * delete it. */
@@ -273,7 +273,7 @@ TODO: fix --delete-delay to work with --flags option.
                                goto cleanup;
                } else if (basis_dir[0] != NULL) {
                        int j = try_dests_non(file, fname, ndx, fnamecmpbuf, &sx,
                                goto cleanup;
                } else if (basis_dir[0] != NULL) {
                        int j = try_dests_non(file, fname, ndx, fnamecmpbuf, &sx,
-@@ -1429,7 +1440,7 @@ static void recv_generator(char *fname, 
+@@ -1441,7 +1452,7 @@ static void recv_generator(char *fname, 
                                        goto return_with_success;
                                goto cleanup;
                        }
                                        goto return_with_success;
                                goto cleanup;
                        }
@@ -282,7 +282,7 @@ TODO: fix --delete-delay to work with --flags option.
                                goto cleanup;
                } else if (basis_dir[0] != NULL) {
                        int j = try_dests_non(file, fname, ndx, fnamecmpbuf, &sx,
                                goto cleanup;
                } else if (basis_dir[0] != NULL) {
                        int j = try_dests_non(file, fname, ndx, fnamecmpbuf, &sx,
-@@ -1518,7 +1529,7 @@ static void recv_generator(char *fname, 
+@@ -1532,7 +1543,7 @@ static void recv_generator(char *fname, 
        fnamecmp_type = FNAMECMP_FNAME;
  
        if (statret == 0 && !S_ISREG(sx.st.st_mode)) {
        fnamecmp_type = FNAMECMP_FNAME;
  
        if (statret == 0 && !S_ISREG(sx.st.st_mode)) {
@@ -301,7 +301,7 @@ TODO: fix --delete-delay to work with --flags option.
  int preserve_executability = 0;
  int preserve_devices = 0;
  int preserve_specials = 0;
  int preserve_executability = 0;
  int preserve_devices = 0;
  int preserve_specials = 0;
-@@ -214,6 +215,7 @@ static void print_rsync_version(enum log
+@@ -220,6 +221,7 @@ static void print_rsync_version(enum log
        char const *links = "no ";
        char const *iconv = "no ";
        char const *ipv6 = "no ";
        char const *links = "no ";
        char const *iconv = "no ";
        char const *ipv6 = "no ";
@@ -309,7 +309,7 @@ TODO: fix --delete-delay to work with --flags option.
        STRUCT_STAT *dumstat;
  
  #if SUBPROTOCOL_VERSION != 0
        STRUCT_STAT *dumstat;
  
  #if SUBPROTOCOL_VERSION != 0
-@@ -243,6 +245,9 @@ static void print_rsync_version(enum log
+@@ -249,6 +251,9 @@ static void print_rsync_version(enum log
  #ifdef ICONV_OPTION
        iconv = "";
  #endif
  #ifdef ICONV_OPTION
        iconv = "";
  #endif
@@ -319,7 +319,7 @@ TODO: fix --delete-delay to work with --flags option.
  
        rprintf(f, "%s  version %s  protocol version %d%s\n",
                RSYNC_NAME, RSYNC_VERSION, PROTOCOL_VERSION, subprotocol);
  
        rprintf(f, "%s  version %s  protocol version %d%s\n",
                RSYNC_NAME, RSYNC_VERSION, PROTOCOL_VERSION, subprotocol);
-@@ -256,8 +261,8 @@ static void print_rsync_version(enum log
+@@ -262,8 +267,8 @@ static void print_rsync_version(enum log
                (int)(sizeof (int64) * 8));
        rprintf(f, "    %ssocketpairs, %shardlinks, %ssymlinks, %sIPv6, batchfiles, %sinplace,\n",
                got_socketpair, hardlinks, links, ipv6, have_inplace);
                (int)(sizeof (int64) * 8));
        rprintf(f, "    %ssocketpairs, %shardlinks, %ssymlinks, %sIPv6, batchfiles, %sinplace,\n",
                got_socketpair, hardlinks, links, ipv6, have_inplace);
@@ -330,7 +330,7 @@ TODO: fix --delete-delay to work with --flags option.
  
  #ifdef MAINTAINER_MODE
        rprintf(f, "Panic Action: \"%s\"\n", get_panic_action());
  
  #ifdef MAINTAINER_MODE
        rprintf(f, "Panic Action: \"%s\"\n", get_panic_action());
-@@ -323,6 +328,7 @@ void usage(enum logcode F)
+@@ -330,6 +335,7 @@ void usage(enum logcode F)
    rprintf(F," -K, --keep-dirlinks         treat symlinked dir on receiver as dir\n");
    rprintf(F," -H, --hard-links            preserve hard links\n");
    rprintf(F," -p, --perms                 preserve permissions\n");
    rprintf(F," -K, --keep-dirlinks         treat symlinked dir on receiver as dir\n");
    rprintf(F," -H, --hard-links            preserve hard links\n");
    rprintf(F," -p, --perms                 preserve permissions\n");
@@ -338,7 +338,7 @@ TODO: fix --delete-delay to work with --flags option.
    rprintf(F," -E, --executability         preserve the file's executability\n");
    rprintf(F,"     --chmod=CHMOD           affect file and/or directory permissions\n");
  #ifdef SUPPORT_ACLS
    rprintf(F," -E, --executability         preserve the file's executability\n");
    rprintf(F,"     --chmod=CHMOD           affect file and/or directory permissions\n");
  #ifdef SUPPORT_ACLS
-@@ -463,6 +469,8 @@ static struct poptOption long_options[] 
+@@ -470,6 +476,8 @@ static struct poptOption long_options[] 
    {"perms",           'p', POPT_ARG_VAL,    &preserve_perms, 1, 0, 0 },
    {"no-perms",         0,  POPT_ARG_VAL,    &preserve_perms, 0, 0, 0 },
    {"no-p",             0,  POPT_ARG_VAL,    &preserve_perms, 0, 0, 0 },
    {"perms",           'p', POPT_ARG_VAL,    &preserve_perms, 1, 0, 0 },
    {"no-perms",         0,  POPT_ARG_VAL,    &preserve_perms, 0, 0, 0 },
    {"no-p",             0,  POPT_ARG_VAL,    &preserve_perms, 0, 0, 0 },
@@ -347,7 +347,7 @@ TODO: fix --delete-delay to work with --flags option.
    {"executability",   'E', POPT_ARG_NONE,   &preserve_executability, 0, 0, 0 },
    {"acls",            'A', POPT_ARG_NONE,   0, 'A', 0, 0 },
    {"no-acls",          0,  POPT_ARG_VAL,    &preserve_acls, 0, 0, 0 },
    {"executability",   'E', POPT_ARG_NONE,   &preserve_executability, 0, 0, 0 },
    {"acls",            'A', POPT_ARG_NONE,   0, 'A', 0, 0 },
    {"no-acls",          0,  POPT_ARG_VAL,    &preserve_acls, 0, 0, 0 },
-@@ -1254,6 +1262,15 @@ int parse_arguments(int *argc, const cha
+@@ -1283,6 +1291,15 @@ int parse_arguments(int *argc_p, const c
        }
  #endif
  
        }
  #endif
  
@@ -363,7 +363,7 @@ TODO: fix --delete-delay to work with --flags option.
        if (write_batch && read_batch) {
                snprintf(err_buf, sizeof err_buf,
                        "--write-batch and --read-batch can not be used together\n");
        if (write_batch && read_batch) {
                snprintf(err_buf, sizeof err_buf,
                        "--write-batch and --read-batch can not be used together\n");
-@@ -1738,6 +1755,9 @@ void server_options(char **args,int *arg
+@@ -1794,6 +1811,9 @@ void server_options(char **args, int *ar
        if (xfer_dirs && !recurse && delete_mode && am_sender)
                args[ac++] = "--no-r";
  
        if (xfer_dirs && !recurse && delete_mode && am_sender)
                args[ac++] = "--no-r";
  
@@ -382,10 +382,10 @@ TODO: fix --delete-delay to work with --flags option.
 +extern int preserve_fileflags;
  extern int preserve_executability;
  extern int preserve_times;
 +extern int preserve_fileflags;
  extern int preserve_executability;
  extern int preserve_times;
- extern int omit_dir_times;
-@@ -61,6 +62,16 @@ iconv_t ic_send = (iconv_t)-1, ic_recv =
- int ic_ndx;
- #endif
+ extern int am_root;
+@@ -59,6 +60,16 @@ iconv_t ic_chck = (iconv_t)-1;
+ iconv_t ic_send = (iconv_t)-1, ic_recv = (iconv_t)-1;
+ # endif
  
 +#ifdef SUPPORT_FLAGS
 +#ifndef UF_NOUNLINK
  
 +#ifdef SUPPORT_FLAGS
 +#ifndef UF_NOUNLINK
@@ -399,8 +399,8 @@ TODO: fix --delete-delay to work with --flags option.
 +
  static const char *default_charset(void)
  {
 +
  static const char *default_charset(void)
  {
- #if defined HAVE_LIBCHARSET_H && defined HAVE_LOCALE_CHARSET
-@@ -268,6 +279,41 @@ mode_t dest_mode(mode_t flist_mode, mode
+ # if defined HAVE_LIBCHARSET_H && defined HAVE_LOCALE_CHARSET
+@@ -336,6 +347,41 @@ mode_t dest_mode(mode_t flist_mode, mode
        return new_mode;
  }
  
        return new_mode;
  }
  
@@ -442,7 +442,7 @@ TODO: fix --delete-delay to work with --flags option.
  int set_file_attrs(const char *fname, struct file_struct *file, statx *sxp,
                   const char *fnamecmp, int flags)
  {
  int set_file_attrs(const char *fname, struct file_struct *file, statx *sxp,
                   const char *fnamecmp, int flags)
  {
-@@ -396,6 +442,15 @@ int set_file_attrs(const char *fname, st
+@@ -467,6 +513,15 @@ int set_file_attrs(const char *fname, st
        }
  #endif
  
        }
  #endif
  
@@ -458,7 +458,7 @@ TODO: fix --delete-delay to work with --flags option.
        if (verbose > 1 && flags & ATTRS_REPORT) {
                if (updated)
                        rprintf(FCLIENT, "%s\n", fname);
        if (verbose > 1 && flags & ATTRS_REPORT) {
                if (updated)
                        rprintf(FCLIENT, "%s\n", fname);
-@@ -455,6 +510,9 @@ void finish_transfer(const char *fname, 
+@@ -526,6 +581,9 @@ void finish_transfer(const char *fname, 
        set_file_attrs(fnametmp, file, NULL, fnamecmp,
                       ok_to_set_time ? 0 : ATTRS_SKIP_MTIME);
  
        set_file_attrs(fnametmp, file, NULL, fnamecmp,
                       ok_to_set_time ? 0 : ATTRS_SKIP_MTIME);
  
@@ -468,7 +468,7 @@ TODO: fix --delete-delay to work with --flags option.
        /* move tmp file over real file */
        if (verbose > 2)
                rprintf(FINFO, "renaming %s to %s\n", fnametmp, fname);
        /* move tmp file over real file */
        if (verbose > 2)
                rprintf(FINFO, "renaming %s to %s\n", fnametmp, fname);
-@@ -469,6 +527,9 @@ void finish_transfer(const char *fname, 
+@@ -540,6 +598,9 @@ void finish_transfer(const char *fname, 
        }
        if (ret == 0) {
                /* The file was moved into place (not copied), so it's done. */
        }
        if (ret == 0) {
                /* The file was moved into place (not copied), so it's done. */
@@ -482,9 +482,9 @@ TODO: fix --delete-delay to work with --flags option.
 +++ new/rsync.h
 @@ -57,6 +57,7 @@
  #define XMIT_RDEV_MINOR_8_pre30 (1<<11)       /* protocols 28 - 29  */
 +++ new/rsync.h
 @@ -57,6 +57,7 @@
  #define XMIT_RDEV_MINOR_8_pre30 (1<<11)       /* protocols 28 - 29  */
- #define XMIT_GROUP_NAME_FOLLOWS (1<<11) /* protocols 30 - NOW */
- #define XMIT_HLINK_FIRST (1<<12)      /* protocols 30 - NOW (HLINKED files only) */
-+#define XMIT_SAME_FLAGS (1<<14)               /* protocols ?? - NOW */
+ #define XMIT_GROUP_NAME_FOLLOWS (1<<11) /* protocols 30 - now */
+ #define XMIT_HLINK_FIRST (1<<12)      /* protocols 30 - now (HLINKED files only) */
++#define XMIT_SAME_FLAGS (1<<14)               /* protocols ?? - now */
  
  /* These flags are used in the live flist data. */
  
  
  /* These flags are used in the live flist data. */
  
@@ -499,15 +499,15 @@ TODO: fix --delete-delay to work with --flags option.
  /* Find a variable that is either exactly 32-bits or longer.
   * If some code depends on 32-bit truncation, it will need to
   * take special action in a "#if SIZEOF_INT32 > 4" section. */
  /* Find a variable that is either exactly 32-bits or longer.
   * If some code depends on 32-bit truncation, it will need to
   * take special action in a "#if SIZEOF_INT32 > 4" section. */
-@@ -583,6 +588,7 @@ struct file_struct {
- extern int file_extra_cnt;
+@@ -573,6 +578,7 @@ extern int file_extra_cnt;
+ extern int inc_recurse;
  extern int uid_ndx;
  extern int gid_ndx;
 +extern int fileflags_ndx;
  extern int acls_ndx;
  extern int xattrs_ndx;
  
  extern int uid_ndx;
  extern int gid_ndx;
 +extern int fileflags_ndx;
  extern int acls_ndx;
  extern int xattrs_ndx;
  
-@@ -620,6 +626,7 @@ extern int xattrs_ndx;
+@@ -610,6 +616,7 @@ extern int xattrs_ndx;
  /* When the associated option is on, all entries will have these present: */
  #define F_OWNER(f) REQ_EXTRA(f, uid_ndx)->unum
  #define F_GROUP(f) REQ_EXTRA(f, gid_ndx)->unum
  /* When the associated option is on, all entries will have these present: */
  #define F_OWNER(f) REQ_EXTRA(f, uid_ndx)->unum
  #define F_GROUP(f) REQ_EXTRA(f, gid_ndx)->unum
@@ -517,7 +517,7 @@ TODO: fix --delete-delay to work with --flags option.
  #define F_NDX(f) REQ_EXTRA(f, ic_ndx)->num
 --- old/rsync.yo
 +++ new/rsync.yo
  #define F_NDX(f) REQ_EXTRA(f, ic_ndx)->num
 --- old/rsync.yo
 +++ new/rsync.yo
-@@ -342,6 +342,7 @@ to the detailed description below for a 
+@@ -343,6 +343,7 @@ to the detailed description below for a 
   -K, --keep-dirlinks         treat symlinked dir on receiver as dir
   -H, --hard-links            preserve hard links
   -p, --perms                 preserve permissions
   -K, --keep-dirlinks         treat symlinked dir on receiver as dir
   -H, --hard-links            preserve hard links
   -p, --perms                 preserve permissions
@@ -525,7 +525,7 @@ TODO: fix --delete-delay to work with --flags option.
   -E, --executability         preserve executability
       --chmod=CHMOD           affect file and/or directory permissions
   -A, --acls                  preserve ACLs (implies -p)
   -E, --executability         preserve executability
       --chmod=CHMOD           affect file and/or directory permissions
   -A, --acls                  preserve ACLs (implies -p)
-@@ -542,7 +543,9 @@ specified, in which case bf(-r) is not i
+@@ -543,7 +544,9 @@ specified, in which case bf(-r) is not i
  
  Note that bf(-a) bf(does not preserve hardlinks), because
  finding multiply-linked files is expensive.  You must separately
  
  Note that bf(-a) bf(does not preserve hardlinks), because
  finding multiply-linked files is expensive.  You must separately
@@ -536,7 +536,7 @@ TODO: fix --delete-delay to work with --flags option.
  
  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-":
  
  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-":
-@@ -865,6 +868,13 @@ dit(bf(-X, --xattrs)) This option causes
+@@ -883,6 +886,13 @@ dit(bf(-X, --xattrs)) This option causes
  extended attributes to be the same as the local ones.  This will work
  only if the remote machine's rsync also supports this option.
  
  extended attributes to be the same as the local ones.  This will work
  only if the remote machine's rsync also supports this option.