X-Git-Url: https://wimlib.net/git/?a=blobdiff_plain;f=include%2Fwimlib%2Fdentry.h;h=05cb8c3f9d762b33981e7f98b5657afa2f202968;hb=894f8dab7f174bf289e6b5e9ea54374d10d6e62f;hp=2dd98fb458a8d21716b7c9cf34ed38b991a30ca5;hpb=57318a10de8d50cd338fa4c0e4e0b9f60e7c0143;p=wimlib diff --git a/include/wimlib/dentry.h b/include/wimlib/dentry.h index 2dd98fb4..05cb8c3f 100644 --- a/include/wimlib/dentry.h +++ b/include/wimlib/dentry.h @@ -10,8 +10,6 @@ struct wim_inode; struct wim_lookup_table; -struct wim_lookup_table_entry; -struct wim_security_data; /* Base size of a WIM dentry in the on-disk format, up to and including the file * name length. This does not include the variable-length file name, short @@ -64,7 +62,7 @@ struct wim_dentry { * long names but share the same case insensitive long name. */ struct list_head d_ci_conflict_list; - /* The parent of this directory entry. */ + /* The parent of this directory entry. (The root is its own parent.) */ struct wim_dentry *d_parent; /* Linked list node that places this dentry in the list of aliases for @@ -99,14 +97,15 @@ struct wim_dentry { /* Used by wimlib_update_image() */ u8 is_orphan : 1; - /* Temporary list field */ - struct list_head tmp_list; + union { + /* 'subdir_offset' is only used while reading and writing this + * dentry. See the corresponding field in `struct + * wim_dentry_on_disk' for explanation. */ + u64 subdir_offset; - /* 'length' and 'subdir_offset' are only used while reading and writing - * this dentry; see the corresponding field in - * `struct wim_dentry_on_disk' for explanation. */ - u64 length; - u64 subdir_offset; + /* Temporary list field */ + struct list_head tmp_list; + }; /* Full path to this dentry in the WIM, in platform-dependent tchars * that can be printed without conversion. By default this field will @@ -153,22 +152,28 @@ for_dentry_in_tree(struct wim_dentry *root, int (*visitor)(struct wim_dentry*, void*), void *args); -extern int -for_dentry_in_tree_depth(struct wim_dentry *root, - int (*visitor)(struct wim_dentry*, void*), - void *args); - /* Iterate through each @child dentry of the @dir directory inode, - * in sorted order (by case sensitive name). */ -#define for_inode_child(child, dir) \ - avl_tree_for_each_in_order((child), (dir)->i_children, \ + * in sorted order by case sensitive name. */ +#define for_inode_child(child, dir) \ + avl_tree_for_each_in_order((child), (dir)->i_children, \ struct wim_dentry, d_index_node) /* Iterate through each @child dentry of the @parent dentry, - * in sorted order (by case sensitive name). */ + * in sorted order by case sensitive name. */ #define for_dentry_child(child, parent) \ for_inode_child((child), (parent)->d_inode) +/* Iterate through each @child dentry of the @dir directory inode, + * in sorted order by case insensitive name. */ +#define for_inode_child_case_insensitive(child, dir) \ + avl_tree_for_each_in_order((child), (dir)->i_children_ci, \ + struct wim_dentry, d_index_node_ci) + +/* Iterate through each @child dentry of the @parent dentry, + * in sorted order by case insensitive name. */ +#define for_dentry_child_case_insensitive(child, parent) \ + for_inode_child_case_insensitive((child), (parent)->d_inode) + /* Iterate through each @child dentry of the @dir directory inode, * in postorder (safe for freeing the child dentries). */ #define for_inode_child_postorder(child, dir) \ @@ -219,20 +224,6 @@ extern struct wim_dentry * get_parent_dentry(struct WIMStruct *wim, const tchar *path, CASE_SENSITIVITY_TYPE case_type); -#ifdef WITH_FUSE - -#define LOOKUP_FLAG_ADS_OK 0x00000001 -#define LOOKUP_FLAG_DIRECTORY_OK 0x00000002 - -extern int -wim_pathname_to_stream(WIMStruct *wim, - const tchar *path, - int lookup_flags, - struct wim_dentry **dentry_ret, - struct wim_lookup_table_entry **lte_ret, - u16 *stream_idx_ret); -#endif - extern int calculate_dentry_full_path(struct wim_dentry *dentry);