]> wimlib.net Git - wimlib/blobdiff - src/dentry.h
Fix up calculation of image XML statistics
[wimlib] / src / dentry.h
index e1051321ea499ae3f45fc38a79ec6fad77ac81c9..b51000a28ff871949caae9f28a1439903fdbb34b 100644 (file)
@@ -83,6 +83,8 @@ struct ads_entry {
        char *stream_name_utf8;
 
 #ifdef WITH_FUSE
        char *stream_name_utf8;
 
 #ifdef WITH_FUSE
+       /* Number to identify an alternate data stream even after it's possibly
+        * been moved or renamed. */
        u32 stream_id;
 #endif
 };
        u32 stream_id;
 #endif
 };
@@ -126,7 +128,7 @@ static inline bool ads_entries_have_same_name(const struct ads_entry *entry_1,
  */
 struct dentry {
        /* The inode for this dentry */
  */
 struct dentry {
        /* The inode for this dentry */
-       struct inode *inode;
+       struct inode *d_inode;
 
        /* The parent of this directory entry. */
        struct dentry *parent;
 
        /* The parent of this directory entry. */
        struct dentry *parent;
@@ -294,6 +296,12 @@ static inline bool dentry_is_extracted(const struct dentry *dentry)
        return dentry->is_extracted;
 }
 
        return dentry->is_extracted;
 }
 
+static inline bool dentry_is_first_in_inode(const struct dentry *dentry)
+{
+       return container_of(dentry->d_inode->dentry_list.next,
+                           struct dentry,
+                           inode_dentry_list) == dentry;
+}
 
 extern u64 dentry_correct_total_length(const struct dentry *dentry);
 
 
 extern u64 dentry_correct_total_length(const struct dentry *dentry);
 
@@ -340,21 +348,12 @@ extern int increment_dentry_refcnt(struct dentry *dentry, void *ignore);
 extern void unlink_dentry(struct dentry *dentry);
 extern void link_dentry(struct dentry *dentry, struct dentry *parent);
 
 extern void unlink_dentry(struct dentry *dentry);
 extern void link_dentry(struct dentry *dentry, struct dentry *parent);
 
-extern void calculate_dir_tree_statistics(struct dentry *root, 
-                                         struct lookup_table *table, 
-                                         u64 *dir_count_ret, 
-                                         u64 *file_count_ret, 
-                                         u64 *total_bytes_ret, 
-                                         u64 *hard_link_bytes_ret);
-
 extern int verify_dentry(struct dentry *dentry, void *wim);
 
 
 extern struct ads_entry *inode_get_ads_entry(struct inode *inode,
                                             const char *stream_name,
                                             u16 *idx_ret);
 extern int verify_dentry(struct dentry *dentry, void *wim);
 
 
 extern struct ads_entry *inode_get_ads_entry(struct inode *inode,
                                             const char *stream_name,
                                             u16 *idx_ret);
-extern void inode_free_ads_entries(struct inode *inode);
-
 extern struct ads_entry *inode_add_ads(struct inode *dentry,
                                       const char *stream_name);
 
 extern struct ads_entry *inode_add_ads(struct inode *dentry,
                                       const char *stream_name);
 
@@ -377,7 +376,7 @@ static inline bool dentry_is_root(const struct dentry *dentry)
 
 static inline bool dentry_is_first_sibling(const struct dentry *dentry)
 {
 
 static inline bool dentry_is_first_sibling(const struct dentry *dentry)
 {
-       return dentry_is_root(dentry) || dentry->parent->inode->children == dentry;
+       return dentry_is_root(dentry) || dentry->parent->d_inode->children == dentry;
 }
 
 static inline bool dentry_is_only_child(const struct dentry *dentry)
 }
 
 static inline bool dentry_is_only_child(const struct dentry *dentry)
@@ -393,7 +392,7 @@ static inline bool inode_is_directory(const struct inode *inode)
 
 static inline bool dentry_is_directory(const struct dentry *dentry)
 {
 
 static inline bool dentry_is_directory(const struct dentry *dentry)
 {
-       return inode_is_directory(dentry->inode);
+       return inode_is_directory(dentry->d_inode);
 }
 
 /* For our purposes, we consider "real" symlinks and "junction points" to both
 }
 
 /* For our purposes, we consider "real" symlinks and "junction points" to both
@@ -407,7 +406,7 @@ static inline bool inode_is_symlink(const struct inode *inode)
 
 static inline bool dentry_is_symlink(const struct dentry *dentry)
 {
 
 static inline bool dentry_is_symlink(const struct dentry *dentry)
 {
-       return inode_is_symlink(dentry->inode);
+       return inode_is_symlink(dentry->d_inode);
 }
 
 static inline bool inode_is_regular_file(const struct inode *inode)
 }
 
 static inline bool inode_is_regular_file(const struct inode *inode)
@@ -417,12 +416,12 @@ static inline bool inode_is_regular_file(const struct inode *inode)
 
 static inline bool dentry_is_regular_file(const struct dentry *dentry)
 {
 
 static inline bool dentry_is_regular_file(const struct dentry *dentry)
 {
-       return inode_is_regular_file(dentry->inode);
+       return inode_is_regular_file(dentry->d_inode);
 }
 
 static inline bool dentry_is_empty_directory(const struct dentry *dentry)
 {
 }
 
 static inline bool dentry_is_empty_directory(const struct dentry *dentry)
 {
-       return dentry_is_directory(dentry) && dentry->inode->children == NULL;
+       return dentry_is_directory(dentry) && dentry->d_inode->children == NULL;
 }
 
 #endif
 }
 
 #endif