X-Git-Url: https://wimlib.net/git/?p=wimlib;a=blobdiff_plain;f=include%2Fwimlib%2Fdentry.h;h=90127d43d71e75054682dfdc4e0f7c1667ec4ab6;hp=fa35869b83ce47674cccddcb77e85e36769af558;hb=013617d583c028b1741bfc05c22e7a626b394174;hpb=5d3d469e410dc5f4a28814ad231336fc174cba56 diff --git a/include/wimlib/dentry.h b/include/wimlib/dentry.h index fa35869b..90127d43 100644 --- a/include/wimlib/dentry.h +++ b/include/wimlib/dentry.h @@ -44,7 +44,7 @@ struct wim_security_data; * that Microsoft may have fixed this problem, since I've only noticed it in the * 'install.wim' for Windows 7). For those dentries, we have to use the * conflicting fields to split up the hard link groups. (See - * dentry_tree_fix_inodes() in hardlink.c). + * dentry_tree_fix_inodes() in inode_fixup.c.) */ struct wim_dentry { /* Pointer to the inode for this dentry. This will contain some @@ -76,17 +76,6 @@ struct wim_dentry { * including the terminating null character. */ u32 full_path_nbytes; - /* For extraction operations, this flag will be set on dentries in the - * tree being extracted. Otherwise this will always be 0. */ - u8 in_extraction_tree : 1; - - /* For extraction operations, this flag will be set when a dentry in the - * tree being extracted is not being extracted for some reason (file - * type not supported by target filesystem, contains invalid characters, - * or not in one of the multiple sub-trees being extracted). Otherwise - * this will always be 0. */ - u8 extraction_skipped : 1; - /* During extraction extractions, this flag will be set after the * "skeleton" of the dentry has been extracted. */ u8 skeleton_extracted : 1; @@ -97,21 +86,19 @@ struct wim_dentry { * always be 0. */ u8 is_win32_name : 1; - /* When verifying the dentry tree after reading it into memory, this - * flag will be set on all dentries in a hard link group that have a - * nonempty DOS name except one. This is because it is supposed to be - * illegal (on NTFS, at least) for a single inode to have multiple DOS - * names. */ - u8 dos_name_invalid : 1; - + /* Temporary flag; always reset to 0 when done using. */ u8 tmp_flag : 1; - u8 was_hardlinked : 1; + /* Set to 1 if this name was extracted as a link, so no streams need to + * be extracted to it. */ + u8 was_linked : 1; - /* Temporary list field used to make lists of dentries in a few places. - * */ + /* Temporary list field */ struct list_head tmp_list; + /* Links list of dentries being extracted */ + struct list_head extraction_list; + /* Linked list node that places this dentry in the list of aliases for * its inode (d_inode) */ struct list_head d_alias; @@ -226,12 +213,6 @@ wim_pathname_to_stream(WIMStruct *wim, u16 *stream_idx_ret); #endif -extern int -print_dentry(struct wim_dentry *dentry, void *lookup_table); - -extern int -print_dentry_full_path(struct wim_dentry *entry, void *ignore); - extern int calculate_dentry_full_path(struct wim_dentry *dentry); @@ -279,14 +260,8 @@ rename_wim_path(WIMStruct *wim, const tchar *from, const tchar *to, extern int -read_dentry(const u8 * restrict metadata_resource, - u64 metadata_resource_len, u64 offset, - struct wim_dentry * restrict dentry); - -extern int -read_dentry_tree(const u8 * restrict metadata_resource, - u64 metadata_resource_len, - struct wim_dentry * restrict dentry); +read_dentry_tree(const u8 *buf, size_t buf_len, + u64 root_offset, struct wim_dentry **root_ret); extern u8 * write_dentry_tree(const struct wim_dentry * restrict tree,