From: Eric Biggers Date: Sun, 28 Apr 2013 18:09:56 +0000 (-0500) Subject: maybe_apply_dentry(): Fix NO_STREAMS case X-Git-Tag: v1.3.3~9 X-Git-Url: https://wimlib.net/git/?p=wimlib;a=commitdiff_plain;h=c3fc666144a2c0ee61953391548aa852b9eaad8e maybe_apply_dentry(): Fix NO_STREAMS case --- diff --git a/src/extract_image.c b/src/extract_image.c index e1096647..b6eeaf19 100644 --- a/src/extract_image.c +++ b/src/extract_image.c @@ -555,8 +555,9 @@ apply_dentry_timestamps_normal(struct wim_dentry *dentry, void *arg) #endif } -/* Extract a dentry if it hasn't already been extracted, and either the dentry - * has no streams or WIMLIB_EXTRACT_FLAG_NO_STREAMS is not specified. */ +/* Extract a dentry if it hasn't already been extracted and either + * WIMLIB_EXTRACT_FLAG_NO_STREAMS is not specified, or the dentry is a directory + * and/or has no unnamed stream. */ static int maybe_apply_dentry(struct wim_dentry *dentry, void *arg) { @@ -566,11 +567,10 @@ maybe_apply_dentry(struct wim_dentry *dentry, void *arg) if (dentry->is_extracted) return 0; - if (args->extract_flags & WIMLIB_EXTRACT_FLAG_NO_STREAMS) - if (inode_unnamed_lte_resolved(dentry->d_inode) && - !(dentry->d_inode->i_attributes & (FILE_ATTRIBUTE_DIRECTORY | - FILE_ATTRIBUTE_ENCRYPTED))) - return 0; + if (args->extract_flags & WIMLIB_EXTRACT_FLAG_NO_STREAMS && + !dentry_is_directory(dentry) && + inode_unnamed_lte_resolved(dentry->d_inode) != NULL) + return 0; if ((args->extract_flags & WIMLIB_EXTRACT_FLAG_VERBOSE) && args->progress_func) {