#ifndef _WIMLIB_APPLY_H
#define _WIMLIB_APPLY_H
+#include "wimlib/file_io.h"
#include "wimlib/types.h"
#include "wimlib/list.h"
#include "wimlib.h"
/* REQUIRED: Extract unnamed data stream. */
int (*extract_unnamed_stream)
(file_spec_t file, struct wim_lookup_table_entry *lte,
- struct apply_ctx *ctx);
+ struct apply_ctx *ctx, struct wim_dentry *dentry);
/* OPTIONAL: Extracted named data stream. In start_extract(), set
* ctx->supported_features.alternate_data_streams if supported. */
/* OPTIONAL: Extracted encrypted stream. In start_extract(), set
* ctx->supported_features.encrypted_files if supported. */
int (*extract_encrypted_stream)
- (file_spec_t file, struct wim_lookup_table_entry *lte,
+ (const tchar *path, struct wim_lookup_table_entry *lte,
struct apply_ctx *ctx);
/* OPTIONAL: Set file attributes. Calling code calls this if non-NULL.
/* OPTIONAL: Set to 1 if set_file_attributes() needs to be called a
* second time towards the end of the extraction. */
unsigned requires_final_set_attributes_pass : 1;
+
+ /* OPTIONAL: Set to 1 if extract_encrypted_stream() must be used to
+ * create encrypted files. */
+ unsigned extract_encrypted_stream_creates_file : 1;
+
+ /* OPTIONAL: Set to 1 if a link to a file with corresponding short name
+ * must be created before all links to the same file without
+ * corresponding short names. */
+ unsigned requires_short_name_reordering : 1;
};
struct wim_features {
size_t target_nchars;
wimlib_progress_func_t progress_func;
union wimlib_progress_info progress;
- struct wim_dentry *extract_root;
const struct apply_operations *ops;
+ struct list_head stream_list;
struct wim_features supported_features;
+ bool root_dentry_is_special;
u32 supported_attributes_mask;
- struct list_head stream_list;
+
+ struct wim_dentry *target_dentry;
tchar *realtarget;
size_t realtarget_nchars;
unsigned long invalid_sequence;
unsigned long partial_security_descriptors;
unsigned long no_security_descriptors;
+ struct filedes tmpfile_fd;
+ tchar *tmpfile_name;
u64 num_streams_remaining;
- bool root_dentry_is_special;
uint64_t next_progress;
- intptr_t private[8];
+ intptr_t private[10];
};
#ifdef __WIN32__