X-Git-Url: https://wimlib.net/git/?p=wimlib;a=blobdiff_plain;f=src%2Fsplit.c;h=d1317cf9d44f0ce82b810e65b1f53f28852d43c7;hp=167105eb47a68ec982741158624deb5956c92480;hb=0a5a590bc1e8619efd1a0345adaf56a69027b44b;hpb=f24f8409b041727329e980fdc81e84a7c9b00e5b diff --git a/src/split.c b/src/split.c index 167105eb..d1317cf9 100644 --- a/src/split.c +++ b/src/split.c @@ -115,7 +115,7 @@ write_split_wim(WIMStruct *orig_wim, const tchar *swm_name, &progress); } - part_write_flags = write_flags & WIMLIB_WRITE_MASK_PUBLIC; + part_write_flags = write_flags; part_write_flags |= WIMLIB_WRITE_FLAG_USE_EXISTING_TOTALBYTES; if (part_number != 1) part_write_flags |= WIMLIB_WRITE_FLAG_NO_METADATA; @@ -148,8 +148,15 @@ add_stream_to_swm(struct wim_lookup_table_entry *lte, void *_swm_info) struct swm_info *swm_info = _swm_info; u64 stream_size; - /* TODO */ - stream_size = lte->rspec->size_in_wim; + if (lte_is_partial(lte)) { + ERROR("Splitting of WIM containing packed streams is not supported.\n" + " Export it in the default format first."); + return WIMLIB_ERR_UNSUPPORTED; + } + if (lte->resource_location == RESOURCE_IN_WIM) + stream_size = lte->rspec->size_in_wim; + else + stream_size = lte->size; /* - Start first part if no parts have been started so far; * - Start next part if adding this stream exceeds maximum part size, @@ -204,6 +211,9 @@ wimlib_split(WIMStruct *wim, const tchar *swm_name, if (swm_name == NULL || swm_name[0] == T('\0') || part_size == 0) return WIMLIB_ERR_INVALID_PARAM; + if (write_flags & ~WIMLIB_WRITE_MASK_PUBLIC) + return WIMLIB_ERR_INVALID_PARAM; + if (!wim_has_metadata(wim)) return WIMLIB_ERR_METADATA_NOT_FOUND;