/* Have any images been deleted? */
u8 deletion_occurred : 1;
- u8 all_images_verified : 1;
+ /* Do we know that all the stream reference counts in the WIM are
+ * correct? If so, this is set to 1 and deletions are safe; otherwise
+ * this is set to 0 and deletions are not safe until reference counts
+ * are recalculated. (This is due to a bug in M$'s software that
+ * generates WIMs with invalid reference counts.) */
+ u8 refcnts_ok : 1;
+
u8 wim_locked : 1;
+
+ /* One of WIMLIB_COMPRESSION_TYPE_*, cached from the header flags. */
+ u8 compression_type : 2;
};
-extern int
-wim_run_full_verifications(WIMStruct *w);
+extern void
+wim_recalculate_refcnts(WIMStruct *wim);
extern int
read_header(const tchar *filename, int in_fd, struct wim_header *hdr);
extern int
init_header(struct wim_header *hdr, int ctype);
+extern int
+write_header_flags(u32 hdr_flags, int out_fd);
+
+extern int
+write_header_part_data(u16 part_number, u16 total_parts, int out_fd);
extern int
rename_wim_path(WIMStruct *wim, const tchar *from, const tchar *to);
extern int
-select_wim_image(WIMStruct *w, int image);
+select_wim_image(WIMStruct *wim, int image);
extern int
-for_image(WIMStruct *w, int image, int (*visitor)(WIMStruct *));
+for_image(WIMStruct *wim, int image, int (*visitor)(WIMStruct *));
extern int
-wim_checksum_unhashed_streams(WIMStruct *w);
+wim_checksum_unhashed_streams(WIMStruct *wim);
extern int
-reopen_wim(WIMStruct *w);
+reopen_wim(WIMStruct *wim);
extern int
-close_wim(WIMStruct *w);
+close_wim(WIMStruct *wim);
extern int
can_modify_wim(WIMStruct *wim);