Moved the inode & dev items out of the flist_struct. Based on a
authorWayne Davison <wayned@samba.org>
Sun, 11 Jan 2004 07:55:53 +0000 (07:55 +0000)
committerWayne Davison <wayned@samba.org>
Sun, 11 Jan 2004 07:55:53 +0000 (07:55 +0000)
preliminary patch by J.W.

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
 
 
 #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;
 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;
        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;
        char *basename;
        char *dirname;
        char *basedir;
+       uid_t uid;
+       gid_t gid;
        unsigned short flags;
 };
 
        unsigned short flags;
 };
 
-
 #define ARENA_SIZE     (32 * 1024)
 
 struct string_area {
 #define ARENA_SIZE     (32 * 1024)
 
 struct string_area {