]> wimlib.net Git - wimlib/blobdiff - include/wimlib/xml.h
Limit exposure of dentry and inode creation
[wimlib] / include / wimlib / xml.h
index 439bd012438b1a8abca002106cd1ddb29fbb2057..8562a0a9756e3dcb9e31ffa74e65a96d61373c31 100644 (file)
@@ -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,
@@ -23,16 +31,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 +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 */