]> wimlib.net Git - wimlib/blobdiff - src/export_image.c
overwrite_wim_inplace(): cleanup
[wimlib] / src / export_image.c
index 7e6d2789e198c93475462f5fcb21f265839ed7d3..34564e222e2cd70b1748008fbbb1eaf8fd85c8f4 100644 (file)
@@ -47,7 +47,8 @@ inode_allocate_needed_ltes(struct wim_inode *inode,
                                dest_lte = clone_lookup_table_entry(src_lte);
                                if (!dest_lte)
                                        return WIMLIB_ERR_NOMEM;
-                               list_add_tail(&dest_lte->staging_list, lte_list_head);
+                               list_add_tail(&dest_lte->export_stream_list,
+                                             lte_list_head);
                        }
                }
        }
@@ -76,7 +77,7 @@ inode_move_ltes_to_table(struct wim_inode *inode,
                                list_del(next);
                                dest_lte = container_of(next,
                                                        struct wim_lookup_table_entry,
-                                                       staging_list);
+                                                       export_stream_list);
                                dest_lte->part_number = 1;
                                dest_lte->refcnt = 0;
                                wimlib_assert(hashes_equal(dest_lte->hash, src_lte->hash));
@@ -104,7 +105,6 @@ wimlib_export_image(WIMStruct *src_wim,
        int ret;
        struct wim_lookup_table *joined_tab, *src_wim_tab_save;
        struct wim_image_metadata *src_imd;
-       struct hlist_node *cur_node;
        struct list_head lte_list_head;
        struct wim_inode *inode;
 
@@ -186,6 +186,13 @@ wimlib_export_image(WIMStruct *src_wim,
        if (ret)
                return ret;
 
+       ret = wim_checksum_unhashed_streams(src_wim);
+       if (ret)
+               return ret;
+       ret = wim_checksum_unhashed_streams(dest_wim);
+       if (ret)
+               return ret;
+
        if (num_additional_swms) {
                ret = new_joined_lookup_table(src_wim, additional_swms,
                                              num_additional_swms,
@@ -209,7 +216,7 @@ wimlib_export_image(WIMStruct *src_wim,
        for_lookup_table_entry(src_wim->lookup_table, lte_zero_out_refcnt, NULL);
        src_imd = wim_get_current_image_metadata(src_wim);
        INIT_LIST_HEAD(&lte_list_head);
-       hlist_for_each_entry(inode, cur_node, &src_imd->inode_list, i_hlist) {
+       image_for_each_inode(inode, src_imd) {
                ret = inode_allocate_needed_ltes(inode,
                                                 src_wim->lookup_table,
                                                 dest_wim->lookup_table,
@@ -231,11 +238,12 @@ wimlib_export_image(WIMStruct *src_wim,
        /* The `struct image_metadata' is now referenced by both the @src_wim
         * and the @dest_wim. */
        src_imd->refcnt++;
+       src_imd->modified = 1;
 
        /* All memory allocations have been taken care of, so it's no longer
         * possible for this function to fail.  Go ahead and update the lookup
         * table of the destination WIM and the boot index, if needed. */
-       hlist_for_each_entry(inode, cur_node, &src_imd->inode_list, i_hlist) {
+       image_for_each_inode(inode, src_imd) {
                inode_move_ltes_to_table(inode,
                                         src_wim->lookup_table,
                                         dest_wim->lookup_table,
@@ -251,7 +259,7 @@ out_xml_delete_image:
 out_free_ltes:
        {
                struct wim_lookup_table_entry *lte, *tmp;
-               list_for_each_entry_safe(lte, tmp, &lte_list_head, staging_list)
+               list_for_each_entry_safe(lte, tmp, &lte_list_head, export_stream_list)
                        free_lookup_table_entry(lte);
        }
 out: