- unsigned total_parts = w->hdr.total_parts;
- int ctype;
- const u8 *guid;
-
- if (total_parts != num_additional_swms + 1) {
- ERROR("`%s' says there are %u parts in the spanned set, "
- "but %s%u part%s provided",
- w->filename, total_parts,
- (num_additional_swms + 1 < total_parts) ? "only " : "",
- num_additional_swms + 1,
- (num_additional_swms) ? "s were" : " was");
- return WIMLIB_ERR_SPLIT_INVALID;
- }
- if (w->hdr.part_number != 1) {
- ERROR("WIM `%s' is not the first part of the split WIM.",
- w->filename);
- return WIMLIB_ERR_SPLIT_INVALID;
- }
- for (unsigned i = 0; i < num_additional_swms; i++) {
- if (additional_swms[i]->hdr.total_parts != total_parts) {
- ERROR("WIM `%s' says there are %u parts in the spanned set, "
- "but %u parts were provided",
- additional_swms[i]->filename,
- additional_swms[i]->hdr.total_parts,
- total_parts);
- return WIMLIB_ERR_SPLIT_INVALID;
- }
- }
-
- /* keep track of ctype and guid just to make sure they are the same for
- * all the WIMs. */
- ctype = wimlib_get_compression_type(w);
- guid = w->hdr.guid;
-
- WIMStruct *parts_to_swms[num_additional_swms];
- ZERO_ARRAY(parts_to_swms);
- for (unsigned i = 0; i < num_additional_swms; i++) {
-
- WIMStruct *swm = additional_swms[i];