X-Git-Url: https://wimlib.net/git/?a=blobdiff_plain;f=src%2Fxml.c;h=9b161c2838616f0d5261e18a0e69fd5eca345f82;hb=ff190487fa0823a3228fd4a073ceff67727b9266;hp=fd5cddf198205a2fbb767a8351464593371e696c;hpb=3fa7b7a033ce803accfd6758029114323f6a6865;p=wimlib diff --git a/src/xml.c b/src/xml.c index fd5cddf1..9b161c28 100644 --- a/src/xml.c +++ b/src/xml.c @@ -79,7 +79,7 @@ struct image_info { char *display_description; union { char *flags; - struct lookup_table *lookup_table; + struct wim_lookup_table *lookup_table; }; }; @@ -185,8 +185,8 @@ static u64 node_get_timestamp(const xmlNode *time_node) /* Used to sort an array of struct image_infos by their image indices. */ static int sort_by_index(const void *p1, const void *p2) { - int index_1 = ((struct image_info*)p1)->index; - int index_2 = ((struct image_info*)p1)->index; + int index_1 = ((const struct image_info*)p1)->index; + int index_2 = ((const struct image_info*)p2)->index; if (index_1 < index_2) return -1; else if (index_1 > index_2) @@ -952,9 +952,9 @@ void xml_delete_image(struct wim_info **wim_info_p, int image) destroy_image_info(&wim_info->images[image - 1]); - memcpy(&wim_info->images[image - 1], - &wim_info->images[image], - (wim_info->num_images - image) * sizeof(struct image_info)); + memmove(&wim_info->images[image - 1], + &wim_info->images[image], + (wim_info->num_images - image) * sizeof(struct image_info)); if (--wim_info->num_images == 0) { free_wim_info(wim_info); @@ -988,12 +988,12 @@ void xml_set_memory_allocator(void *(*malloc_func)(size_t), } #endif -static int calculate_dentry_statistics(struct dentry *dentry, void *arg) +static int calculate_dentry_statistics(struct wim_dentry *dentry, void *arg) { struct image_info *info = arg; - struct lookup_table *lookup_table = info->lookup_table; - const struct inode *inode = dentry->d_inode; - struct lookup_table_entry *lte; + struct wim_lookup_table *lookup_table = info->lookup_table; + const struct wim_inode *inode = dentry->d_inode; + struct wim_lookup_table_entry *lte; /* Update directory count and file count. * @@ -1045,12 +1045,12 @@ static int calculate_dentry_statistics(struct dentry *dentry, void *arg) info->hard_link_bytes += wim_resource_size(lte); } - if (inode->link_count >= 2 && dentry_is_first_in_inode(dentry)) { - for (unsigned i = 0; i < inode->num_ads; i++) { - if (inode->ads_entries[i].stream_name_len) { + if (inode->i_nlink >= 2 && dentry_is_first_in_inode(dentry)) { + for (unsigned i = 0; i < inode->i_num_ads; i++) { + if (inode->i_ads_entries[i].stream_name_len) { lte = inode_stream_lte(inode, i + 1, lookup_table); if (lte) { - info->hard_link_bytes += inode->link_count * + info->hard_link_bytes += inode->i_nlink * wim_resource_size(lte); } } @@ -1322,7 +1322,7 @@ int write_xml_data(const struct wim_info *wim_info, int image, FILE *out, encoding_handler = xmlGetCharEncodingHandler(XML_CHAR_ENCODING_UTF16LE); if (!encoding_handler) { ERROR("Failed to get XML character encoding handler for UTF-16LE"); - ret = WIMLIB_ERR_CHAR_CONVERSION; + ret = WIMLIB_ERR_LIBXML_UTF16_HANDLER_NOT_AVAILABLE; goto out_cleanup_char_encoding_handlers; }