#define GID_NONE ((gid_t)-1)
union file_extras {
-@@ -563,6 +567,7 @@ extern int preserve_gid;
+@@ -531,6 +535,7 @@ extern int flist_extra_cnt;
+ extern int preserve_uid;
+ extern int preserve_gid;
+ extern int preserve_acls;
++extern int preserve_xattrs;
+
+ #define FILE_STRUCT_LEN (offsetof(struct file_struct, basename))
+ #define EXTRA_LEN (sizeof (union file_extras))
+@@ -564,6 +569,7 @@ extern int preserve_acls;
#define F_UID(f) REQ_EXTRA(f, preserve_uid)->unum
#define F_GID(f) REQ_EXTRA(f, preserve_gid)->unum
#define F_ACL(f) REQ_EXTRA(f, preserve_acls)->unum
/* These items are per-entry optional and mutally exclusive: */
#define F_HL_GNUM(f) OPT_EXTRA(f, LEN64_BUMP(f))->num
-@@ -738,6 +743,9 @@ typedef struct {
+@@ -739,6 +745,9 @@ typedef struct {
struct rsync_acl *acc_acl; /* access ACL */
struct rsync_acl *def_acl; /* default ACL */
#endif
transfer. The resulting value is treated as though it was the permissions
--- old/xattr.c
+++ new/xattr.c
-@@ -0,0 +1,415 @@
+@@ -0,0 +1,413 @@
+/*
+ * Extended Attribute support for rsync.
+ * Written by Jay Fenlason, vaguely based on the ACLs patch.
+extern int am_root;
+extern int read_only;
+extern int list_only;
-+extern int preserve_xattrs;
-+extern unsigned int file_struct_len;
+
+#define RSYNC_XAL_INITIAL 5
+#define RSYNC_XAL_LIST_INITIAL 100