-/* Creates and appends a 'struct wim_image_metadata' for an empty image.
- *
- * The resulting image will be the last in the WIM, so its index will be
- * the new value of wim->hdr.image_count. */
-static int
-add_empty_image_metadata(WIMStruct *wim)
-{
- int ret;
- struct wim_lookup_table_entry *metadata_lte;
- struct wim_security_data *sd;
- struct wim_image_metadata *imd;
-
- /* Create lookup table entry for this metadata resource (for now really
- * just a dummy entry). */
- ret = WIMLIB_ERR_NOMEM;
- metadata_lte = new_lookup_table_entry();
- if (!metadata_lte)
- goto out;
-
- metadata_lte->flags = WIM_RESHDR_FLAG_METADATA;
- metadata_lte->unhashed = 1;
-
- /* Create empty security data (no security descriptors). */
- sd = new_wim_security_data();
- if (!sd)
- goto out_free_metadata_lte;
-
- imd = new_image_metadata();
- if (!imd)
- goto out_free_security_data;
-
- /* A NULL root_dentry indicates a completely empty image, without even a
- * root directory. */
- imd->root_dentry = NULL;
- imd->metadata_lte = metadata_lte;
- imd->security_data = sd;
- imd->modified = 1;
-
- /* Append as next image index. */
- ret = append_image_metadata(wim, imd);
- if (ret)
- put_image_metadata(imd, NULL);
- goto out;
-
-out_free_security_data:
- free_wim_security_data(sd);
-out_free_metadata_lte:
- free_lookup_table_entry(metadata_lte);
-out:
- return ret;
-}
-