X-Git-Url: https://wimlib.net/git/?a=blobdiff_plain;f=src%2Fsplit.c;h=2688e7f63c2a3496e9e1cbfbdfc6990ad849bc2e;hb=d9675dd5814394373d9871c6e9b7b35325b3d21d;hp=dd4ba27874603ea83addeca310149b83c31435aa;hpb=df1050ef86e54f027912a15fe60bf67c8ab43d2c;p=wimlib diff --git a/src/split.c b/src/split.c index dd4ba278..2688e7f6 100644 --- a/src/split.c +++ b/src/split.c @@ -148,7 +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; - stream_size = lte->resource_entry.size; + 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, @@ -158,7 +166,7 @@ add_stream_to_swm(struct wim_lookup_table_entry *lte, void *_swm_info) if (swm_info->num_parts == 0 || ((swm_info->parts[swm_info->num_parts - 1].size + stream_size >= swm_info->max_part_size) - && !((lte->resource_entry.flags & WIM_RESHDR_FLAG_METADATA) || + && !((lte->flags & WIM_RESHDR_FLAG_METADATA) || swm_info->parts[swm_info->num_parts - 1].size == 0))) { if (swm_info->num_parts == swm_info->num_alloc_parts) { @@ -182,7 +190,7 @@ add_stream_to_swm(struct wim_lookup_table_entry *lte, void *_swm_info) swm_info->parts[swm_info->num_parts - 1].size = 0; } swm_info->parts[swm_info->num_parts - 1].size += stream_size; - if (!(lte->resource_entry.flags & WIM_RESHDR_FLAG_METADATA)) { + if (!(lte->flags & WIM_RESHDR_FLAG_METADATA)) { list_add_tail(<e->write_streams_list, &swm_info->parts[swm_info->num_parts - 1].stream_list); }