]> wimlib.net Git - wimlib/blobdiff - src/dentry.h
dentry_to_stbuf() fix
[wimlib] / src / dentry.h
index c1d167765b86dc527d1c9a003f5d9fb9abf1a26d..469946f8019b812b4db66d0837b8ebb390bd201a 100644 (file)
@@ -3,8 +3,10 @@
 
 #include "util.h"
 #include "config.h"
+#include "list.h"
 #include <string.h>
 
+
 struct stat;
 struct lookup_table;
 typedef struct WIMStruct WIMStruct;
@@ -81,6 +83,14 @@ static inline void destroy_ads_entry(struct ads_entry *entry)
        memset(entry, 0, sizeof(entry));
 }
 
+static inline bool ads_entry_has_name(const struct ads_entry *entry,
+                                     const char *name, size_t name_len)
+{
+       if (entry->stream_name_utf8_len != name_len)
+               return false;
+       return memcmp(entry->stream_name_utf8, name, name_len) == 0;
+}
+
 
 /* In-memory structure for a directory entry.  There is a directory tree for
  * each image in the WIM.  */
@@ -186,10 +196,8 @@ struct dentry {
         * WIMStructs */
        int refcnt;
 
-       /* Next dentry in the hard link set */
-       //struct dentry *next_dentry_in_link_set;
-       /* Next hard link that has a lookup table entry */
-       //struct dentry *next_link_set;
+       /* List of dentries in the hard link set */
+       struct list_head link_group_list;
 };
 
 /* Return hash of the "unnamed" (default) data stream. */
@@ -205,6 +213,16 @@ static inline const u8 *dentry_hash(const struct dentry *dentry)
        return dentry->hash;
 }
 
+static inline size_t dentry_link_group_size(const struct dentry *dentry)
+{
+       size_t size = 0;
+       struct list_head *list;
+       list_for_each(list, &dentry->link_group_list)
+               size++;
+       if (size == 0)
+               size = 1;
+       return size;
+}
 
 extern struct ads_entry *dentry_get_ads_entry(struct dentry *dentry,
                                              const char *stream_name);