]> wimlib.net Git - wimlib/blobdiff - src/xml.c
Add can_modify_wim(), can_delete_from_wim()
[wimlib] / src / xml.c
index b6a010c4035f49189a34eda3f4703c9e3ab111a2..6adba78cc8810b22d6fbcc8e3220c74bb92fe78a 100644 (file)
--- a/src/xml.c
+++ b/src/xml.c
@@ -447,7 +447,7 @@ xml_read_image_info(xmlNode *image_node, struct image_info *image_info)
        }
        if (!image_info->name) {
                tchar *empty_name;
-               WARNING("Image with index %d has no name", image_info->index);
+               /*WARNING("Image with index %d has no name", image_info->index);*/
                empty_name = MALLOC(sizeof(tchar));
                if (!empty_name)
                        return WIMLIB_ERR_NOMEM;
@@ -1542,13 +1542,16 @@ wimlib_set_image_name(WIMStruct *w, int image, const tchar *name)
 {
        tchar *p;
        int i;
+       int ret;
 
        DEBUG("Setting the name of image %d to %"TS, image, name);
 
-       if (!name || !*name) {
-               ERROR("Must specify a non-empty string for the image name");
-               return WIMLIB_ERR_INVALID_PARAM;
-       }
+       ret = can_modify_wim(w);
+       if (ret)
+               return ret;
+
+       if (name == NULL)
+               name = T("");
 
        if (image < 1 || image > w->hdr.image_count) {
                ERROR("%d is not a valid image", image);
@@ -1558,7 +1561,7 @@ wimlib_set_image_name(WIMStruct *w, int image, const tchar *name)
        for (i = 1; i <= w->hdr.image_count; i++) {
                if (i == image)
                        continue;
-               if (tstrcmp(w->wim_info->images[i - 1].name, name) == 0) {
+               if (!tstrcmp(w->wim_info->images[i - 1].name, name)) {
                        ERROR("The name \"%"TS"\" is already in use in the WIM!",
                              name);
                        return WIMLIB_ERR_IMAGE_NAME_COLLISION;
@@ -1580,6 +1583,11 @@ do_set_image_info_str(WIMStruct *w, int image, const tchar *tstr,
 {
        tchar *tstr_copy;
        tchar **dest_tstr_p;
+       int ret;
+
+       ret = can_modify_wim(w);
+       if (ret)
+               return ret;
 
        if (image < 1 || image > w->hdr.image_count) {
                ERROR("%d is not a valid image", image);