xmlFreeNode(totalbytes_node);
xmlFreeNode(hardlinkbytes_node);
xmlFreeNode(lastmodificationtime_node);
- WARNING("Failed to update image information!");
return WIMLIB_ERR_NOMEM;
}
xmlFreeProp(unlink_index_attribute(dest_node));
- return append_image_node(dest_info, dest_node);
+ ret = append_image_node(dest_info, dest_node);
+ if (ret)
+ goto err;
+ return 0;
err:
xmlFreeNode(dest_node);
tprintf(T("Languages: "));
node_for_each_child(langs_node, lang_node) {
- if (node_is_element(lang_node, "LANGUAGE")) {
- tfputs(node_get_ttext(info, lang_node), stdout);
- tputchar(T(' '));
- }
-
+ if (!node_is_element(lang_node, "LANGUAGE"))
+ continue;
+ text = node_get_ttext(info, lang_node);
+ if (!text)
+ continue;
+ tprintf(T("%"TS" "), text);
}
tputchar(T('\n'));
return ret;
}
-WIMLIBAPI bool
-wimlib_image_name_in_use(const WIMStruct *wim, const tchar *name)
+static bool
+image_name_in_use(const WIMStruct *wim, const tchar *name, int excluded_image)
{
const struct wim_xml_info *info = wim->xml_info;
const xmlChar *name_utf8;
if (tstr_get_utf8(name, &name_utf8))
return false;
for (int i = 0; i < info->image_count && !found; i++) {
+ if (i + 1 == excluded_image)
+ continue;
found = xmlStrEqual(name_utf8, xml_get_text_by_path(
info->images[i], "NAME"));
}
return found;
}
+WIMLIBAPI bool
+wimlib_image_name_in_use(const WIMStruct *wim, const tchar *name)
+{
+ return image_name_in_use(wim, name, WIMLIB_NO_IMAGE);
+}
+
WIMLIBAPI const tchar *
wimlib_get_image_name(const WIMStruct *wim, int image)
{
const xmlChar *name;
const tchar *value;
+ if (!property_name || !*property_name)
+ return NULL;
if (tstr_get_utf8(property_name, &name))
return NULL;
value = get_image_property(wim, image, name, NULL);
WIMLIBAPI int
wimlib_set_image_name(WIMStruct *wim, int image, const tchar *name)
{
- if (wimlib_image_name_in_use(wim, name))
+ if (image_name_in_use(wim, name, image))
return WIMLIB_ERR_IMAGE_NAME_COLLISION;
return set_image_property(wim, image, "NAME", name);
const xmlChar *name;
int ret;
+ if (!property_name || !*property_name)
+ return WIMLIB_ERR_INVALID_PARAM;
+
ret = tstr_get_utf8(property_name, &name);
if (ret)
return ret;