]> wimlib.net Git - wimlib/blobdiff - src/export_image.c
NTFS-3g apply: Open extracted files by MFT reference
[wimlib] / src / export_image.c
index a948ab79a528b69a0ff926398434b3f05d888370..17c4f7dd8f3e06f45ef191b62263ef44125b99c0 100644 (file)
  * along with wimlib; if not, see http://www.gnu.org/licenses/.
  */
 
-#include "wimlib_internal.h"
-#include "dentry.h"
-#include "lookup_table.h"
-#include "xml.h"
+#ifdef HAVE_CONFIG_H
+#  include "config.h"
+#endif
+
+#include "wimlib.h"
+#include "wimlib/dentry.h"
+#include "wimlib/error.h"
+#include "wimlib/lookup_table.h"
+#include "wimlib/metadata.h"
+#include "wimlib/swm.h"
+#include "wimlib/xml.h"
 
 static int
 inode_allocate_needed_ltes(struct wim_inode *inode,
@@ -88,9 +95,7 @@ inode_move_ltes_to_table(struct wim_inode *inode,
        }
 }
 
-/*
- * Exports an image, or all the images, from a WIM file, into another WIM file.
- */
+/* API function documented in wimlib.h  */
 WIMLIBAPI int
 wimlib_export_image(WIMStruct *src_wim,
                    int src_image,
@@ -107,11 +112,9 @@ wimlib_export_image(WIMStruct *src_wim,
        struct list_head lte_list_head;
        struct wim_inode *inode;
 
-       if (dest_wim->hdr.total_parts != 1) {
-               ERROR("Exporting an image to a split WIM is "
-                     "unsupported");
-               return WIMLIB_ERR_SPLIT_UNSUPPORTED;
-       }
+       ret = can_modify_wim(dest_wim);
+       if (ret)
+               return ret;
 
        if (src_image == WIMLIB_ALL_IMAGES) {
                if (src_wim->hdr.image_count > 1) {
@@ -250,6 +253,7 @@ wimlib_export_image(WIMStruct *src_wim,
                 * the flag is set on the source WIM. */
                dest_wim->hdr.flags |= WIM_HDR_FLAG_RP_FIX;
        }
+       DEBUG("Successfully exported image.");
        ret = 0;
        goto out;
 out_xml_delete_image: