#endif
file->mode = mode;
+#ifdef SUPPORT_FILEFLAGS
-+ if (preserve_fileflags)
++ if (fileflags_ndx) /* check the ndx for force_change w/o preserve_fileflags */
+ F_FFLAGS(file) = fileflags;
+#endif
if (preserve_uid)
if (preserve_uid)
F_OWNER(file) = st.st_uid;
if (preserve_gid)
-@@ -1429,6 +1464,10 @@ static struct file_struct *send_file_name(int f, struct file_list *flist,
+@@ -1429,6 +1464,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;
+#ifdef SUPPORT_FILEFLAGS
-+ if (preserve_fileflags)
-+ sx.st.st_flags = F_FFLAGS(file);
++ sx.st.st_flags = preserve_fileflags ? F_FFLAGS(file) : 0;
+#endif
sx.xattr = NULL;
if (get_xattr(fname, &sx) < 0) {
diff --git a/generator.c b/generator.c
--- a/generator.c
+++ b/generator.c
-@@ -42,8 +42,10 @@ extern int preserve_devices;
+@@ -35,6 +35,7 @@ extern int do_progress;
+ extern int relative_paths;
+ extern int implied_dirs;
+ extern int keep_dirlinks;
++extern int force_change;
+ extern int preserve_acls;
+ extern int preserve_xattrs;
+ extern int preserve_links;
+@@ -42,6 +43,7 @@ extern int preserve_devices;
extern int preserve_specials;
extern int preserve_hard_links;
extern int preserve_executability;
+extern int preserve_fileflags;
extern int preserve_perms;
extern int preserve_times;
-+extern int force_change;
extern int delete_mode;
- extern int delete_before;
- extern int delete_during;
@@ -164,11 +166,15 @@ static enum delret delete_item(char *fbuf, uint16 mode, uint16 flags)
}