/* Temporary flag. */
u32 raw_copy_ok : 1;
+
+ /* Compression type of this resource. */
+ u32 compression_type : 22;
+
+ /* Compression chunk size of this resource. Irrelevant if the resource
+ * is uncompressed. */
+ u32 chunk_size;
};
/* On-disk version of a WIM resource header. */
* the chunks (4 bytes per entry). */
} _packed_attribute;
+static inline unsigned int
+get_chunk_entry_size(u64 res_size, bool is_alt)
+{
+ if (res_size <= UINT32_MAX || is_alt)
+ return 4;
+ else
+ return 8;
+}
+
/* Functions to read streams */
extern int
wim_reshdr_to_data(const struct wim_reshdr *reshdr,
WIMStruct *wim, void **buf_ret);
+extern int
+wim_reshdr_to_hash(const struct wim_reshdr *reshdr, WIMStruct *wim,
+ u8 hash[SHA1_HASH_SIZE]);
+
extern int
skip_wim_stream(struct wim_lookup_table_entry *lte);
extract_stream_to_fd(struct wim_lookup_table_entry *lte,
struct filedes *fd, u64 size);
+extern int
+extract_full_stream_to_fd(struct wim_lookup_table_entry *lte,
+ struct filedes *fd);
+
extern int
extract_chunk_to_fd(const void *chunk, size_t size, void *_fd_p);