(full_path_nchars - args->wim_source_path_nchars) + 1];
p = output_path;
- /*print_dentry(dentry, NULL);*/
- /*ERROR("%"TS" %"TS, args->target, dentry->_full_path);*/
- /*ERROR("");*/
-
tmemcpy(p, args->target, args->target_nchars);
p += args->target_nchars;
lte = inode_unnamed_lte_resolved(inode);
if (lte) {
- maybe_add_stream_for_extraction(lte, stream_list);
+ if (!inode->i_visited)
+ maybe_add_stream_for_extraction(lte, stream_list);
list_add_tail(&dentry->tmp_list, <e->lte_dentry_list);
dentry_added = true;
}
if (inode->i_ads_entries[i].stream_name_nbytes != 0) {
lte = inode->i_ads_entries[i].lte;
if (lte) {
- maybe_add_stream_for_extraction(lte,
- stream_list);
+ if (!inode->i_visited) {
+ maybe_add_stream_for_extraction(lte,
+ stream_list);
+ }
if (!dentry_added) {
list_add_tail(&dentry->tmp_list,
<e->lte_dentry_list);
}
}
}
+ inode->i_visited = 1;
return 0;
}
dentry_reset_needs_extraction(struct wim_dentry *dentry, void *_ignore)
{
dentry->needs_extraction = 0;
+ dentry->d_inode->i_visited = 0;
return 0;
}
WIMLIBAPI int
wimlib_extract_files(WIMStruct *wim,
int image,
- int default_extract_flags,
const struct wimlib_extract_command *cmds,
size_t num_cmds,
+ int default_extract_flags,
WIMStruct **additional_swms,
unsigned num_additional_swms,
wimlib_progress_func_t progress_func)