X-Git-Url: https://wimlib.net/git/?p=wimlib;a=blobdiff_plain;f=src%2Fextract.c;h=656a76c9487e9cdd509015c04c8d1727f0b83e11;hp=115d5ead871486172627e7b0aa74d0e562edf1a0;hb=2799ba2de8e4409158ed47828a3be9ac26859947;hpb=df1050ef86e54f027912a15fe60bf67c8ab43d2c diff --git a/src/extract.c b/src/extract.c index 115d5ead..656a76c9 100644 --- a/src/extract.c +++ b/src/extract.c @@ -1143,7 +1143,8 @@ dentry_extract_skeleton(struct wim_dentry *dentry, void *_ctx) { inode_for_each_dentry(other_dentry, dentry->d_inode) { if (dentry_has_short_name(other_dentry) - && !other_dentry->skeleton_extracted) + && !other_dentry->skeleton_extracted + && other_dentry->in_extraction_tree) { DEBUG("Creating %"TS" before %"TS" " "to guarantee correct DOS name extraction", @@ -1623,6 +1624,8 @@ dentry_calculate_extraction_path(struct wim_dentry *dentry, void *_args) struct apply_ctx *ctx = _args; int ret; + dentry->in_extraction_tree = 1; + if (dentry == ctx->extract_root || dentry->extraction_skipped) return 0; @@ -1742,6 +1745,7 @@ dentry_reset_needs_extraction(struct wim_dentry *dentry, void *_ignore) { struct wim_inode *inode = dentry->d_inode; + dentry->in_extraction_tree = 0; dentry->extraction_skipped = 0; dentry->was_hardlinked = 0; dentry->skeleton_extracted = 0; @@ -2061,7 +2065,7 @@ do_extract_warnings(struct apply_ctx *ctx) ctx->no_security_descriptors == 0) return; - WARNING("Extraction of \"%"TS"\" complete, but with one or more warnings:", + WARNING("Extraction to \"%"TS"\" complete, but with one or more warnings:", ctx->target); if (ctx->partial_security_descriptors != 0) { WARNING("- Could only partially set the security descriptor\n"