/*
* Copyright (C) 2012, 2013 Eric Biggers
*
- * wimlib - Library for working with WIM files
- *
* This file is part of wimlib, a library for working with WIM files.
*
* wimlib is free software; you can redistribute it and/or modify it under the
image_print_metadata(WIMStruct *w)
{
DEBUG("Printing metadata for image %d", w->current_image);
- print_security_data(wim_security_data(w));
+ print_wim_security_data(wim_security_data(w));
return for_dentry_in_tree(wim_root_dentry(w), print_dentry,
w->lookup_table);
}
/* Sets the index of the bootable image. */
WIMLIBAPI int
-wimlib_set_boot_idx(WIMStruct *w, int boot_idx)
+wimlib_set_boot_idx(WIMStruct *wim, int boot_idx)
{
- if (w->hdr.total_parts != 1) {
- ERROR("Cannot modify the boot index of a split WIM!");
- return WIMLIB_ERR_SPLIT_UNSUPPORTED;
- }
- if (boot_idx < 0 || boot_idx > w->hdr.image_count)
+ int ret;
+
+ ret = can_modify_wim(wim);
+ if (ret)
+ return ret;
+ if (boot_idx < 0 || boot_idx > wim->hdr.image_count)
return WIMLIB_ERR_INVALID_IMAGE;
- w->hdr.boot_idx = boot_idx;
+ wim->hdr.boot_idx = boot_idx;
return 0;
}
{
free_dentry_tree(imd->root_dentry, table);
imd->root_dentry = NULL;
- free_security_data(imd->security_data);
+ free_wim_security_data(imd->security_data);
imd->security_data = NULL;
if (free_metadata_lte) {
return 0;
}
+int
+can_modify_wim(WIMStruct *wim)
+{
+ if (wim->hdr.total_parts != 1) {
+ if (wim->filename)
+ ERROR("Cannot modify \"%"TS"\": is a split WIM!", wim->filename);
+ else
+ ERROR("Cannot modify a split WIM!");
+ return WIMLIB_ERR_SPLIT_UNSUPPORTED;
+ }
+ return 0;
+}
+
+int
+can_delete_from_wim(WIMStruct *wim)
+{
+ int ret;
+
+ ret = can_modify_wim(wim);
+ if (ret == 0 && !wim->all_images_verified)
+ ret = wim_run_full_verifications(wim);
+ return ret;
+}
+
/* Frees the memory for the WIMStruct, including all internal memory; also
* closes all files associated with the WIMStruct. */
WIMLIBAPI void