]> wimlib.net Git - wimlib/blobdiff - src/wim.c
imagex-apply.1 updates
[wimlib] / src / wim.c
index 1a159578a0338da0ac08ba61e8de2524f7eec6a1..68e54bb85f6ad827eb6849590bb0b43dfa0b7573 100644 (file)
--- a/src/wim.c
+++ b/src/wim.c
@@ -259,7 +259,8 @@ WIMLIBAPI int wimlib_resolve_image(WIMStruct *w, const char *image_name_or_num)
        if (!image_name_or_num)
                return WIM_NO_IMAGE;
 
-       if (strcmp(image_name_or_num, "all") == 0)
+       if (strcmp(image_name_or_num, "all") == 0
+           || strcmp(image_name_or_num, "*") == 0)
                return WIM_ALL_IMAGES;
        image = strtol(image_name_or_num, &p, 10);
        if (p != image_name_or_num && *p == '\0') {
@@ -328,6 +329,14 @@ WIMLIBAPI void wimlib_print_available_images(const WIMStruct *w, int image)
  * not WIM_NO_IMAGE. */
 WIMLIBAPI int wimlib_print_metadata(WIMStruct *w, int image)
 {
+       if (!w)
+               return WIMLIB_ERR_INVALID_PARAM;
+       if (w->hdr.part_number != 1) {
+               ERROR("We cannot show the metadata from part %hu of a %hu-part split WIM.",
+                      w->hdr.part_number, w->hdr.total_parts);
+               ERROR("Select the first part of the split WIM to see the metadata.");
+               return WIMLIB_ERR_SPLIT_UNSUPPORTED;
+       }
        if (image == WIM_ALL_IMAGES)
                DEBUG("Printing metadata for all images");
        else
@@ -337,12 +346,26 @@ WIMLIBAPI int wimlib_print_metadata(WIMStruct *w, int image)
 
 WIMLIBAPI int wimlib_print_files(WIMStruct *w, int image)
 {
+       if (!w)
+               return WIMLIB_ERR_INVALID_PARAM;
+       if (w->hdr.part_number != 1) {
+               ERROR("We cannot list the files from part %hu of a %hu-part split WIM",
+                      w->hdr.part_number, w->hdr.total_parts);
+               ERROR("Select the first part of the split WIM if you'd like to list the files.");
+               return WIMLIB_ERR_SPLIT_UNSUPPORTED;
+       }
        return for_image(w, image, print_files);
 }
 
 /* Sets the index of the bootable image. */
 WIMLIBAPI int wimlib_set_boot_idx(WIMStruct *w, int boot_idx)
 {
+       if (!w)
+               return WIMLIB_ERR_INVALID_PARAM;
+       if (w->hdr.total_parts != 1) {
+               ERROR("We cannot modify the boot index of a split WIM");
+               return WIMLIB_ERR_SPLIT_UNSUPPORTED;
+       }
        if (boot_idx < 0 || boot_idx > w->hdr.image_count)
                return WIMLIB_ERR_INVALID_IMAGE;
        w->hdr.boot_idx = boot_idx;
@@ -535,7 +558,7 @@ WIMLIBAPI int wimlib_open_wim(const char *wim_file, int flags,
  * closes all files associated with the WIMStruct.  */
 WIMLIBAPI void wimlib_free(WIMStruct *w)
 {
-       DEBUG("Freeing WIMStruct");
+       DEBUG2("Freeing WIMStruct");
 
        if (!w)
                return;