X-Git-Url: https://wimlib.net/git/?a=blobdiff_plain;f=src%2Fexport_image.c;h=b62f67c59614a7ae90cad840c32bef1eb419c41d;hb=c6a1140e085f633273fcf47a6462bd9382ce118a;hp=e291ec14bf8f1ca99a6da7bf1490e814d3bcdd7b;hpb=541b65d79e0c73238a25e2c2661711d8593d0684;p=wimlib diff --git a/src/export_image.c b/src/export_image.c index e291ec14..b62f67c5 100644 --- a/src/export_image.c +++ b/src/export_image.c @@ -26,10 +26,11 @@ #include "lookup_table.h" #include "xml.h" -static int inode_allocate_needed_ltes(struct wim_inode *inode, - struct wim_lookup_table *src_lookup_table, - struct wim_lookup_table *dest_lookup_table, - struct list_head *lte_list_head) +static int +inode_allocate_needed_ltes(struct wim_inode *inode, + struct wim_lookup_table *src_lookup_table, + struct wim_lookup_table *dest_lookup_table, + struct list_head *lte_list_head) { struct wim_lookup_table_entry *src_lte, *dest_lte; unsigned i; @@ -53,10 +54,11 @@ static int inode_allocate_needed_ltes(struct wim_inode *inode, return 0; } -static void inode_move_ltes_to_table(struct wim_inode *inode, - struct wim_lookup_table *src_lookup_table, - struct wim_lookup_table *dest_lookup_table, - struct list_head *lte_list_head) +static void +inode_move_ltes_to_table(struct wim_inode *inode, + struct wim_lookup_table *src_lookup_table, + struct wim_lookup_table *dest_lookup_table, + struct list_head *lte_list_head) { struct wim_lookup_table_entry *src_lte, *dest_lte; unsigned i; @@ -92,15 +94,16 @@ static void inode_move_ltes_to_table(struct wim_inode *inode, /* * Copies an image, or all the images, from a WIM file, into another WIM file. */ -WIMLIBAPI int wimlib_export_image(WIMStruct *src_wim, - int src_image, - WIMStruct *dest_wim, - const utf8char *dest_name, - const utf8char *dest_description, - int export_flags, - WIMStruct **additional_swms, - unsigned num_additional_swms, - wimlib_progress_func_t progress_func) +WIMLIBAPI int +wimlib_export_image(WIMStruct *src_wim, + int src_image, + WIMStruct *dest_wim, + const tchar *dest_name, + const tchar *dest_description, + int export_flags, + WIMStruct **additional_swms, + unsigned num_additional_swms, + wimlib_progress_func_t progress_func) { int ret; struct wim_security_data *sd; @@ -165,21 +168,21 @@ WIMLIBAPI int wimlib_export_image(WIMStruct *src_wim, if (!dest_name) { dest_name = wimlib_get_image_name(src_wim, src_image); - DEBUG("Using name `%s' for source image %d", + DEBUG("Using name `%"TS"' for source image %d", dest_name, src_image); } if (!dest_description) { dest_description = wimlib_get_image_description(src_wim, src_image); - DEBUG("Using description `%s' for source image %d", + DEBUG("Using description `%"TS"' for source image %d", dest_description, src_image); } - DEBUG("Exporting image %d from `%s'", src_image, src_wim->filename); + DEBUG("Exporting image %d from `%"TS"'", src_image, src_wim->filename); if (wimlib_image_name_in_use(dest_wim, dest_name)) { - ERROR("There is already an image named `%s' in the " + ERROR("There is already an image named `%"TS"' in the " "destination WIM", dest_name); return WIMLIB_ERR_IMAGE_NAME_COLLISION; } @@ -200,7 +203,7 @@ WIMLIBAPI int wimlib_export_image(WIMStruct *src_wim, ret = select_wim_image(src_wim, src_image); if (ret != 0) { - ERROR("Could not select image %d from the WIM `%s' " + ERROR("Could not select image %d from the WIM `%"TS"' " "to export it", src_image, src_wim->filename); goto out; } @@ -208,10 +211,9 @@ WIMLIBAPI int wimlib_export_image(WIMStruct *src_wim, /* Pre-allocate the new lookup table entries that will be needed. This * way, it's not possible to run out of memory part-way through * modifying the lookup table of the destination WIM. */ - INIT_LIST_HEAD(<e_list_head); 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(<e_list_head); hlist_for_each_entry(inode, cur_node, &src_imd->inode_list, i_hlist) { ret = inode_allocate_needed_ltes(inode, src_wim->lookup_table, @@ -256,7 +258,7 @@ WIMLIBAPI int wimlib_export_image(WIMStruct *src_wim, goto out; out_xml_delete_image: - xml_delete_image(&dest_wim->wim_info, dest_wim->hdr.image_count); + xml_delete_image(&dest_wim->wim_info, dest_wim->hdr.image_count + 1); out_free_ltes: { struct wim_lookup_table_entry *lte, *tmp;