From 643071b516a8d4f549064d3ce4875aafa615eaec Mon Sep 17 00:00:00 2001 From: Eric Biggers Date: Sun, 18 Oct 2015 19:39:28 -0500 Subject: [PATCH] wimlib_set_image_name(): allow setting image to existing name --- src/xml.c | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/src/xml.c b/src/xml.c index dbce8da6..d13944a7 100644 --- a/src/xml.c +++ b/src/xml.c @@ -1347,8 +1347,8 @@ wimlib_extract_xml_data(WIMStruct *wim, FILE *fp) 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; @@ -1362,6 +1362,8 @@ wimlib_image_name_in_use(const WIMStruct *wim, const tchar *name) 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")); } @@ -1369,6 +1371,12 @@ wimlib_image_name_in_use(const WIMStruct *wim, const tchar *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) { @@ -1400,7 +1408,7 @@ wimlib_get_image_property(const WIMStruct *wim, int image, 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); -- 2.43.0