- /* 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;
-
- {
- /* parts_to_swms is not allocated at function scope because it
- * should only be allocated after num_additional_swms was
- * checked to be the same as w->hdr.total_parts. Otherwise, it
- * could be unexpectedly high and cause a stack overflow. */
- 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];
-
- if (wimlib_get_compression_type(swm) != ctype) {
- ERROR("The split WIMs do not all have the same "
- "compression type");
- return WIMLIB_ERR_SPLIT_INVALID;
- }
- if (memcmp(guid, swm->hdr.guid, WIM_GID_LEN) != 0) {
- ERROR("The split WIMs do not all have the same "
- "GUID");
- return WIMLIB_ERR_SPLIT_INVALID;
- }
- if (swm->hdr.part_number == 1) {
- ERROR("WIMs `%"TS"' and `%"TS"' both are marked "
- "as the first WIM in the spanned set",
- w->filename, swm->filename);
- return WIMLIB_ERR_SPLIT_INVALID;
- }
- if (swm->hdr.part_number == 0 ||
- swm->hdr.part_number > total_parts)
- {
- ERROR("WIM `%"TS"' says it is part %u in the "
- "spanned set, but the part number must "
- "be in the range [1, %u]",
- swm->filename, swm->hdr.part_number, total_parts);
- return WIMLIB_ERR_SPLIT_INVALID;
- }
- if (parts_to_swms[swm->hdr.part_number - 2])
- {
- ERROR("`%"TS"' and `%"TS"' are both marked as "
- "part %u of %u in the spanned set",
- parts_to_swms[swm->hdr.part_number - 2]->filename,
- swm->filename,
- swm->hdr.part_number,
- total_parts);
- return WIMLIB_ERR_SPLIT_INVALID;
- } else {
- parts_to_swms[swm->hdr.part_number - 2] = swm;
- }
- }
+ for_blob_in_table(wim->blob_table, append_blob_to_list, &blob_list);
+
+ memset(&progress, 0, sizeof(progress));
+
+ progress.verify_streams.wimfile = wim->filename;
+ list_for_each_entry(blob, &blob_list, extraction_list) {
+ progress.verify_streams.total_streams++;
+ progress.verify_streams.total_bytes += blob->size;