- num_images = wimlib_get_num_images(w);
- if (argc == 2 && num_images != 1) {
- imagex_error(T("\"%"TS"\" contains %d images; Please select one "
- "(or all)."), wimfile, num_images);
- usage(APPLY);
- ret = -1;
- goto out;
+ if (argc >= 3) {
+ /* Image explicitly specified. */
+ image = wimlib_resolve_image(wim, argv[1]);
+ ret = verify_image_exists(image, argv[1], wimfile);
+ if (ret)
+ goto out_wimlib_free;
+ target = argv[2];
+ } else {
+ /* No image specified; default to image 1, but only if the WIM
+ * contains exactly one image. */
+ struct wimlib_wim_info info;
+
+ wimlib_get_wim_info(wim, &info);
+ if (info.image_count != 1) {
+ imagex_error(T("\"%"TS"\" contains %d images; "
+ "Please select one (or all)."),
+ wimfile, info.image_count);
+ wimlib_free(wim);
+ goto out_usage;
+ }
+ image = 1;
+ target = argv[1];