]> wimlib.net Git - wimlib/blobdiff - src/resource.c
Calculate SHA1 md of NTFS reparse points correctly
[wimlib] / src / resource.c
index 01d481df0f97057a074e7168270e0616e9359c2e..51bde70822c7ab33e5341ef33fdb63cd0e64fa83 100644 (file)
@@ -419,6 +419,7 @@ u8 *put_resource_entry(u8 *p, const struct resource_entry *entry)
        return p;
 }
 
+#ifdef WITH_FUSE
 static FILE *wim_get_fp(WIMStruct *w)
 {
        pthread_mutex_lock(&w->fp_tab_mutex);
@@ -469,6 +470,7 @@ out:
        pthread_mutex_unlock(&w->fp_tab_mutex);
        return ret;
 }
+#endif
 
 /*
  * Reads some data from the resource corresponding to a WIM lookup table entry.
@@ -501,11 +503,15 @@ int read_wim_resource(const struct lookup_table_entry *lte, u8 buf[],
                 * or uncompressed. */
                wimlib_assert(lte->wim != NULL);
 
+               #ifdef WITH_FUSE
                if (flags & WIMLIB_RESOURCE_FLAG_MULTITHREADED) {
                        fp = wim_get_fp(lte->wim);
                        if (!fp)
                                return WIMLIB_ERR_OPEN;
-               } else {
+               } else
+               #endif
+               {
+                       wimlib_assert(!(flags & WIMLIB_RESOURCE_FLAG_MULTITHREADED));
                        wimlib_assert(lte->wim->fp != NULL);
                        fp = lte->wim->fp;
                }
@@ -527,11 +533,13 @@ int read_wim_resource(const struct lookup_table_entry *lte, u8 buf[],
                                                       lte->resource_entry.original_size,
                                                       lte->resource_entry.offset,
                                                       ctype, size, offset, buf);
+       #ifdef WITH_FUSE
                if (flags & WIMLIB_RESOURCE_FLAG_MULTITHREADED) {
                        int ret2 = wim_release_fp(lte->wim, fp);
                        if (ret == 0)
                                ret = ret2;
                }
+       #endif
                break;
        case RESOURCE_IN_STAGING_FILE:
        case RESOURCE_IN_FILE_ON_DISK:
@@ -566,17 +574,15 @@ int read_wim_resource(const struct lookup_table_entry *lte, u8 buf[],
        case RESOURCE_IN_NTFS_VOLUME:
                wimlib_assert(lte->ntfs_loc != NULL);
                wimlib_assert(lte->attr != NULL);
-               {
-                       if (lte->ntfs_loc->is_reparse_point)
-                               offset += 8;
-                       if (ntfs_attr_pread(lte->attr, offset, size, buf) != size) {
-                               ERROR_WITH_ERRNO("Error reading NTFS attribute "
-                                                "at `%s'",
-                                                lte->ntfs_loc->path_utf8);
-                               ret = WIMLIB_ERR_NTFS_3G;
-                       }
-                       break;
+               if (lte->ntfs_loc->is_reparse_point)
+                       offset += 8;
+               if (ntfs_attr_pread(lte->attr, offset, size, buf) != size) {
+                       ERROR_WITH_ERRNO("Error reading NTFS attribute "
+                                        "at `%s'",
+                                        lte->ntfs_loc->path_utf8);
+                       ret = WIMLIB_ERR_NTFS_3G;
                }
+               break;
 #endif
        default:
                wimlib_assert(0);