From c3fc666144a2c0ee61953391548aa852b9eaad8e Mon Sep 17 00:00:00 2001 From: Eric Biggers Date: Sun, 28 Apr 2013 13:09:56 -0500 Subject: [PATCH 1/1] maybe_apply_dentry(): Fix NO_STREAMS case --- src/extract_image.c | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) 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) { -- 2.43.0