]> wimlib.net Git - wimlib/blobdiff - src/resource.c
Use FUSE multi-threaded mode for read-only mounts
[wimlib] / src / resource.c
index 4832030c12adb5c44b90cd429d5deebca6b50098..43ecc0a8d252c3fbf7e66e836102574807e88f52 100644 (file)
@@ -27,6 +27,8 @@
 #include <stdlib.h>
 #include <stdarg.h>
 
+#include "dentry.h"
+
 #ifdef WITH_NTFS_3G
 #include <ntfs-3g/attrib.h>
 #include <ntfs-3g/inode.h>
@@ -39,7 +41,6 @@
 #include "lzx.h"
 #include "xpress.h"
 #include "sha1.h"
-#include "dentry.h"
 #include <unistd.h>
 #include <errno.h>
 #ifdef HAVE_ALLOCA_H
@@ -504,11 +505,8 @@ int read_wim_resource(const struct lookup_table_entry *lte, u8 buf[],
                wimlib_assert(lte->ntfs_loc != NULL);
                wimlib_assert(lte->attr != NULL);
                {
-                       u64 adjusted_offset;
                        if (lte->ntfs_loc->is_reparse_point)
-                               adjusted_offset = offset + 8;
-                       else
-                               adjusted_offset = offset;
+                               offset += 8;
                        if (ntfs_attr_pread(lte->attr, offset, size, buf) != size) {
                                ERROR_WITH_ERRNO("Error reading NTFS attribute "
                                                 "at `%s'",
@@ -1203,7 +1201,7 @@ int read_metadata_resource(WIMStruct *w, struct image_metadata *imd)
        if (ret != 0)
                goto out_free_buf;
 
-       dentry_offset = imd->security_data->total_length + 7 & ~7;
+       dentry_offset = (imd->security_data->total_length + 7) & ~7;
 
        if (dentry_offset == 0) {
                ERROR("Integer overflow while reading metadata resource");
@@ -1222,10 +1220,9 @@ int read_metadata_resource(WIMStruct *w, struct image_metadata *imd)
 
        ret = read_dentry(buf, metadata_len, dentry_offset, dentry);
 
-       /* This is the root dentry, so set its pointers correctly. */
+       /* This is the root dentry, so set its parent to itself. */
        dentry->parent = dentry;
-       dentry->next   = dentry;
-       dentry->prev   = dentry;
+
        if (ret != 0)
                goto out_free_dentry_tree;
        inode_add_dentry(dentry, dentry->d_inode);