- if (ret == 0) {
- struct lookup_table_entry *lte;
- struct lookup_table_entry *tmp;
- struct dentry *dentry;
- u64 total_size;
- u64 cur_size;
- u64 next_size;
- u64 one_percent;
- unsigned cur_percent;
-
- total_size = calculate_bytes_to_extract(&stream_list, args.extract_flags);
- one_percent = total_size / 100;
- cur_size = 0;
- next_size = 0;
- cur_percent = 0;
- puts("Extracting files...");
- list_for_each_entry_safe(lte, tmp, &stream_list, staging_list) {
- list_del(<e->staging_list);
- list_for_each_entry(dentry, <e->dentry_list, tmp_list) {
- if ((!dentry->d_inode->extracted_file) &&
- (args.extract_flags & WIMLIB_EXTRACT_FLAG_SHOW_PROGRESS))
- {
- show_stream_op_progress(&cur_size, &next_size,
- total_size, one_percent,
- &cur_percent, lte,
- "extracted");
- }
- ret = extract_dentry(dentry, &args);
- if (ret != 0)
- return ret;
- }
- }
- finish_stream_op_progress(total_size, "extracted");
- } else {