#define GID_NONE (gid_t) -1
-struct file_struct {
- time_t modtime;
- OFF_T length;
- mode_t mode;
+struct hlink {
+ struct file_struct *head;
+ struct file_struct *next;
+};
+struct idev {
INO64_T inode;
- /** Device this file lives upon */
DEV64_T dev;
+};
- /** If this is a device node, the device number. */
- DEV64_T rdev;
- uid_t uid;
- gid_t gid;
+#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;
+ 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 {
+ struct idev *idev;
+ struct hlink *links;
+ } link_u;
char *basename;
char *dirname;
char *basedir;
- char *link;
- char *sum;
+ uid_t uid;
+ gid_t gid;
unsigned short flags;
};
-
#define ARENA_SIZE (32 * 1024)
struct string_area {