X-Git-Url: https://wimlib.net/git/?a=blobdiff_plain;f=include%2Fwimlib%2Fxml.h;h=e9c044afd8854076a3e9ec10ce72aa6be365bed8;hb=41f15b937564a3ae58f199c27e8290a1b1a40856;hp=439bd012438b1a8abca002106cd1ddb29fbb2057;hpb=e8c3ca2d1d0cac3d64985b45a9f654d2029a7518;p=wimlib diff --git a/include/wimlib/xml.h b/include/wimlib/xml.h index 439bd012..e9c044af 100644 --- a/include/wimlib/xml.h +++ b/include/wimlib/xml.h @@ -2,20 +2,23 @@ #define _WIMLIB_XML_H #include "wimlib/types.h" +#include "wimlib/file_io.h" -struct image_info; -struct resource_entry; +struct wim_info; +struct wim_reshdr; -/* A struct wim_info structure corresponds to the entire XML data for a WIM file. */ -struct wim_info { - u64 total_bytes; - int num_images; - /* Array of `struct image_info's, one for each image in the WIM that is - * mentioned in the XML data. */ - struct image_info *images; -}; +extern u64 +wim_info_get_total_bytes(const struct wim_info *info); + +extern u64 +wim_info_get_image_hard_link_bytes(const struct wim_info *info, int image); + +extern u64 +wim_info_get_image_total_bytes(const struct wim_info *info, int image); + +extern unsigned +wim_info_get_num_images(const struct wim_info *info); -/* xml.c */ extern int xml_export_image(const struct wim_info *old_wim_info, int image, struct wim_info **new_wim_info_p, @@ -23,16 +26,16 @@ xml_export_image(const struct wim_info *old_wim_info, int image, const tchar *dest_image_description); extern size_t -xml_get_max_image_name_len(const WIMStruct *w); +xml_get_max_image_name_len(const WIMStruct *wim); extern void -xml_update_image_info(WIMStruct *w, int image); +xml_update_image_info(WIMStruct *wim, int image); extern void xml_delete_image(struct wim_info **wim_info_p, int image); extern int -xml_add_image(WIMStruct *w, const tchar *name); +xml_add_image(WIMStruct *wim, const tchar *name); extern void free_wim_info(struct wim_info *info); @@ -40,13 +43,16 @@ free_wim_info(struct wim_info *info); extern void print_image_info(const struct wim_info *wim_info, int image); +#define WIM_TOTALBYTES_USE_EXISTING ((u64)0 - 1) +#define WIM_TOTALBYTES_OMIT ((u64)0 - 2) + extern int -read_xml_data(int in_fd, const struct resource_entry *res, - struct wim_info **info_ret); +read_wim_xml_data(WIMStruct *wim); extern int -write_xml_data(const struct wim_info *wim_info, int image, int out_fd, - u64 total_bytes, struct resource_entry *out_res_entry); +write_wim_xml_data(WIMStruct *wim, int image, + u64 total_bytes, struct wim_reshdr *out_reshdr, + int write_resource_flags); extern void libxml_global_init(void); @@ -54,23 +60,9 @@ libxml_global_init(void); extern void libxml_global_cleanup(void); -static inline u64 -wim_info_get_total_bytes(const struct wim_info *info) -{ - return info->total_bytes; -} - -static inline unsigned -wim_info_get_num_images(const struct wim_info *info) -{ - return info->num_images; -} - -#ifdef ENABLE_CUSTOM_MEMORY_ALLOCATOR extern void xml_set_memory_allocator(void *(*malloc_func)(size_t), void (*free_func)(void *), void *(*realloc_func)(void *, size_t)); -#endif #endif