X-Git-Url: https://wimlib.net/git/?p=wimlib;a=blobdiff_plain;f=include%2Fwimlib%2Fxml.h;h=8562a0a9756e3dcb9e31ffa74e65a96d61373c31;hp=0f0d36834f8279921d0185ce9f52ee6a058b07dd;hb=31dcd352caa17f61fe1307738c2a24ed83f1d281;hpb=00a775dc256d1fc8254d4f055e362e67f25b66d8 diff --git a/include/wimlib/xml.h b/include/wimlib/xml.h index 0f0d3683..8562a0a9 100644 --- a/include/wimlib/xml.h +++ b/include/wimlib/xml.h @@ -3,19 +3,27 @@ #include "wimlib/types.h" -struct image_info; -struct resource_entry; - -/* 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; -}; - -/* xml.c */ +struct wim_info; +struct wim_reshdr; + +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); + +extern void +wim_info_set_wimboot(struct wim_info *info, int image, bool value); + +extern bool +wim_info_get_wimboot(const struct wim_info *info, int image); + extern int xml_export_image(const struct wim_info *old_wim_info, int image, struct wim_info **new_wim_info_p, @@ -40,13 +48,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 +65,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 +#endif /* _WIMLIB_XML_H */