X-Git-Url: https://wimlib.net/git/?p=wimlib;a=blobdiff_plain;f=src%2Flookup_table.c;h=553cf33b1c413f4dbfa430291b8439b85abec869;hp=98433ae0af664f37a2425108426a68ef67a1cf85;hb=db52422f8a9e87e7d160b68b3271d26c41f0687e;hpb=2254a0fc3f1d7af1151ee83f3458f44339b5028b diff --git a/src/lookup_table.c b/src/lookup_table.c index 98433ae0..553cf33b 100644 --- a/src/lookup_table.c +++ b/src/lookup_table.c @@ -716,6 +716,7 @@ write_wim_lookup_table_from_stream_list(struct list_head *stream_list, write_resource_flags, comp_ctx); FREE(table_buf); + DEBUG("ret=%d", ret); return ret; } @@ -1030,8 +1031,7 @@ wim_pathname_to_stream(WIMStruct *wim, return -ENOENT; } } else { - lte = inode->i_lte; - stream_idx = 0; + lte = inode_unnamed_stream_resolved(inode, &stream_idx); } out: if (dentry_ret) @@ -1170,19 +1170,28 @@ inode_stream_lte(const struct wim_inode *inode, unsigned stream_idx, } struct wim_lookup_table_entry * -inode_unnamed_lte_resolved(const struct wim_inode *inode) +inode_unnamed_stream_resolved(const struct wim_inode *inode, u16 *stream_idx_ret) { wimlib_assert(inode->i_resolved); for (unsigned i = 0; i <= inode->i_num_ads; i++) { if (inode_stream_name_nbytes(inode, i) == 0 && !is_zero_hash(inode_stream_hash_resolved(inode, i))) { + *stream_idx_ret = i; return inode_stream_lte_resolved(inode, i); } } + *stream_idx_ret = 0; return NULL; } +struct wim_lookup_table_entry * +inode_unnamed_lte_resolved(const struct wim_inode *inode) +{ + u16 stream_idx; + return inode_unnamed_stream_resolved(inode, &stream_idx); +} + struct wim_lookup_table_entry * inode_unnamed_lte_unresolved(const struct wim_inode *inode, const struct wim_lookup_table *table)