]> wimlib.net Git - wimlib/blobdiff - src/resource.c
Cache compression type in WIMStruct and wim_lookup_table_entry
[wimlib] / src / resource.c
index d60f5476ebadd9557e948e6c7e823f5d30e536b5..84d4441bb26add7738f25cee44b3af044e97e145 100644 (file)
@@ -97,8 +97,8 @@ read_compressed_resource(int in_fd,
 
        /* Calculate how many chunks the resource consists of in its entirety.
         * */
-       u64 num_chunks = (resource_uncompressed_size + WIM_CHUNK_SIZE - 1) /
-                                                               WIM_CHUNK_SIZE;
+       u64 num_chunks = DIV_ROUND_UP(resource_uncompressed_size, WIM_CHUNK_SIZE);
+
        /* As mentioned, the first chunk has no entry in the chunk table. */
        u64 num_chunk_entries = num_chunks - 1;
 
@@ -460,7 +460,7 @@ read_partial_wim_resource(const struct wim_lookup_table_entry *lte,
                                               lte->resource_entry.size,
                                               lte->resource_entry.original_size,
                                               lte->resource_entry.offset,
-                                              wimlib_get_compression_type(wim),
+                                              wim->compression_type,
                                               size,
                                               offset,
                                               cb,
@@ -691,13 +691,13 @@ extract_wim_resource(const struct wim_lookup_table_entry *lte,
                        u8 hash[SHA1_HASH_SIZE];
                        sha1_final(hash, &ctx.sha_ctx);
                        if (!hashes_equal(hash, lte->hash)) {
-                       #ifdef ENABLE_ERROR_MESSAGES
-                               ERROR("Invalid SHA1 message digest "
-                                     "on the following WIM resource:");
-                               print_lookup_table_entry(lte, stderr);
-                               if (lte->resource_location == RESOURCE_IN_WIM)
-                                       ERROR("The WIM file appears to be corrupt!");
-                       #endif
+                               if (wimlib_print_errors) {
+                                       ERROR("Invalid SHA1 message digest "
+                                             "on the following WIM resource:");
+                                       print_lookup_table_entry(lte, stderr);
+                                       if (lte->resource_location == RESOURCE_IN_WIM)
+                                               ERROR("The WIM file appears to be corrupt!");
+                               }
                                ret = WIMLIB_ERR_INVALID_RESOURCE_HASH;
                        }
                }