X-Git-Url: https://wimlib.net/git/?a=blobdiff_plain;f=src%2Fextract.c;h=4d5ba7e0b7cbfa852829d1a4762c015b72137cdd;hb=49a63aa13cdeb4c1348697ccd92207a1a65ec7b0;hp=a087a76d48adbfad43409e8fe75d038c09906c1a;hpb=465a630d28e93b09e55ca07b1a6cae8def3b42f5;p=wimlib diff --git a/src/extract.c b/src/extract.c index a087a76d..4d5ba7e0 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", @@ -1381,8 +1382,11 @@ read_error: static int skip_pwm_stream(struct wim_lookup_table_entry *lte) { - return read_partial_wim_resource(lte, wim_resource_size(lte), - NULL, NULL, + return read_partial_wim_resource(lte, + wim_resource_size(lte), + NULL, + wim_resource_chunk_size(lte), + NULL, WIMLIB_READ_RESOURCE_FLAG_SEEK_ONLY, 0); } @@ -1623,6 +1627,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 +1748,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 +2068,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" @@ -2776,8 +2783,7 @@ wimlib_extract_image_from_pipe(int pipe_fd, const tchar *image_num_or_name, * wimlib_open_wim(), getting a WIMStruct in this way will result in * an empty lookup table, no XML data read, and no filename set. */ ret = open_wim_as_WIMStruct(&pipe_fd, - WIMLIB_OPEN_FLAG_FROM_PIPE | - WIMLIB_OPEN_FLAG_SPLIT_OK, + WIMLIB_OPEN_FLAG_FROM_PIPE, &pwm, progress_func); if (ret) return ret;