/* These can be treated as counts (for required_features) or booleans (for
* supported_features). */
struct wim_features {
- unsigned long archive_files;
+ unsigned long readonly_files;
unsigned long hidden_files;
unsigned long system_files;
+ unsigned long archive_files;
unsigned long compressed_files;
unsigned long encrypted_files;
unsigned long encrypted_directories;
unsigned long security_descriptors;
unsigned long short_names;
unsigned long unix_data;
+ unsigned long object_ids;
unsigned long timestamps;
unsigned long case_sensitive_filenames;
+ unsigned long linux_xattrs;
};
struct blob_descriptor;
unsigned long num_blobs_remaining;
struct list_head blob_list;
const struct read_blob_callbacks *saved_cbs;
- struct blob_descriptor *cur_blob;
- u64 cur_blob_offset;
struct filedes tmpfile_fd;
tchar *tmpfile_name;
unsigned int count_until_file_progress;
return report_error(ctx->progfunc, ctx->progctx, error_code, path);
}
+extern bool
+detect_sparse_region(const void *data, size_t size, size_t *len_ret);
+
+static inline bool
+maybe_detect_sparse_region(const void *data, size_t size, size_t *len_ret,
+ bool enabled)
+{
+ if (!enabled) {
+ /* Force non-sparse without checking */
+ *len_ret = size;
+ return false;
+ }
+ return detect_sparse_region(data, size, len_ret);
+}
+
#define inode_first_extraction_dentry(inode) \
((inode)->i_first_extraction_alias)