* @sd: The security data for the image.
*/
int add_new_dentry_tree(WIMStruct *w, struct dentry *root_dentry,
- struct wim_security_data *sd)
+ struct wim_security_data *sd)
{
struct lookup_table_entry *metadata_lte;
struct image_metadata *imd;
struct image_metadata *new_imd;
- int ret;
wimlib_assert(root_dentry != NULL);
new_imd->root_dentry = root_dentry;
new_imd->metadata_lte = metadata_lte;
new_imd->security_data = sd;
- new_imd->modified = true;
+ new_imd->modified = 1;
FREE(w->image_metadata);
- w->image_metadata = imd;
+ w->image_metadata = imd;
w->hdr.image_count++;
-
- /* Change the current image to the new one. There should not be any
- * ways for this to fail, since the image is valid and the dentry tree
- * is already in memory. */
- ret = select_wim_image(w, w->hdr.image_count);
- wimlib_assert(ret == 0);
- return ret;
+ return 0;
err_free_imd:
FREE(imd);
err:
struct dentry *root_dentry = NULL;
struct wim_security_data *sd;
struct capture_config config;
- struct inode_table inode_tab;
- struct hlist_head inode_list;
+ struct image_metadata *imd;
int ret;
if (add_image_flags & WIMLIB_ADD_IMAGE_FLAG_NTFS) {
if (ret != 0)
goto out_free_dentry_tree;
- DEBUG("Inserting dentries into inode table");
- ret = init_inode_table(&inode_tab, 9001);
- if (ret != 0)
- goto out_destroy_imd;
-
- for_dentry_in_tree(root_dentry, inode_table_insert, &inode_tab);
+ imd = &w->image_metadata[w->hdr.image_count - 1];
- DEBUG("Cleaning up the hard link groups");
- ret = fix_inodes(&inode_tab, &inode_list);
- destroy_inode_table(&inode_tab);
+ ret = dentry_tree_fix_inodes(root_dentry, &imd->inode_list);
if (ret != 0)
goto out_destroy_imd;
DEBUG("Assigning hard link group IDs");
- assign_inode_numbers(&inode_list);
- w->image_metadata[w->hdr.image_count - 1].inode_list = inode_list;
+ assign_inode_numbers(&imd->inode_list);
ret = xml_add_image(w, name);
if (ret != 0)