]> wimlib.net Git - wimlib/blobdiff - src/extract.c
Update NEWS
[wimlib] / src / extract.c
index 1e31cdb07909fbf309f5f015cf1858c715817dc5..23c9305436a4ac744f635226677d955a35968b53 100644 (file)
@@ -93,7 +93,7 @@ dentry_resolve_and_zero_lte_refcnt(struct wim_dentry *dentry, void *_ctx)
         * "resolve" the inode's streams anyway by allocating new entries.  */
        if (ctx->extract_flags & WIMLIB_EXTRACT_FLAG_FROM_PIPE)
                force = true;
-       ret = inode_resolve_ltes(inode, ctx->wim->lookup_table, force);
+       ret = inode_resolve_streams(inode, ctx->wim->lookup_table, force);
        if (ret)
                return ret;
        for (unsigned i = 0; i <= inode->i_num_ads; i++) {
@@ -669,6 +669,7 @@ extract_file_attributes(const tchar *path, struct apply_ctx *ctx,
        int ret;
 
        if (ctx->ops->set_file_attributes &&
+           !(ctx->extract_flags & WIMLIB_EXTRACT_FLAG_NO_ATTRIBUTES) &&
            !(dentry == ctx->extract_root && ctx->root_dentry_is_special)) {
                u32 attributes = dentry->d_inode->i_attributes;
 
@@ -1508,7 +1509,7 @@ extract_streams_from_pipe(struct apply_ctx *ctx)
 
                if ((found_lte->resource_location != RESOURCE_NONEXISTENT)
                    && !(found_lte->flags & WIM_RESHDR_FLAG_METADATA)
-                   && (needed_lte = lookup_resource(lookup_table, found_lte->hash))
+                   && (needed_lte = lookup_stream(lookup_table, found_lte->hash))
                    && (needed_lte->out_refcnt))
                {
                        tchar *tmpfile_name = NULL;
@@ -1707,17 +1708,6 @@ file_name_valid(utf16lechar *name, size_t num_chars, bool fix)
        return true;
 }
 
-static bool
-dentry_is_dot_or_dotdot(const struct wim_dentry *dentry)
-{
-       const utf16lechar *file_name = dentry->file_name;
-       return file_name != NULL &&
-               file_name[0] == cpu_to_le16('.') &&
-               (file_name[1] == cpu_to_le16('\0') ||
-                (file_name[1] == cpu_to_le16('.') &&
-                 file_name[2] == cpu_to_le16('\0')));
-}
-
 static int
 dentry_mark_skipped(struct wim_dentry *dentry, void *_ignore)
 {
@@ -1755,14 +1745,6 @@ dentry_calculate_extraction_path(struct wim_dentry *dentry, void *_args)
        if (!dentry_is_supported(dentry, &ctx->supported_features))
                goto skip_dentry;
 
-       if (dentry_is_dot_or_dotdot(dentry)) {
-               /* WIM files shouldn't contain . or .. entries.  But if they are
-                * there, don't attempt to extract them. */
-               WARNING("Skipping extraction of unexpected . or .. file "
-                       "\"%"TS"\"", dentry_full_path(dentry));
-               goto skip_dentry;
-       }
-
        if (!ctx->ops->supports_case_sensitive_filenames)
        {
                struct wim_dentry *other;