/* 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.
*/
int (*set_file_attributes)
- (const tchar *path, u32 attributes, struct apply_ctx *ctx);
+ (const tchar *path, u32 attributes, struct apply_ctx *ctx,
+ unsigned pass);
/* OPTIONAL: Set reparse data. In start_extract(), set
* ctx->supported_features.reparse_data if supported. */
* then be passed to callbacks taking a 'file_spec_t', rather than the
* path. */
unsigned uses_cookies : 1;
+
+ /* 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;
};
struct wim_features {
tchar *realtarget;
size_t realtarget_nchars;
unsigned long invalid_sequence;
+ unsigned long partial_security_descriptors;
+ unsigned long no_security_descriptors;
u64 num_streams_remaining;
bool root_dentry_is_special;
uint64_t next_progress;