* alias file_name. */
tchar *extraction_name;
size_t extraction_name_nchars;
-
- /* (Extraction only) List head for building a list of dentries that
- * contain a certain stream. */
- struct list_head extraction_stream_list;
};
#define rbnode_dentry(node) container_of(node, struct wim_dentry, rb_node)
/* Number of dentries that are aliases for this inode. */
u32 i_nlink;
- /* Number of alternate data streams associated with this inode */
+ /* Number of alternate data streams (ADS) associated with this inode */
u16 i_num_ads;
/* Flag that indicates whether this inode's streams have been
/* Set if the DOS name of an inode has already been extracted. */
u8 i_dos_name_extracted : 1;
+ /* 1 iff all ADS entries of this inode are named or if this inode
+ * has no ADS entries */
+ u8 i_canonical_streams : 1;
+
/* Pointer to a malloc()ed array of i_num_ads alternate data stream
* entries for this inode. */
struct wim_ads_entry *i_ads_entries;
}
extern u64
-dentry_correct_total_length(const struct wim_dentry *dentry);
+dentry_out_total_length(const struct wim_dentry *dentry);
extern int
for_dentry_in_tree(struct wim_dentry *root,
int (*visitor)(struct wim_dentry *, void *),
void *arg);
-static inline int
+extern int
for_dentry_child(const struct wim_dentry *dentry,
int (*visitor)(struct wim_dentry *, void *),
- void *arg)
-{
- return for_dentry_in_rbtree(dentry->d_inode->i_children.rb_node,
- visitor,
- arg);
-}
+ void *arg);
extern int
for_dentry_in_tree_depth(struct wim_dentry *root,