-/* Determine if the chunk size is valid for the specified compression type. */
-static bool
-wim_chunk_size_valid(u32 chunk_size, int ctype)
-{
- u32 order;
-
- /* Chunk size is meaningless for uncompressed WIMs --- any value is
- * okay. */
- if (ctype == WIMLIB_COMPRESSION_TYPE_NONE)
- return true;
-
- /* Chunk size must be power of 2. */
- if (chunk_size == 0)
- return false;
- order = fls32(chunk_size);
- if (chunk_size != 1U << order)
- return false;
-
- /* Order Size
- * ===== ====
- * 15 32768
- * 16 65536
- * 17 131072
- * 18 262144
- * 19 524288
- * 20 1048576
- * 21 2097152
- * 22 4194304
- * 23 8388608
- * 24 16777216
- * 25 33554432
- * 26 67108864
- */
-
- /* See the documentation for the --chunk-size option of `wimlib-imagex
- * capture' for information about allowed chunk sizes. */
- switch (ctype) {
- case WIMLIB_COMPRESSION_TYPE_LZX:
- return order >= 15 && order <= 21;
- case WIMLIB_COMPRESSION_TYPE_XPRESS:
- return order >= 12 && order <= 16;
- case WIMLIB_COMPRESSION_TYPE_LZMS:
- return order >= 15 && order <= 30;
- }
- return false;
-}
-
-/* Return the default chunk size to use for the specified compression type.
- *
- * See notes above in wim_chunk_size_valid(). */
-static u32
-wim_default_chunk_size(int ctype)
-{
- switch (ctype) {
- case WIMLIB_COMPRESSION_TYPE_LZMS:
- return 1U << 17; /* 131072 */
- default:
- return 1U << 15; /* 32768 */
- }
-}
-
-/*
- * Calls a function on images in the WIM. If @image is WIMLIB_ALL_IMAGES,
- * @visitor is called on the WIM once for each image, with each image selected
- * as the current image in turn. If @image is a certain image, @visitor is
- * called on the WIM only once, with that image selected.
- */
-int
-for_image(WIMStruct *wim, int image, int (*visitor)(WIMStruct *))
-{
- int ret;
- int start;
- int end;
- int i;
-
- if (image == WIMLIB_ALL_IMAGES) {
- start = 1;
- end = wim->hdr.image_count;
- } else if (image >= 1 && image <= wim->hdr.image_count) {
- start = image;
- end = image;
- } else {
- return WIMLIB_ERR_INVALID_IMAGE;
- }
- for (i = start; i <= end; i++) {
- ret = select_wim_image(wim, i);
- if (ret != 0)
- return ret;
- ret = visitor(wim);
- if (ret != 0)
- return ret;
- }
- return 0;
-}
-