Moved the inode & dev items out of the flist_struct. Based on a
[rsync/rsync.git] / rsync.h
diff --git a/rsync.h b/rsync.h
index e0fb182..d615f1a 100644 (file)
--- a/rsync.h
+++ b/rsync.h
@@ -371,26 +371,40 @@ enum logcode {FNONE=0, FERROR=1, FINFO=2, FLOG=3 };
 
 #define GID_NONE (gid_t) -1
 
+struct hlink {
+       struct file_struct *head;
+       struct file_struct *next;
+};
+
+struct idev {
+       INO64_T inode;
+       DEV64_T dev;
+};
+
+#define F_DEV  link_u.idev->dev
+#define F_INODE        link_u.idev->inode
+
 struct file_struct {
        time_t modtime;
        OFF_T length;
        mode_t mode;
-       INO64_T inode;
-       DEV64_T dev;
        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;
+       union {
+               struct idev *idev;
+               struct hlink *links;
+       } link_u;
        char *basename;
        char *dirname;
        char *basedir;
+       uid_t uid;
+       gid_t gid;
        unsigned short flags;
 };
 
-
 #define ARENA_SIZE     (32 * 1024)
 
 struct string_area {