]> wimlib.net Git - wimlib/blobdiff - src/export_image.c
Update char encoding docs
[wimlib] / src / export_image.c
index 6b241f3ae3491d777d80ea4aa7bf36fcd9460f1a..b62f67c59614a7ae90cad840c32bef1eb419c41d 100644 (file)
@@ -3,7 +3,7 @@
  */
 
 /*
- * Copyright (C) 2012, 2013 Biggers
+ * Copyright (C) 2012, 2013 Eric Biggers
  *
  * This file is part of wimlib, a library for working with WIM files.
  *
 #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 char *dest_name,
-                                 const char *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(&lte_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(&lte_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;