Changed the test for the 2.6.8 bug to preserve owner and group.
[rsync/rsync.git] / rsync.h
diff --git a/rsync.h b/rsync.h
index e5a4019..c2a4e67 100644 (file)
--- a/rsync.h
+++ b/rsync.h
 #define XMIT_TOP_DIR (1<<0)
 #define XMIT_SAME_MODE (1<<1)
 #define XMIT_EXTENDED_FLAGS (1<<2)
-#define XMIT_SAME_RDEV_pre28 XMIT_EXTENDED_FLAGS /* Only in protocols < 28 */
+#define XMIT_SAME_RDEV_pre28 XMIT_EXTENDED_FLAGS /* protocols < 28 */
 #define XMIT_SAME_UID (1<<3)
 #define XMIT_SAME_GID (1<<4)
 #define XMIT_SAME_NAME (1<<5)
 #define XMIT_LONG_NAME (1<<6)
 #define XMIT_SAME_TIME (1<<7)
 #define XMIT_SAME_RDEV_MAJOR (1<<8)
-#define XMIT_HAS_IDEV_DATA (1<<9)
-#define XMIT_SAME_DEV (1<<10)
+#define XMIT_HLINKED (1<<9)
+#define XMIT_SAME_DEV_pre30 (1<<10)    /* protocols < 30 */
+#define XMIT_HLINK_FIRST (1<<10)       /* protocols >= 30 */
 #define XMIT_RDEV_MINOR_IS_SMALL (1<<11)
 
 /* These flags are used in the live flist data. */
@@ -70,6 +71,8 @@
 
 #define BITS_SET(val,bits) (((val) & (bits)) == (bits))
 #define BITS_SETnUNSET(val,onbits,offbits) (((val) & ((onbits)|(offbits))) == (onbits))
+#define BITS_EQUAL(b1,b2,mask) (((unsigned)(b1) & (unsigned)(mask)) \
+                            == ((unsigned)(b2) & (unsigned)(mask)))
 
 /* update this if you make incompatible changes */
 #define PROTOCOL_VERSION 30
@@ -458,6 +461,11 @@ struct idev {
        int64 dev;
 };
 
+struct idev_node {
+       int64 key;
+       void *data;
+};
+
 #ifndef MIN
 #define MIN(a,b) ((a)<(b)?(a):(b))
 #endif
@@ -554,6 +562,7 @@ extern int preserve_gid;
 
 /* These items are per-entry optional and mutally exclusive: */
 #define F_HL_IDEV(f) OPT_EXTRA(f, LEN64_BUMP(f))->idev
+#define F_HL_GNUM(f) OPT_EXTRA(f, LEN64_BUMP(f))->num
 #define F_HL_PREV(f) OPT_EXTRA(f, LEN64_BUMP(f))->num
 
 /* This optional item might follow an F_HL_*() item.
@@ -567,8 +576,8 @@ extern int preserve_gid;
 /* Some utility defines: */
 #define F_IS_ACTIVE(f) F_BASENAME(f)[0]
 #define F_IS_HLINKED(f) ((f)->flags & FLAG_HLINKED)
-#define F_NOT_HLINK_FIRST(f) BITS_SETnUNSET((f)->flags, FLAG_HLINKED, FLAG_HLINK_FIRST)
-#define F_NOT_HLINK_LAST(f) BITS_SETnUNSET((f)->flags, FLAG_HLINKED, FLAG_HLINK_LAST)
+#define F_HLINK_NOT_FIRST(f) BITS_SETnUNSET((f)->flags, FLAG_HLINKED, FLAG_HLINK_FIRST)
+#define F_HLINK_NOT_LAST(f) BITS_SETnUNSET((f)->flags, FLAG_HLINKED, FLAG_HLINK_LAST)
 
 #define DEV_MAJOR(a) (a)[0]
 #define DEV_MINOR(a) (a)[1]