* This function operates slightly differently depending on whether @lte_spec is
* NULL or not. When @lte_spec is NULL, the behavior is to extract the default
* file contents (unnamed stream), and, if named data streams are supported in
- * the extract mode and volume, any named data streams. When @lte_spec is NULL,
- * the behavior is to extract only all copies of the stream @lte_spec, and in
- * addition use @lte_spec to set the reparse data or create the symbolic link if
- * appropriate.
+ * the extract mode and volume, any named data streams. When @lte_spec is not
+ * NULL, the behavior is to extract only all copies of the stream @lte_spec, and
+ * in addition use @lte_spec to set the reparse data or create the symbolic link
+ * if appropriate.
*
* @path
* Path to file to extract (as can be passed to apply_operations
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;
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);
};
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;
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;
}
&& (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;