/* 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. */
/* Compression format used for compressed chunks:
* 0 = None
- * 1 = LZX
- * 2 = XPRESS
+ * 1 = XPRESS
+ * 2 = LZX
* 3 = LZMS
*
* This overrides the compression type specified by the WIM 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);