X-Git-Url: https://wimlib.net/git/?p=wimlib;a=blobdiff_plain;f=src%2Fexport_image.c;h=bfeef97ad6b41afc83970afd6315f072e991c4d3;hp=81c66594227c77c4f0cb2a64eeb6153b9c9354fe;hb=cd433ce49f582175063141cc3673840bf321c453;hpb=da295f258b60e1593de305385c0669eac4b76644 diff --git a/src/export_image.c b/src/export_image.c index 81c66594..bfeef97a 100644 --- a/src/export_image.c +++ b/src/export_image.c @@ -28,6 +28,7 @@ #include "wimlib.h" #include "wimlib/dentry.h" #include "wimlib/error.h" +#include "wimlib/inode.h" #include "wimlib/lookup_table.h" #include "wimlib/metadata.h" #include "wimlib/xml.h" @@ -42,7 +43,7 @@ inode_export_streams(struct wim_inode *inode, const u8 *hash; struct wim_lookup_table_entry *src_lte, *dest_lte; - inode_unresolve_ltes(inode); + inode_unresolve_streams(inode); for (i = 0; i <= inode->i_num_ads; i++) { /* Retrieve SHA1 message digest of stream to export. */ @@ -52,14 +53,14 @@ inode_export_streams(struct wim_inode *inode, /* Search for the stream (via SHA1 message digest) in the * destination WIM. */ - dest_lte = __lookup_resource(dest_lookup_table, hash); + dest_lte = lookup_stream(dest_lookup_table, hash); if (!dest_lte) { /* Stream not yet present in destination WIM. Search * for it in the source WIM, then export it into the * destination WIM. */ - src_lte = __lookup_resource(src_lookup_table, hash); + src_lte = lookup_stream(src_lookup_table, hash); if (!src_lte) - return resource_not_found_error(inode, hash); + return stream_not_found_error(inode, hash); dest_lte = clone_lookup_table_entry(src_lte); if (!dest_lte) @@ -112,10 +113,15 @@ wimlib_export_image(WIMStruct *src_wim, u32 orig_dest_image_count; /* Check for sane parameters. */ + if (export_flags & ~(WIMLIB_EXPORT_FLAG_BOOT | + WIMLIB_EXPORT_FLAG_NO_NAMES | + WIMLIB_EXPORT_FLAG_NO_DESCRIPTIONS)) + return WIMLIB_ERR_INVALID_PARAM; + if (src_wim == NULL || dest_wim == NULL) return WIMLIB_ERR_INVALID_PARAM; - if (!wim_has_metadata(src_wim) || !wim_has_metadata(dest_wim)) + if (!wim_has_metadata(dest_wim)) return WIMLIB_ERR_METADATA_NOT_FOUND; /* Destination WIM must be writable. */ @@ -173,7 +179,7 @@ wimlib_export_image(WIMStruct *src_wim, /* Determine destination image name and description. */ if (export_flags & WIMLIB_EXPORT_FLAG_NO_NAMES) { - next_dest_name = NULL; + next_dest_name = T(""); } else if (dest_name) { next_dest_name = dest_name; } else { @@ -184,8 +190,8 @@ wimlib_export_image(WIMStruct *src_wim, DEBUG("Using name \"%"TS"\"", next_dest_name); if (export_flags & WIMLIB_EXPORT_FLAG_NO_DESCRIPTIONS) { - next_dest_description = NULL; - } if (dest_description) { + next_dest_description = T(""); + } else if (dest_description) { next_dest_description = dest_description; } else { next_dest_description = wimlib_get_image_description(