Put 3 flist_struct items into a union: rdev, sum, and link (all
[rsync/rsync.git] / rsync.h
diff --git a/rsync.h b/rsync.h
index dd3aa98..e0fb182 100644 (file)
--- a/rsync.h
+++ b/rsync.h
 
 #define FLAG_DELETE (1<<0)
 #define SAME_MODE (1<<1)
-#define SAME_RDEV (1<<2)
+#define EXTENDED_FLAGS (1<<2)
+#define SAME_RDEV_pre28 EXTENDED_FLAGS /* Only use in protocols < 28 */
 #define SAME_UID (1<<3)
 #define SAME_GID (1<<4)
 #define SAME_DIR (1<<5)
 #define SAME_NAME SAME_DIR
 #define LONG_NAME (1<<6)
 #define SAME_TIME (1<<7)
+#define SAME_HIGH_RDEV (1<<8)
+#define HAS_INODE_DATA (1<<9)
+#define SAME_DEV (1<<10)
+
+/* What flags are relevant after the transfer of the flist is complete? */
+#define LIVE_FLAGS (FLAG_DELETE|HAS_INODE_DATA)
 
 /* update this if you make incompatible changes */
-#define PROTOCOL_VERSION 27
+#define PROTOCOL_VERSION 28
 
 /* We refuse to interoperate with versions that are not in this range.
  * Note that we assume we'll work with later versions: the onus is on
@@ -368,20 +375,18 @@ struct file_struct {
        time_t modtime;
        OFF_T length;
        mode_t mode;
-
        INO64_T inode;
-       /** Device this file lives upon */
        DEV64_T dev;
-
-       /** If this is a device node, the device number. */
-       DEV64_T rdev;
+       union {
+               DEV64_T rdev;   /* The device number, if this is a device */
+               char *sum;      /* Only a normal file can have a checksum */
+               char *link;     /* Holds symlink string, if a symlink */
+       } u;
        uid_t uid;
        gid_t gid;
        char *basename;
        char *dirname;
        char *basedir;
-       char *link;
-       char *sum;
        unsigned short flags;
 };