X-Git-Url: https://wimlib.net/git/?p=wimlib;a=blobdiff_plain;f=src%2Fextract.c;h=b14489379d0275e3b734e73c81e4af02fb7a2a70;hp=56ec644a0b2d31aad4fcb68fe32b442151daf557;hb=944944f4627d18da3b4124ec34df15706baf0d9b;hpb=d8af927e5d02cbcfc45cd1a3568b31c9814ec6f5 diff --git a/src/extract.c b/src/extract.c index 56ec644a..b1448937 100644 --- a/src/extract.c +++ b/src/extract.c @@ -58,12 +58,10 @@ #include "wimlib/resource.h" #include "wimlib/security.h" #include "wimlib/unix_data.h" -#ifdef __WIN32__ -# include "wimlib/win32.h" /* for realpath() equivalent */ -#endif -#include "wimlib/xml.h" #include "wimlib/wildcard.h" #include "wimlib/wim.h" +#include "wimlib/win32.h" /* for realpath() equivalent */ +#include "wimlib/xml.h" #define WIMLIB_EXTRACT_FLAG_FROM_PIPE 0x80000000 #define WIMLIB_EXTRACT_FLAG_IMAGEMODE 0x40000000 @@ -181,9 +179,7 @@ read_pwm_blob_header(WIMStruct *pwm, struct blob_descriptor *blob, reshdr.offset_in_wim = pwm->in_fd.offset; reshdr.uncompressed_size = le64_to_cpu(buf.blob_hdr.uncompressed_size); wim_res_hdr_to_desc(&reshdr, pwm, rdesc); - blob_set_is_located_in_wim_resource(blob, rdesc); - blob->size = rdesc->uncompressed_size; - blob->offset_in_res = 0; + blob_set_is_located_in_nonsolid_wim_resource(blob, rdesc); blob->is_metadata = (rdesc->flags & WIM_RESHDR_FLAG_METADATA) != 0; return 0; @@ -234,11 +230,8 @@ read_blobs_from_pipe(struct apply_ctx *ctx, && (needed_blob = lookup_blob(blob_table, found_blob->hash)) && (needed_blob->out_refcnt)) { - needed_blob->offset_in_res = found_blob->offset_in_res; - needed_blob->size = found_blob->size; - blob_unset_is_located_in_wim_resource(found_blob); - blob_set_is_located_in_wim_resource(needed_blob, rdesc); + blob_set_is_located_in_nonsolid_wim_resource(needed_blob, rdesc); ret = (*cbs->begin_blob)(needed_blob, cbs->begin_blob_ctx); @@ -511,8 +504,8 @@ end_extract_blob_wrapper(struct blob_descriptor *blob, int status, void *_ctx) * MAX_OPEN_FILES locations, as measured by the 'out_refcnt' of each blob. * Therefore, the apply_operations implementation need not worry about running * out of file descriptors, unless it might open more than one file descriptor - * per nominal destination (e.g. Win32 currently might because the destination - * file system might not support hard links). + * per 'blob_extraction_target' (e.g. Win32 currently might because the + * destination file system might not support hard links). */ int extract_blob_list(struct apply_ctx *ctx,