cur_entry->refcnt = le32_to_cpu(disk_entry->refcnt);
copy_hash(cur_entry->hash, disk_entry->hash);
+ if (cur_entry->resource_entry.flags & WIM_RESHDR_FLAG_COMPRESSED)
+ cur_entry->compression_type = w->compression_type;
+ else
+ BUILD_BUG_ON(WIMLIB_COMPRESSION_TYPE_NONE != 0);
+
if (cur_entry->part_number != w->hdr.part_number) {
WARNING("A lookup table entry in part %hu of the WIM "
"points to part %hu (ignoring it)",
inode = dentry->d_inode;
- wimlib_assert(inode->i_resolved);
+ if (!inode->i_resolved)
+ if (inode_resolve_ltes(inode, w->lookup_table))
+ return -EIO;
if (!(lookup_flags & LOOKUP_FLAG_DIRECTORY_OK)
&& inode_is_directory(inode))
}
#endif
-/*
- * XXX Probably should store the compression type directly in the lookup table
- * entry
- */
-int
-wim_resource_compression_type(const struct wim_lookup_table_entry *lte)
-{
- if (!(lte->resource_entry.flags & WIM_RESHDR_FLAG_COMPRESSED)
- || lte->resource_location != RESOURCE_IN_WIM)
- return WIMLIB_COMPRESSION_TYPE_NONE;
- return wimlib_get_compression_type(lte->wim);
-}
-
/* Resolve an inode's lookup table entries
*
* This replaces the SHA1 hash fields (which are used to lookup an entry in the
int
inode_resolve_ltes(struct wim_inode *inode, struct wim_lookup_table *table)
{
- int ret;
const u8 *hash;
if (!inode->i_resolved) {