]> wimlib.net Git - wimlib/blobdiff - src/extract.c
wimoptimize: Add --pack-streams option
[wimlib] / src / extract.c
index 3438ca73327ba3f29684967a2ba91536027810d8..1c7c2b07f9a73edd6a006801e9cc1eb1fd802348 100644 (file)
@@ -1308,7 +1308,8 @@ need_tmpfile_to_extract(struct wim_lookup_table_entry *lte,
 
 static int
 begin_extract_stream_to_tmpfile(struct wim_lookup_table_entry *lte,
-                               bool is_partial_res, void *_ctx)
+                               bool is_partial_res,
+                               void *_ctx)
 {
        struct apply_ctx *ctx = _ctx;
        int ret;
@@ -1320,10 +1321,7 @@ begin_extract_stream_to_tmpfile(struct wim_lookup_table_entry *lte,
                if (ret)
                        return ret;
 
-               /* Negative return value here means the function was successful,
-                * but the consume_chunk and end_chunk callbacks need not be
-                * called.  */
-               return -1;
+               return BEGIN_STREAM_STATUS_SKIP_STREAM;
        }
 
        DEBUG("Temporary file needed for stream (size=%"PRIu64")", lte->size);
@@ -1390,7 +1388,7 @@ extract_stream_list(struct apply_ctx *ctx)
                };
                return read_stream_list(&ctx->stream_list,
                                        offsetof(struct wim_lookup_table_entry, extraction_list),
-                                       0, &cbs);
+                                       &cbs, VERIFY_STREAM_HASHES);
        } else {
                /* Extract the streams in unsorted order.  */
                struct wim_lookup_table_entry *lte;
@@ -1437,7 +1435,7 @@ read_pwm_stream_header(WIMStruct *pwm, struct wim_lookup_table_entry *lte,
                return 0;
        }
 
-       if (buf.stream_hdr.magic != PWM_STREAM_MAGIC) {
+       if (le64_to_cpu(buf.stream_hdr.magic) != PWM_STREAM_MAGIC) {
                ERROR("Data read on pipe is invalid (expected stream header).");
                return WIMLIB_ERR_INVALID_PIPABLE_WIM;
        }
@@ -1510,7 +1508,7 @@ extract_streams_from_pipe(struct apply_ctx *ctx)
                    && (needed_lte = lookup_resource(lookup_table, found_lte->hash))
                    && (needed_lte->out_refcnt))
                {
-                       char *tmpfile_name = NULL;
+                       tchar *tmpfile_name = NULL;
                        struct wim_lookup_table_entry *lte_override;
                        struct wim_lookup_table_entry tmpfile_lte;