X-Git-Url: https://wimlib.net/git/?a=blobdiff_plain;f=src%2Fdentry.c;h=235971106daed81876ea754f1778d3ac85b97f0c;hb=31f38a9a7a9ed5dc2c32bbb5fecd4050809a561c;hp=32c83570b7575744b74008b061a64df3398d2304;hpb=63a5804943519281f206ca0fefacfe2b99fc9958;p=wimlib diff --git a/src/dentry.c b/src/dentry.c index 32c83570..23597110 100644 --- a/src/dentry.c +++ b/src/dentry.c @@ -192,7 +192,7 @@ struct ads_entry *inode_add_ads(struct inode *inode, const char *stream_name) inode->ads_entries = ads_entries; new_entry = new_ads_entry(stream_name); - if (new_entry) + if (!new_entry) return NULL; inode->num_ads = num_ads; ads_entries[num_ads - 1] = new_entry; @@ -600,12 +600,16 @@ err: return NULL; } -struct dentry *new_dentry_with_inode(const char *name) + +static struct dentry *__new_dentry_with_inode(const char *name, bool timeless) { struct dentry *dentry; dentry = new_dentry(name); if (dentry) { - dentry->inode = new_inode(); + if (timeless) + dentry->inode = new_timeless_inode(); + else + dentry->inode = new_inode(); if (dentry->inode) { inode_add_dentry(dentry, dentry->inode); } else { @@ -616,6 +620,16 @@ struct dentry *new_dentry_with_inode(const char *name) return dentry; } +struct dentry *new_dentry_with_timeless_inode(const char *name) +{ + return __new_dentry_with_inode(name, true); +} + +struct dentry *new_dentry_with_inode(const char *name) +{ + return __new_dentry_with_inode(name, false); +} + void free_ads_entry(struct ads_entry *entry) { if (entry) { @@ -1687,7 +1701,7 @@ int read_dentry_tree(const u8 metadata_resource[], u64 metadata_resource_len, child->parent = dentry; prev_child = child; - list_add(&child->inode_dentry_list, &child->inode->dentry_list); + inode_add_dentry(child, child->inode); /* If there are children of this child, call this procedure * recursively. */