* empty stream.
*
* This check is skipped on split WIMs. */
- if (w->hdr.total_parts == 1) {
+ if (w->hdr.total_parts == 1 && !inode->i_resolved) {
for (unsigned i = 0; i <= inode->i_num_ads; i++) {
struct wim_lookup_table_entry *lte;
const u8 *hash;
- hash = inode_stream_hash_unresolved(inode, i);
+ hash = inode_stream_hash(inode, i);
lte = __lookup_resource(table, hash);
if (!lte && !is_zero_hash(hash)) {
ERROR("Could not find lookup table entry for stream "
unsigned num_unnamed_streams = 0;
for (unsigned i = 0; i <= inode->i_num_ads; i++) {
const u8 *hash;
- hash = inode_stream_hash_unresolved(inode, i);
+ hash = inode_stream_hash(inode, i);
if (inode_stream_name_nbytes(inode, i) == 0 && !is_zero_hash(hash))
num_unnamed_streams++;
}
inode_for_each_dentry(dentry, inode) {
if (dentry_has_short_name(dentry)) {
if (dentry_with_dos_name) {
+ /* This was previously an error, but if we
+ * capture a WIM from UDF on Windows, hard links
+ * are supported but DOS names are automatically
+ * generated for all names for an inode. */
+ #if 0
ERROR("Hard-linked file has a DOS name at "
"both `%"TS"' and `%"TS"'",
dentry_full_path(dentry_with_dos_name),
dentry_full_path(dentry));
return WIMLIB_ERR_INVALID_DENTRY;
+ #else
+ dentry->dos_name_invalid = 1;
+ #endif
}
dentry_with_dos_name = dentry;
}