X-Git-Url: https://wimlib.net/git/?a=blobdiff_plain;f=src%2Fwimlib.h;h=50f9252149c6b4834791f59d34fe05261abc7e00;hb=6aad3bee18ef52fc81d6df36080aa53bf8aa1d82;hp=45221872c64df49d51a245e8c5abe4637be48a4a;hpb=7e7aeb2b91b492886ebdc28e5bac0b25462c154b;p=wimlib diff --git a/src/wimlib.h b/src/wimlib.h index 45221872..50f92521 100644 --- a/src/wimlib.h +++ b/src/wimlib.h @@ -31,7 +31,7 @@ * * \section intro Introduction * - * This is the documentation for the library interface of wimlib 1.3.2. If you + * This is the documentation for the library interface of wimlib 1.3.3. If you * have installed wimlib and want to know how to use the @b wimlib-imagex * program, please see the man pages instead. Also: the actual project page * where you can download the source code for the library is at wimlib-imagex capture for more information about allowed * patterns. */ - tchar **pats; + wimlib_tchar **pats; /** Number of patterns in the @a pats array. */ size_t num_pats; @@ -639,7 +642,7 @@ struct wimlib_capture_config { struct wimlib_pattern_list reserved2; /** Library internal use only. */ - tchar *_prefix; + wimlib_tchar *_prefix; /** Library internal use only. */ size_t _prefix_num_tchars; @@ -897,7 +900,8 @@ struct wimlib_modify_command { * added at the end to maintain a compatible ABI, except when it's being broken * anyway. */ enum wimlib_error_code { - WIMLIB_ERR_ALREADY_LOCKED = 1, + WIMLIB_ERR_SUCCESS = 0, + WIMLIB_ERR_ALREADY_LOCKED, WIMLIB_ERR_COMPRESSED_LOOKUP_TABLE, WIMLIB_ERR_DECOMPRESSION, WIMLIB_ERR_DELETE_STAGING_DIR, @@ -947,7 +951,6 @@ enum wimlib_error_code { WIMLIB_ERR_SPLIT_INVALID, WIMLIB_ERR_SPLIT_UNSUPPORTED, WIMLIB_ERR_STAT, - WIMLIB_ERR_SUCCESS = 0, WIMLIB_ERR_TIMEOUT, WIMLIB_ERR_UNICODE_STRING_NOT_REPRESENTABLE, WIMLIB_ERR_UNKNOWN_VERSION, @@ -1654,6 +1657,56 @@ wimlib_join(const wimlib_tchar * const *swms, int wim_write_flags, wimlib_progress_func_t progress_func); +/** + * Compress a chunk of a WIM resource using LZX compression. + * + * This function is exported for convenience only and need not be used. + * + * @param chunk + * Uncompressed data of the chunk. + * @param chunk_size + * Size of the uncompressed chunk, in bytes. + * @param out + * Pointer to output buffer of size at least (@a chunk_size - 1) bytes. + * + * @return + * The size of the compressed data written to @a out in bytes, or 0 if the + * data could not be compressed to (@a chunk_size - 1) bytes or fewer. + * + * As a special requirement, the compression code is optimized for the WIM + * format and therefore requires (@a chunk_size <= 32768). + */ +extern unsigned +wimlib_lzx_compress(const void *chunk, unsigned chunk_size, void *out); + +/** + * Decompresses a block of LZX-compressed data as used in the WIM file format. + * + * Note that this will NOT work unmodified for LZX as used in the cabinet + * format, which is not the same as in the WIM format! + * + * This function is exported for convenience only and need not be used. + * + * @param compressed_data + * Pointer to the compressed data. + * + * @param compressed_len + * Length of the compressed data, in bytes. + * + * @param uncompressed_data + * Pointer to the buffer into which to write the uncompressed data. + * + * @param uncompressed_len + * Length of the uncompressed data. It must be 32768 bytes or less. + * + * @return + * 0 on success; non-zero on failure. + */ +extern int +wimlib_lzx_decompress(const void *compressed_data, unsigned compressed_len, + void *uncompressed_data, unsigned uncompressed_len); + + /** * Mounts an image in a WIM file on a directory read-only or read-write. * @@ -2408,4 +2461,19 @@ wimlib_write(WIMStruct *wim, unsigned num_threads, wimlib_progress_func_t progress_func); +/** + * This function is equivalent to wimlib_lzx_compress(), but instead compresses + * the data using "XPRESS" compression. + */ +extern unsigned +wimlib_xpress_compress(const void *chunk, unsigned chunk_size, void *out); + +/** + * This function is equivalent to wimlib_lzx_decompress(), but instead assumes + * the data is compressed using "XPRESS" compression. + */ +extern int +wimlib_xpress_decompress(const void *compressed_data, unsigned compressed_len, + void *uncompressed_data, unsigned uncompressed_len); + #endif /* _WIMLIB_H */