]> wimlib.net Git - wimlib/blobdiff - src/wim.c
Remove WIMLIB_COMPRESSION_TYPE_INVALID from library
[wimlib] / src / wim.c
index 960a9d50aafc5b85bfd37b1fa9b2302d55d20d55..cf7965e7168ffa6c237e96d79e505da9d161ab56 100644 (file)
--- a/src/wim.c
+++ b/src/wim.c
@@ -66,9 +66,7 @@ static u32
 wim_default_pack_chunk_size(int ctype) {
        switch (ctype) {
        case WIMLIB_COMPRESSION_TYPE_LZMS:
-               /* Note: WIMGAPI uses 1 << 26, but lower sizes are compatible.
-                * */
-               return 1U << 25; /* 33554432  */
+               return 1U << 26; /* 67108864  */
        default:
                return 1U << 15; /* 32768     */
        }
@@ -328,8 +326,22 @@ new_image_metadata_array(unsigned num_images)
 }
 
 
-/* Load the metadata for the specified WIM image into memory and set it as the
- * WIMStruct's currently selected WIM image.  */
+/*
+ * Load the metadata for the specified WIM image into memory and set it
+ * as the WIMStruct's currently selected image.
+ *
+ * @wim
+ *     The WIMStruct for the WIM.
+ * @image
+ *     The 1-based index of the image in the WIM to select.
+ *
+ * On success, 0 will be returned, wim->current_image will be set to
+ * @image, and wim_get_current_image_metadata() can be used to retrieve
+ * metadata information for the image.
+ *
+ * On failure, WIMLIB_ERR_INVALID_IMAGE, WIMLIB_ERR_METADATA_NOT_FOUND,
+ * or another error code will be returned.
+ */
 int
 select_wim_image(WIMStruct *wim, int image)
 {
@@ -537,8 +549,6 @@ static int
 set_out_ctype(int ctype, u8 *out_ctype_p)
 {
        switch (ctype) {
-       case WIMLIB_COMPRESSION_TYPE_INVALID:
-               break;
        case WIMLIB_COMPRESSION_TYPE_NONE:
        case WIMLIB_COMPRESSION_TYPE_LZX:
        case WIMLIB_COMPRESSION_TYPE_XPRESS:
@@ -622,6 +632,15 @@ wimlib_set_output_pack_chunk_size(WIMStruct *wim, uint32_t chunk_size)
                                  &wim->out_pack_chunk_size);
 }
 
+WIMLIBAPI void
+wimlib_register_progress_function(WIMStruct *wim,
+                                 wimlib_progress_func_t progfunc,
+                                 void *progctx)
+{
+       wim->progfunc = progfunc;
+       wim->progctx = progctx;
+}
+
 static int
 open_wim_file(const tchar *filename, struct filedes *fd_ret)
 {
@@ -641,8 +660,7 @@ open_wim_file(const tchar *filename, struct filedes *fd_ret)
  * lookup table, and optionally checks the integrity.
  */
 static int
-begin_read(WIMStruct *wim, const void *wim_filename_or_fd,
-          int open_flags, wimlib_progress_func_t progress_func)
+begin_read(WIMStruct *wim, const void *wim_filename_or_fd, int open_flags)
 {
        int ret;
        int xml_num_images;
@@ -743,7 +761,7 @@ begin_read(WIMStruct *wim, const void *wim_filename_or_fd,
        }
 
        if (open_flags & WIMLIB_OPEN_FLAG_CHECK_INTEGRITY) {
-               ret = check_wim_integrity(wim, progress_func);
+               ret = check_wim_integrity(wim);
                if (ret == WIM_INTEGRITY_NONEXISTENT) {
                        WARNING("No integrity information for `%"TS"'; skipping "
                                "integrity check.", wimfile);
@@ -791,7 +809,8 @@ begin_read(WIMStruct *wim, const void *wim_filename_or_fd,
 
 int
 open_wim_as_WIMStruct(const void *wim_filename_or_fd, int open_flags,
-                     WIMStruct **wim_ret, wimlib_progress_func_t progress_func)
+                     WIMStruct **wim_ret,
+                     wimlib_progress_func_t progfunc, void *progctx)
 {
        WIMStruct *wim;
        int ret;
@@ -810,7 +829,10 @@ open_wim_as_WIMStruct(const void *wim_filename_or_fd, int open_flags,
        if (wim == NULL)
                return WIMLIB_ERR_NOMEM;
 
-       ret = begin_read(wim, wim_filename_or_fd, open_flags, progress_func);
+       wim->progfunc = progfunc;
+       wim->progctx = progctx;
+
+       ret = begin_read(wim, wim_filename_or_fd, open_flags);
        if (ret) {
                wimlib_free(wim);
                return ret;
@@ -823,8 +845,9 @@ open_wim_as_WIMStruct(const void *wim_filename_or_fd, int open_flags,
 
 /* API function documented in wimlib.h  */
 WIMLIBAPI int
-wimlib_open_wim(const tchar *wimfile, int open_flags,
-               WIMStruct **wim_ret, wimlib_progress_func_t progress_func)
+wimlib_open_wim_with_progress(const tchar *wimfile, int open_flags,
+                             WIMStruct **wim_ret,
+                             wimlib_progress_func_t progfunc, void *progctx)
 {
        if (open_flags & ~(WIMLIB_OPEN_FLAG_CHECK_INTEGRITY |
                           WIMLIB_OPEN_FLAG_ERROR_IF_SPLIT |
@@ -832,7 +855,15 @@ wimlib_open_wim(const tchar *wimfile, int open_flags,
                return WIMLIB_ERR_INVALID_PARAM;
 
        return open_wim_as_WIMStruct(wimfile, open_flags, wim_ret,
-                                    progress_func);
+                                    progfunc, progctx);
+}
+
+/* API function documented in wimlib.h  */
+WIMLIBAPI int
+wimlib_open_wim(const tchar *wimfile, int open_flags, WIMStruct **wim_ret)
+{
+       return wimlib_open_wim_with_progress(wimfile, open_flags, wim_ret,
+                                            NULL, NULL);
 }
 
 /* Checksum all streams that are unhashed (other than the metadata streams),