]> wimlib.net Git - wimlib/blobdiff - src/dentry.h
imagex capture and append consolidation
[wimlib] / src / dentry.h
index ba100029cc5b08e888a5440073717cea8db09ada..b539fb58148e807c48792183a64fdb80d53a612c 100644 (file)
@@ -10,7 +10,7 @@
 
 struct stat;
 struct lookup_table;
-typedef struct WIMStruct WIMStruct;
+struct WIMStruct;
 
 /* Size of the struct dentry up to and including the file_name_len. */
 #define WIM_DENTRY_DISK_SIZE    102
@@ -110,6 +110,15 @@ static inline bool ads_entry_has_name(const struct ads_entry *entry,
        return memcmp(entry->stream_name_utf8, name, name_len) == 0;
 }
 
+static inline bool ads_entries_have_same_name(const struct ads_entry *entry_1,
+                                             const struct ads_entry *entry_2)
+{
+       if (entry_1->stream_name_len != entry_2->stream_name_len)
+               return false;
+       return memcmp(entry_1->stream_name, entry_2->stream_name,
+                     entry_1->stream_name_len) == 0;
+}
+
 
 /* 
  * In-memory structure for a WIM directory entry (dentry).  There is a directory
@@ -222,7 +231,7 @@ struct dentry {
         * Unfortunately, in some WIMs it is NOT the case that all dentries that
         * share this field are actually in the same hard link set, although the
         * WIMs that wimlib writes maintain this restriction. */
-       u64 hard_link;
+       u64 link_group_id;
 
        /* Number of alternate data streams associated with this file. */
        u16 num_ads;
@@ -283,11 +292,14 @@ struct dentry {
        /* List of dentries in the hard link set */
        struct list_head link_group_list;
 
+       union {
        /* List of dentries sharing the same lookup table entry */
-       struct stream_list_head lte_group_list;
+               struct stream_list_head lte_group_list;
+               struct list_head tmp_list;
+       };
 
        /* Path to extracted file on disk (used during extraction only)
-        * (malloc()ed buffer) */
+        * (malloc()ed buffer, or set the same as full_path_utf8) */
        char *extracted_file;
 };
 
@@ -329,8 +341,8 @@ extern void link_dentry(struct dentry *dentry, struct dentry *parent);
 extern int print_dentry(struct dentry *dentry, void *lookup_table);
 extern int print_dentry_full_path(struct dentry *entry, void *ignore);
 
-extern struct dentry *get_dentry(WIMStruct *w, const char *path);
-extern struct dentry *get_parent_dentry(WIMStruct *w, const char *path);
+extern struct dentry *get_dentry(struct WIMStruct *w, const char *path);
+extern struct dentry *get_parent_dentry(struct WIMStruct *w, const char *path);
 extern struct dentry *get_dentry_child_with_name(const struct dentry *dentry, 
                                                        const char *name);
 extern void dentry_update_all_timestamps(struct dentry *dentry);