]> wimlib.net Git - wimlib/blobdiff - src/add_image.c
Add WIMLIB_EXTRACT_FLAG_WIMBOOT
[wimlib] / src / add_image.c
index a06ee939cbb9b68c44ad4d3d40ed08231022220c..1d826fb8c9a70a4b663c5c9f47237a6bd9708162 100644 (file)
@@ -139,7 +139,8 @@ capture_sources_to_add_cmds(const struct wimlib_capture_source *sources,
                              sources[i].fs_source_path,
                              sources[i].wim_target_path);
                        add_cmds[i].op = WIMLIB_UPDATE_OP_ADD;
-                       add_cmds[i].add.add_flags = add_flags;
+                       add_cmds[i].add.add_flags = add_flags & ~(WIMLIB_ADD_FLAG_BOOT |
+                                                                 WIMLIB_ADD_FLAG_WIMBOOT);
                        add_cmds[i].add.config = (struct wimlib_capture_config*)config;
                        add_cmds[i].add.fs_source_path = sources[i].fs_source_path;
                        add_cmds[i].add.wim_target_path = sources[i].wim_target_path;
@@ -164,6 +165,10 @@ wimlib_add_image_multisource(WIMStruct *wim,
        DEBUG("Adding image \"%"TS"\" from %zu sources (add_flags=%#x)",
              name, num_sources, add_flags);
 
+       for (size_t i = 0; i < num_sources; i++)
+               if (sources[i].reserved != 0)
+                       return WIMLIB_ERR_INVALID_PARAM;
+
        /* Add the new image (initially empty) */
        ret = wimlib_add_empty_image(wim, name, NULL);
        if (ret)
@@ -187,6 +192,8 @@ wimlib_add_image_multisource(WIMStruct *wim,
        /* Success; set boot index if requested. */
        if (add_flags & WIMLIB_ADD_FLAG_BOOT)
                wim->hdr.boot_idx = wim->hdr.image_count;
+       if (add_flags & WIMLIB_ADD_FLAG_WIMBOOT)
+               wim_info_set_wimboot(wim->wim_info, wim->hdr.image_count, true);
        ret = 0;
        goto out;
 out_delete_image: