]> wimlib.net Git - wimlib/blobdiff - include/wimlib/wim.h
new internal image deletion helper
[wimlib] / include / wimlib / wim.h
index fa19c28dada89f34bdcdb094861255f93889e533..a6275fa0669764d71dbc2a3b13939b7af571eb73 100644 (file)
@@ -57,18 +57,10 @@ struct WIMStruct {
        int current_image;
 
        /* Have any images been deleted? */
-       u8 deletion_occurred : 1;
+       u8 image_deletion_occurred : 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;
-
-       u8 guid_set_explicitly : 1;
+       /* Has the underlying WIM file been locked for appending?  */
+       u8 locked_for_append : 1;
 
        /* One of WIMLIB_COMPRESSION_TYPE_*, cached from the header flags. */
        u8 compression_type;
@@ -94,6 +86,11 @@ struct WIMStruct {
        /* Chunk size for writing packed streams; can be set with
         * wimlib_set_output_pack_chunk_size().  */
        u32 out_pack_chunk_size;
+
+       /* Currently registered progress function for this WIMStruct, or NULL if
+        * no progress function is currently registered for this WIMStruct.  */
+       wimlib_progress_func_t progfunc;
+       void *progctx;
 };
 
 static inline bool wim_is_pipable(const WIMStruct *wim)
@@ -111,9 +108,6 @@ static inline bool wim_has_metadata(const WIMStruct *wim)
        return (wim->image_metadata != NULL || wim->hdr.image_count == 0);
 }
 
-extern int
-wim_recalculate_refcnts(WIMStruct *wim);
-
 extern int
 set_wim_hdr_cflags(int ctype, struct wim_header *hdr);
 
@@ -142,23 +136,19 @@ for_image(WIMStruct *wim, int image, int (*visitor)(WIMStruct *));
 extern int
 wim_checksum_unhashed_streams(WIMStruct *wim);
 
+extern int
+delete_wim_image(WIMStruct *wim, int image);
+
 /* Internal open flags (pass to open_wim_as_WIMStruct(), not wimlib_open_wim())
  */
 #define WIMLIB_OPEN_FLAG_FROM_PIPE     0x80000000
-#define WIMLIB_OPEN_MASK_PUBLIC                0x7fffffff
 
 extern int
 open_wim_as_WIMStruct(const void *wim_filename_or_fd, int open_flags,
                      WIMStruct **wim_ret,
-                     wimlib_progress_func_t progress_func);
-
-extern int
-close_wim(WIMStruct *wim);
+                     wimlib_progress_func_t progfunc, void *progctx);
 
 extern int
 can_modify_wim(WIMStruct *wim);
 
-extern int
-can_delete_from_wim(WIMStruct *wim);
-
 #endif /* _WIMLIB_WIM_H */