IMAGEX_NORPFIX_OPTION,
IMAGEX_NOCHECK_OPTION,
IMAGEX_NO_ACLS_OPTION,
- IMAGEX_NO_PACK_STREAMS_OPTION,
IMAGEX_NOT_PIPABLE_OPTION,
IMAGEX_PACK_STREAMS_OPTION,
IMAGEX_PATH_OPTION,
{T("nocheck"), no_argument, NULL, IMAGEX_NOCHECK_OPTION},
{T("no-check"), no_argument, NULL, IMAGEX_NOCHECK_OPTION},
{T("compress"), required_argument, NULL, IMAGEX_COMPRESS_OPTION},
+ {T("pack-streams"),no_argument, NULL, IMAGEX_PACK_STREAMS_OPTION},
+ {T("chunk-size"), required_argument, NULL, IMAGEX_CHUNK_SIZE_OPTION},
{T("ref"), required_argument, NULL, IMAGEX_REF_OPTION},
{T("threads"), required_argument, NULL, IMAGEX_THREADS_OPTION},
{T("rebuild"), no_argument, NULL, IMAGEX_REBUILD_OPTION},
{T("recompress-slow"), no_argument, NULL, IMAGEX_COMPRESS_SLOW_OPTION},
{T("chunk-size"), required_argument, NULL, IMAGEX_CHUNK_SIZE_OPTION},
{T("pack-streams"),no_argument, NULL, IMAGEX_PACK_STREAMS_OPTION},
- {T("no-pack-streams"), no_argument, NULL, IMAGEX_NO_PACK_STREAMS_OPTION},
{T("threads"), required_argument, NULL, IMAGEX_THREADS_OPTION},
{T("pipable"), no_argument, NULL, IMAGEX_PIPABLE_OPTION},
{T("not-pipable"), no_argument, NULL, IMAGEX_NOT_PIPABLE_OPTION},
bool wim_is_new;
STRING_SET(refglobs);
unsigned num_threads = 0;
+ uint32_t chunk_size = UINT32_MAX;
for_opt(c, export_options) {
switch (c) {
if (compression_type == WIMLIB_COMPRESSION_TYPE_INVALID)
goto out_err;
break;
+ case IMAGEX_PACK_STREAMS_OPTION:
+ write_flags |= WIMLIB_WRITE_FLAG_PACK_STREAMS;
+ break;
+ case IMAGEX_CHUNK_SIZE_OPTION:
+ chunk_size = parse_chunk_size(optarg);
+ if (chunk_size == UINT32_MAX)
+ goto out_err;
+ break;
case IMAGEX_REF_OPTION:
ret = string_set_append(&refglobs, optarg);
if (ret)
if (ret)
goto out_free_src_wim;
- wimlib_set_output_chunk_size(dest_wim, src_info.chunk_size);
+ /* Use same chunk size if compression type is the same. */
+ if (compression_type == src_info.compression_type &&
+ chunk_size == UINT32_MAX)
+ wimlib_set_output_chunk_size(dest_wim, src_info.chunk_size);
+ }
+
+ if (chunk_size != UINT32_MAX) {
+ /* Set destination chunk size. */
+ ret = wimlib_set_output_chunk_size(dest_wim, chunk_size);
+ if (ret)
+ goto out_free_dest_wim;
}
image = wimlib_resolve_image(src_wim, src_image_num_or_name);
write_flags |= WIMLIB_WRITE_FLAG_PACK_STREAMS;
write_flags |= WIMLIB_WRITE_FLAG_RECOMPRESS;
break;
- case IMAGEX_NO_PACK_STREAMS_OPTION:
- write_flags |= WIMLIB_WRITE_FLAG_NO_PACK_STREAMS;
- break;
case IMAGEX_THREADS_OPTION:
num_threads = parse_num_threads(optarg);
if (num_threads == UINT_MAX)