]> wimlib.net Git - wimlib/blobdiff - include/wimlib.h
Add wimlib_get_xml_data() API
[wimlib] / include / wimlib.h
index d5194c17b71cba7b338c088df30c4d4c8990dd8e..7bab4a34170e1a36ce2505cb29e82dabadc78147 100644 (file)
@@ -33,7 +33,7 @@
  *
  * @section sec_intro Introduction
  *
- * This is the documentation for the library interface of wimlib 1.5.1, a C
+ * This is the documentation for the library interface of wimlib 1.5.2, a C
  * library for creating, modifying, extracting, and mounting files in the
  * Windows Imaging Format.  This documentation is intended for developers only.
  * If you have installed wimlib and want to know how to use the @b wimlib-imagex
 #define WIMLIB_MINOR_VERSION 5
 
 /** Patch version of the library (for example, the 5 in 1.2.5). */
-#define WIMLIB_PATCH_VERSION 1
+#define WIMLIB_PATCH_VERSION 2
 
 #ifdef __cplusplus
 extern "C" {
@@ -1734,7 +1734,7 @@ struct wimlib_lzx_params {
 
                        uint8_t slow_reserved3[5];
                } slow;
-       };
+       } alg_params;
 };
 
 /** Opaque LZX compression context.  */
@@ -2374,6 +2374,8 @@ wimlib_extract_image_from_pipe(int pipe_fd,
  * Extracts the XML data of a WIM file to a file stream.  Every WIM file
  * includes a string of XML that describes the images contained in the WIM.
  *
+ * See wimlib_get_xml_data() to read the XML data into memory instead.
+ *
  * @param wim
  *     Pointer to the ::WIMStruct for a WIM file, which does not necessarily
  *     have to be standalone (e.g. it could be part of a split WIM).
@@ -2498,6 +2500,36 @@ wimlib_get_image_name(const WIMStruct *wim, int image);
 extern int
 wimlib_get_wim_info(WIMStruct *wim, struct wimlib_wim_info *info);
 
+/**
+ * @ingroup G_wim_information
+ *
+ * Read the XML data of a WIM file into an in-memory buffer.  Every WIM file
+ * includes a string of XML that describes the images contained in the WIM.
+ *
+ * See wimlib_extract_xml_data() to extract the XML data to a file stream
+ * instead.
+ *
+ * @param wim
+ *     Pointer to the ::WIMStruct for a WIM file, which does not necessarily
+ *     have to be standalone (e.g. it could be part of a split WIM).
+ * @param buf_ret
+ *     On success, a pointer to an allocated buffer containing the raw UTF16-LE
+ *     XML data is written to this location.
+ * @param bufsize_ret
+ *     The size of the XML data in bytes is written to this location.
+ *
+ * @return 0 on success; nonzero on error.
+ * @retval ::WIMLIB_ERR_INVALID_PARAM
+ *     @p wim is not a ::WIMStruct that was created by wimlib_open_wim(), or
+ *     @p buf_ret or @p bufsize_ret was @c NULL.
+ * @retval ::WIMLIB_ERR_NOMEM
+ * @retval ::WIMLIB_ERR_READ
+ * @retval ::WIMLIB_ERR_UNEXPECTED_END_OF_FILE
+ *     Failed to read the XML data from the WIM.
+ */
+extern int
+wimlib_get_xml_data(WIMStruct *wim, void **buf_ret, size_t *bufsize_ret);
+
 /**
  * @ingroup G_general
  *
@@ -2710,7 +2742,8 @@ wimlib_join(const wimlib_tchar * const *swms,
  * format and therefore requires (@p chunk_size <= 32768).
  */
 extern unsigned
-wimlib_lzx_compress(const void *chunk, unsigned chunk_size, void *out);
+wimlib_lzx_compress(const void *chunk, unsigned chunk_size, void *out)
+                       _wimlib_deprecated;
 
 /**
  * @ingroup G_compression