/**
* @ingroup G_wim_information
*
- * Get a per-image property from the WIM's XML document. This is an alternative
- * to wimlib_get_image_name() and wimlib_get_image_descripton() which allows
- * getting any simple string property.
+ * Since wimlib v1.8.3: get a per-image property from the WIM's XML document.
+ * This is an alternative to wimlib_get_image_name() and
+ * wimlib_get_image_description() which allows getting any simple string
+ * property.
*
* @param wim
* Pointer to the ::WIMStruct for the WIM.
* element. The <tt>[</tt> character is reserved for future use.
*
* @return
- * The property's value as a wimlib_tchar string, or @c NULL if there is no
- * such property. The string may not remain valid after later library
+ * The property's value as a ::wimlib_tchar string, or @c NULL if there is
+ * no such property. The string may not remain valid after later library
* calls, so the caller should duplicate it if needed.
*/
extern const wimlib_tchar *
/**
* @ingroup G_modifying_wims
*
- * Add, modify, or remove a per-image property from the WIM's XML document.
- * This is an alternative to wimlib_set_image_name(),
+ * Since wimlib v1.8.3: add, modify, or remove a per-image property from the
+ * WIM's XML document. This is an alternative to wimlib_set_image_name(),
* wimlib_set_image_descripton(), and wimlib_set_image_flags() which allows
* manipulating any simple string property.
*
}
/*
- * Calculate what to put in the FILECOUNT, DIRCOUNT, TOTALBYTES, and
- * HARDLINKBYTES elements of the specified WIM image.
+ * Update the DIRCOUNT, FILECOUNT, TOTALBYTES, HARDLINKBYTES, and
+ * LASTMODIFICATIONTIME elements for the specified WIM image.
*
* Note: since these stats are likely to be used for display purposes only, we
* no longer attempt to duplicate WIMGAPI's weird bugs when calculating them.
u64 total_bytes = 0;
u64 hard_link_bytes = 0;
u64 size;
- xmlNode *filecount_node;
xmlNode *dircount_node;
+ xmlNode *filecount_node;
xmlNode *totalbytes_node;
xmlNode *hardlinkbytes_node;
xmlNode *lastmodificationtime_node;
* Make a copy of the XML information for the image with index @src_image in the
* @src_info XML document and append it to the @dest_info XML document.
*
- * In the process, the image's name and description will be changed to the
- * values specified by @dest_image_name and @dest_image_description. Either or
- * both may be NULL, which indicates that the corresponding element will not be
+ * In the process, change the image's name and description to the values
+ * specified by @dest_image_name and @dest_image_description. Either or both
+ * may be NULL, which indicates that the corresponding element will not be
* included in the destination image.
*/
int
* Reading and writing the XML data *
*----------------------------------------------------------------------------*/
-static unsigned
+static int
image_node_get_index(const xmlNode *node)
{
- return node_get_number((const xmlNode *)xmlHasProp(node, "INDEX"), 10);
+ u64 v = node_get_number((const xmlNode *)xmlHasProp(node, "INDEX"), 10);
+ return min(v, INT_MAX);
}
/* Prepare the 'images' array from the XML document tree. */
setup_images(struct wim_xml_info *info, xmlNode *root)
{
xmlNode *child;
- unsigned index;
- unsigned max_index = 0;
+ int index;
+ int max_index = 0;
int ret;
info->images = NULL;