WIM chunk size: Calculate with existing macros when possible
authorEric Biggers <ebiggers3@gmail.com>
Fri, 17 May 2013 20:02:56 +0000 (15:02 -0500)
committerEric Biggers <ebiggers3@gmail.com>
Fri, 17 May 2013 20:02:56 +0000 (15:02 -0500)
include/wimlib/lookup_table.h
src/resource.c
src/write.c

index 2b2cfcd..d6bd5ee 100644 (file)
@@ -259,7 +259,7 @@ wim_resource_size(const struct wim_lookup_table_entry *lte)
 static inline u64
 wim_resource_chunks(const struct wim_lookup_table_entry *lte)
 {
-       return (wim_resource_size(lte) + WIM_CHUNK_SIZE - 1) / WIM_CHUNK_SIZE;
+       return DIV_ROUND_UP(wim_resource_size(lte), WIM_CHUNK_SIZE);
 }
 
 static inline u64
index d60f547..29bfcd7 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;
 
index 8451b39..fde7e93 100644 (file)
@@ -104,7 +104,7 @@ begin_wim_resource_chunk_tab(const struct wim_lookup_table_entry *lte,
                             struct chunk_table **chunk_tab_ret)
 {
        u64 size = wim_resource_size(lte);
-       u64 num_chunks = (size + WIM_CHUNK_SIZE - 1) / WIM_CHUNK_SIZE;
+       u64 num_chunks = wim_resource_chunks(lte);
        size_t alloc_size = sizeof(struct chunk_table) + num_chunks * sizeof(u64);
        struct chunk_table *chunk_tab = CALLOC(1, alloc_size);
 
@@ -118,7 +118,7 @@ begin_wim_resource_chunk_tab(const struct wim_lookup_table_entry *lte,
        chunk_tab->file_offset = file_offset;
        chunk_tab->num_chunks = num_chunks;
        chunk_tab->original_resource_size = size;
-       chunk_tab->bytes_per_chunk_entry = (size >= (1ULL << 32)) ? 8 : 4;
+       chunk_tab->bytes_per_chunk_entry = (size > (1ULL << 32)) ? 8 : 4;
        chunk_tab->table_disk_size = chunk_tab->bytes_per_chunk_entry *
                                     (num_chunks - 1);
        chunk_tab->cur_offset = 0;