X-Git-Url: https://wimlib.net/git/?a=blobdiff_plain;f=src%2Fxml.c;h=cd98a79584ce06d1a7ea7c1d276b17631dcb61e3;hb=9db1bdc721081a2dead6a60cba77dfb9bdad5ceb;hp=52cd441fe2ad38008c4f643b2020ef181a841c73;hpb=61db93f82eca3fe9f7676355c709c58cc425a6ad;p=wimlib diff --git a/src/xml.c b/src/xml.c index 52cd441f..cd98a795 100644 --- a/src/xml.c +++ b/src/xml.c @@ -137,6 +137,12 @@ wim_info_get_total_bytes(const struct wim_info *info) return info->total_bytes; } +u64 +wim_info_get_image_hard_link_bytes(const struct wim_info *info, int image) +{ + return info->images[image - 1].hard_link_bytes; +} + u64 wim_info_get_image_total_bytes(const struct wim_info *info, int image) { @@ -1270,6 +1276,7 @@ libxml_global_cleanup(void) int read_wim_xml_data(WIMStruct *wim) { + void *buf; u8 *xml_data; xmlDoc *doc; xmlNode *root; @@ -1281,9 +1288,10 @@ read_wim_xml_data(WIMStruct *wim) DEBUG("Reading XML data: %"PRIu64" bytes at offset %"PRIu64"", (u64)res_entry->size, res_entry->offset); - ret = res_entry_to_data(res_entry, wim, (void**)&xml_data); + ret = res_entry_to_data(res_entry, wim, &buf); if (ret) goto out; + xml_data = buf; doc = xmlReadMemory((const char *)xml_data, res_entry->original_size, NULL, "UTF-16LE", 0); @@ -1525,6 +1533,9 @@ wimlib_extract_xml_data(WIMStruct *wim, FILE *fp) void *buf; int ret; + if (!wim->filename) + return WIMLIB_ERR_INVALID_PARAM; + ret = res_entry_to_data(&wim->hdr.xml_res_entry, wim, &buf); if (ret) goto out;