]> wimlib.net Git - wimlib/blobdiff - include/wimlib/wim.h
Cache compression type in WIMStruct and wim_lookup_table_entry
[wimlib] / include / wimlib / wim.h
index 946eee1f163e7ea20c660c11244119491ce7c798..57adebde7522d7f780276865045215ccf3db700c 100644 (file)
@@ -47,16 +47,24 @@ struct WIMStruct {
        /* 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,
-           int split_ok);
+read_header(const tchar *filename, int in_fd, struct wim_header *hdr);
 
 extern int
 write_header(const struct wim_header *hdr, int out_fd);
@@ -83,4 +91,10 @@ reopen_wim(WIMStruct *w);
 extern int
 close_wim(WIMStruct *w);
 
+extern int
+can_modify_wim(WIMStruct *wim);
+
+extern int
+can_delete_from_wim(WIMStruct *wim);
+
 #endif /* _WIMLIB_WIM_H */