diff --git a/Lrzip.h b/Lrzip.h deleted file mode 100644 index 7c98998..0000000 --- a/Lrzip.h +++ /dev/null @@ -1,771 +0,0 @@ -/* - Copyright (C) 2006-2011 Con Kolivas - Copyright (C) 2011 Peter Hyman - Copyright (C) 1998-2003 Andrew Tridgell - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ - -#ifndef LIBLRZIP_H -#define LIBLRZIP_H - -#include -#include -#include -#ifdef _WIN32 -# include -#else -# include -#endif - -#if defined (__OpenBSD__) || (__NetBSD__) -# include -#endif - -#ifdef __cplusplus -extern "C" { -#endif - -/** - @brief LRZIP library - - @mainpage lrzip - @version 1.0 - @date 2011 - - @section intro What is LRZIP? - - LRZIP is a compression program optimised for large files. The larger the file - and the more memory you have, the better the compression advantage this will - provide, especially once the files are larger than 100MB. The advantage can - be chosen to be either size (much smaller than bzip2) or speed (much faster - than bzip2). - * @link Lrzip.h LRZIP API @endlink - */ - -/** @file Lrzip.h */ - -/** - * @typedef Lrzip - * @brief The overall struct for managing all operations - */ -typedef struct Lrzip Lrzip; - -/** - * @typedef Lrzip_Log_Level - * @brief The amount of information to display using logging functions - * This enum is used when setting or getting the log level of an #Lrzip - * struct. It determines how much information is shown about the current operation, - * either in stdout/stderr or using logging callbacks. - * @see lrzip_log_level_set() - * @see lrzip_log_level_get() - */ -typedef enum { - LRZIP_LOG_LEVEL_ERROR = 0, /**< Only display errors */ - LRZIP_LOG_LEVEL_INFO, /**< Display information and errors */ - LRZIP_LOG_LEVEL_PROGRESS, /**< Display progress updates, information, and errors */ - LRZIP_LOG_LEVEL_VERBOSE, /**< Display verbose progress updates, information, and errors */ - LRZIP_LOG_LEVEL_DEBUG /**< Display all possible information */ -} Lrzip_Log_Level; - -/** - * @typedef Lrzip_Mode - * @brief The mode of operation for an #Lrzip struct - * This enum is used when setting or getting the operation mode of an #Lrzip - * struct. It determines what will happen when lrzip_run() is called. - * @see lrzip_mode_set() - * @see lrzip_mode_get() - */ -typedef enum { - LRZIP_MODE_NONE = 0, /**< No operation set */ - LRZIP_MODE_INFO, /**< Retrieve info about an archive */ - LRZIP_MODE_TEST, /**< Test an archive's integrity */ - LRZIP_MODE_DECOMPRESS, /**< Decompress an archive */ - LRZIP_MODE_COMPRESS_NONE, /**< RZIP preprocess only */ - LRZIP_MODE_COMPRESS_LZO, /**< Use LZO compression */ - LRZIP_MODE_COMPRESS_ZLIB, /**< Use ZLIB (GZIP) compression */ - LRZIP_MODE_COMPRESS_BZIP2, /**< Use BZIP2 compression */ - LRZIP_MODE_COMPRESS_LZMA, /**< Use LZMA compression */ - LRZIP_MODE_COMPRESS_ZPAQ /**< Use ZPAQ compression */ -} Lrzip_Mode; - -/** - * @typedef Lrzip_Flag - * @brief The extra params for an #Lrzip struct's operations - * This enum is used when setting or getting the flags of an #Lrzip - * struct. It determines some of the miscellaneous extra abilities of LRZIP. - * @see lrzip_flags_set() - * @see lrzip_flags_get() - */ -typedef enum { - LRZIP_FLAG_REMOVE_SOURCE = (1 << 0), /**< Remove the input file after the operation completes */ - LRZIP_FLAG_REMOVE_DESTINATION = (1 << 1), /**< Remove matching destination file if it exists */ - LRZIP_FLAG_KEEP_BROKEN = (1 << 2), /**< Do not remove broken files */ - LRZIP_FLAG_VERIFY = (1 << 3), /**< Only verify the archive, do not perform any compression/decompression */ - LRZIP_FLAG_DISABLE_LZO_CHECK = (1 << 4), /**< Disable test to determine if LZO compression will be useful */ - LRZIP_FLAG_UNLIMITED_RAM = (1 << 5), /**< Use unlimited ram window size for compression */ - LRZIP_FLAG_ENCRYPT = (1 << 6) /**< Encrypt archive during compression; @see lrzip_pass_cb_set() */ -} Lrzip_Flag; - -/** - * @typedef Lrzip_Info_Cb - * @brief The callback to call when an operation's progress changes - * @param data The data param passed in lrzip_info_cb_set() - * @param pct The overall operation progress as a percent - * @param chunk_pct The current chunk's operation progress as a percent - */ -typedef void (*Lrzip_Info_Cb)(void *data, int pct, int chunk_pct); -/** - * @typedef Lrzip_Log_Cb - * @brief The callback to call when a log message is to be shown - * @param data The data param passed in lrzip_log_cb_set() - * @param level The Lrzip_Log_Level of the message - * @param line The line in LRZIP code where the message originated - * @param file The file in LRZIP code where the message originated - * @param func The function in LRZIP code where the message originated - * @param format The printf-style format of the message - * @param args The matching va_list for @p format - */ -typedef void (*Lrzip_Log_Cb)(void *data, unsigned int level, unsigned int line, const char *file, const char *func, const char *format, va_list args); -/** - * @typedef Lrzip_Password_Cb - * @brief The callback to call for operations requiring a password - * @param data The data param passed in lrzip_pass_cb_set() - * @param buffer The pre-allocated buffer to write the password into - * @param buf_size The size, in bytes, of @p buffer - */ -typedef void (*Lrzip_Password_Cb)(void *data, char *buffer, size_t buf_size); - -/** - * @brief Initialize liblrzip - * This function must be called prior to running any other liblrzip - * functions to initialize compression algorithms. It does not allocate. - * @return true on success, false on failure - */ -bool lrzip_init(void); - -/** - * @brief Create a new #Lrzip struct - * Use this function to allocate a new struct for immediate or later use, - * optionally setting flags and changing modes at a later time. - * @param mode The optional Lrzip_Mode to set, or LRZIP_MODE_NONE to allow - * setting a mode later. - * @return The new #Lrzip struct, or NULL on failure - * @see lrzip_mode_set() - */ -Lrzip *lrzip_new(Lrzip_Mode mode); - -/** - * @brief Free an #Lrzip struct - * Use this function to free all memory associated with an existing struct. - * @param lr The struct to free - */ -void lrzip_free(Lrzip *lr); - -/** - * @brief Set up an #Lrzip struct using environment settings - * Use this function to acquire and utilize settings already existing in - * either environment variables or configuration files for LRZIP. For more detailed - * information, see the LRZIP manual. - * @param lr The struct to configure - * @note This function cannot fail. - */ -void lrzip_config_env(Lrzip *lr); - -/** - * @brief Retrieve the operation mode of an #Lrzip struct - * @param lr The struct to query - * @return The Lrzip_Mode of @p lr, or LRZIP_MODE_NONE on failure - */ -Lrzip_Mode lrzip_mode_get(Lrzip *lr); - -/** - * @brief Set the operation mode of an #Lrzip struct - * @param lr The struct to change the mode for - * @param mode The Lrzip_Mode to set for @p lr - * @return true on success, false on failure - */ -bool lrzip_mode_set(Lrzip *lr, Lrzip_Mode mode); - -/** - * @brief Set the compression level of an #Lrzip struct - * @param lr The struct to change the compression level for - * @param level The value, 1-9, to use as the compression level for operations with @p lr - * @return true on success, false on failure - * @note This function is only valid for compression operations - */ -bool lrzip_compression_level_set(Lrzip *lr, unsigned int level); - -/** - * @brief Get the compression level of an #Lrzip struct - * @param lr The struct to get the compression level of - * @return The value, 1-9, used as the compression level for operations with @p lr, - * or 0 on failure - * @note This function is only valid for compression operations - */ -unsigned int lrzip_compression_level_get(Lrzip *lr); - -/** - * @brief Set the operation specific parameters - * @param lr The struct to set parameters for - * @param flags A bitwise ORed set of Lrzip_Flags - * @note This function does not perform any error checking. Any errors in flags - * will be determined when lrzip_run() is called. - */ -void lrzip_flags_set(Lrzip *lr, unsigned int flags); - -/** - * @brief Get the operation specific parameters - * @param lr The struct to get parameters of - * @return A bitwise ORed set of Lrzip_Flags - */ -unsigned int lrzip_flags_get(Lrzip *lr); - -/** - * @brief Set the nice level for operations in a struct - * @param lr The struct to set the nice level for - * @param nice The value to use when nicing during operations - */ -void lrzip_nice_set(Lrzip *lr, int nice); - -/** - * @brief Get the nice level for operations in a struct - * @param lr The struct to get the nice level of - * @return The value to use when nicing during operations - */ -int lrzip_nice_get(Lrzip *lr); - -/** - * @brief Explicitly set the number of threads to use during operations - * @param lr The struct to set the threads for - * @param threads The number of threads to use for operations - * @note LRZIP will automatically determine the optimal number of threads to use, - * so this function should only be used to specify FEWER than optimal threads. - */ -void lrzip_threads_set(Lrzip *lr, unsigned int threads); - -/** - * @brief Get the number of threads used during operations - * @param lr The struct to query - * @return The number of threads to use for operations - */ -unsigned int lrzip_threads_get(Lrzip *lr); - -/** - * @brief Set the maximum compression window for operations - * @param lr The struct to set the maximum compression window for - * @param size The size (in hundreds of MB) to use for the maximum size of compression - * chunks. - * @note LRZIP will automatically determine the optimal maximum compression window to use, - * so this function should only be used to specify a LOWER value. - */ -void lrzip_compression_window_max_set(Lrzip *lr, int64_t size); - -/** - * @brief Get the maximum compression window for operations - * @param lr The struct to query - * @return The size (in hundreds of MB) to use for the maximum size of compression - * chunks. - */ -int64_t lrzip_compression_window_max_get(Lrzip *lr); - -/** - * @brief Return the size of the stream queue in a struct - * This function returns the current count of streams added for processing - * using lrzip_file_add. It always returns instantly. - * @param lr The struct to query - * @return The current number of streams in the queue - */ -unsigned int lrzip_files_count(Lrzip *lr); - -/** - * @brief Return the size of the file queue in a struct - * This function returns the current count of files added for processing - * using lrzip_filename_add. It always returns instantly. - * @param lr The struct to query - * @return The current number of files in the queue - */ -unsigned int lrzip_filenames_count(Lrzip *lr); - -/** - * @brief Return the array of the stream queue in a struct - * This function returns the current queue of streams added for processing - * using lrzip_file_add. It always returns instantly. - * @param lr The struct to query - * @return The current stream queue - */ -FILE **lrzip_files_get(Lrzip *lr); - -/** - * @brief Return the array of the filename queue in a struct - * This function returns the current queue of files added for processing - * using lrzip_filename_add. It always returns instantly. - * @param lr The struct to query - * @return The current filename queue - */ -char **lrzip_filenames_get(Lrzip *lr); - -/** - * @brief Add a stream (FILE) to the operation queue - * This function adds a stream to the input queue. Each time lrzip_run() - * is called, it will run the current operation (specified by the Lrzip_Mode) - * on either a stream or file in the queue. - * @param lr The struct - * @param file The stream descriptor to queue - * @return true on success, false on failure - * @note The file queue will be fully processed prior to beginning processing - * the stream queue. - * @warning Any streams added to this queue MUST NOT be closed until they have - * either been processed or removed from the queue! - */ -bool lrzip_file_add(Lrzip *lr, FILE *file); - -/** - * @brief Remove a stream from the operation queue - * This function removes a previously added stream from the operation queue by - * iterating through the queue and removing the stream if found. - * @param lr The struct - * @param file The stream to remove - * @return true only on successful removal, else false - */ -bool lrzip_file_del(Lrzip *lr, FILE *file); - -/** - * @brief Pop the current head of the stream queue - * This function is used to remove the current head of the stream queue. It can be called - * immediately following any lrzip_run() stream operation to remove the just-processed stream. This - * function modifies the stream queue array, reordering and updating the index count. - * @param lr The struct to pop the stream queue of - * @return The stream removed from the queue, or NULL on failure - */ -FILE *lrzip_file_pop(Lrzip *lr); - -/** - * @brief Clear the stream queue - * This function is used to free and reset the stream queue. The streams - * themselves are untouched. - * @param lr The struct - */ -void lrzip_files_clear(Lrzip *lr); - -/** - * @brief Add a file to the operation queue - * This function adds a file to the input queue. Each time lrzip_run() - * is called, it will run the current operation (specified by the Lrzip_Mode) - * on either a stream or file in the queue. - * @param lr The struct - * @param file The file (by absolute path) to queue - * @return true on success, false on failure - * @note The file queue will be fully processed prior to beginning processing - * the stream queue. - */ -bool lrzip_filename_add(Lrzip *lr, const char *file); - -/** - * @brief Remove a filename from the operation queue - * This function removes a previously added filename from the operation queue by - * iterating through the queue and removing the filename if found. - * @param lr The struct - * @param file The file to remove - * @return true only on successful removal, else false - */ -bool lrzip_filename_del(Lrzip *lr, const char *file); - -/** - * @brief Pop the current head of the file queue - * This function is used to remove the current head of the file queue. It can be called - * immediately following any lrzip_run() file operation to remove the just-processed file. This - * function modifies the file queue array, reordering and updating the index count. - * @param lr The struct to pop the filename queue of - * @return The filename removed from the queue, or NULL on failure - */ -const char *lrzip_filename_pop(Lrzip *lr); - -/** - * @brief Clear the file queue - * This function is used to free and reset the file queue. - * @param lr The struct - */ -void lrzip_filenames_clear(Lrzip *lr); - -/** - * @brief Set the default suffix for LRZIP compression operations - * This function is used to change the default ".lrz" suffix for operations - * to @p suffix. - * @param lr The struct - * @param suffix The suffix to use for compression operations - */ -void lrzip_suffix_set(Lrzip *lr, const char *suffix); - -/** - * @brief Get the default suffix for LRZIP compression operations - * @param lr The struct - * @return The suffix to use for compression operations, or NULL on failure - */ -const char *lrzip_suffix_get(Lrzip *lr); - -/** - * @brief Set the output directory for operations - * This function can be used to set the output directory for operations. - * Files will be stored according to their basename and lrzip suffix where - * applicable. - * @param lr The struct - * @param dir The absolute path of the output directory - */ -void lrzip_outdir_set(Lrzip *lr, const char *dir); - -/** - * @brief Get the output directory for operations - * @param lr The struct - * @return The previously set output directory - */ -const char *lrzip_outdir_get(Lrzip *lr); - -/** - * @brief Set the output stream for operations - * This function can be used to set the output stream for operations. - * Raw data will be written to this stream for the duration of lrzip_run(). - * @param lr The struct - * @param file The stream to write to - * @warning @p file is NOT created by this library and must be opened by the user! - */ -void lrzip_outfile_set(Lrzip *lr, FILE *file); - -/** - * @brief Get the output stream for operations - * @param lr The struct - * @return The previously set output stream - */ -FILE *lrzip_outfile_get(Lrzip *lr); - -/** - * @brief Set the output file for operations - * This function can be used to set the output file for operations. - * Raw data will be written to the file with this name for the duration of lrzip_run(). - * @param lr The struct - * @param file The name of the file to write to - */ -void lrzip_outfilename_set(Lrzip *lr, const char *file); - -/** - * @brief Get the output filename for operations - * @param lr The struct - * @return The previously set output filename - */ -const char *lrzip_outfilename_get(Lrzip *lr); - -/** - * @brief Retrieve the MD5 digest of an LRZIP file - * Use this function after calling lrzip_run() to retrieve the digest of - * the processed archive. - * @param lr The struct having run an operation - * @return The MD5 digest of the operation's associated archive - * @note The return value of this function will change after each operation - */ -const unsigned char *lrzip_md5digest_get(Lrzip *lr); - -/** - * @brief Run the current operation - * This function is called when all necessary parameters have been set for an operation. - * The calling thread will then block until the operation has fully completed, writing - * output using logging and progress callbacks and calling password callbacks as required. - * @param lr The struct to run an operation with - * @return true if the operation successfully completed, else false - */ -bool lrzip_run(Lrzip *lr); - -/** - * @brief Set the logging level - * @param lr The struct - * @param level The #Lrzip_Log_Level to use - */ -void lrzip_log_level_set(Lrzip *lr, int level); - -/** - * @brief Get the logging level - * @param lr The struct to query - * @return The #Lrzip_Log_Level of @p lr - */ -int lrzip_log_level_get(Lrzip *lr); - -/** - * @brief Set a logging callback for use with all operations - * This function sets an Lrzip_Log_Cb which will be called any time logging - * output is to be displayed. The callback will be called as many times as the #Lrzip_Log_Level - * requires. - * @param lr The struct - * @param cb The callback - * @param log_data The data param to use in the logging callback - */ -void lrzip_log_cb_set(Lrzip *lr, Lrzip_Log_Cb cb, void *log_data); - -/** - * @brief Redirect stdout log messages to another stream - * This function sends any logging messages which would normally go to stdout into another stream. - * Useful for when stdout is the target set by lrzip_outfile_set(). - * @param lr The struct - * @param out The stream to use instead of stdout - */ -void lrzip_log_stdout_set(Lrzip *lr, FILE *out); - -/** - * @brief Return the stream currently used as stdout - * @param lr The struct to query - * @return A stream where stdout messages will be sent, NULL on failure - */ -FILE *lrzip_log_stdout_get(Lrzip *lr); - -/** - * @brief Redirect stderr log messages to another stream - * This function sends any logging messages which would normally go to stderr into another stream. - * @param lr The struct - * @param err The stream to use instead of stderr - */ -void lrzip_log_stderr_set(Lrzip *lr, FILE *err); - -/** - * @brief Return the stream currently used as stderr - * @param lr The struct to query - * @return A stream where stderr messages will be sent, NULL on failure - */ -FILE *lrzip_log_stderr_get(Lrzip *lr); - -/** - * @brief Set a password callback for use with all operations - * This function sets an Lrzip_Password_Cb which will be used when working with encrypted - * LRZIP archives. It will be called both when compressing and decompressing archives. - * @param lr The struct - * @param cb The callback to set - * @param data The data param to use in the password callback - */ -void lrzip_pass_cb_set(Lrzip *lr, Lrzip_Password_Cb cb, void *data); - -/** - * @brief Set an info callback for use with all operations - * This function sets an Lrzip_Info_Cb which will be called any time there is a - * progress update in an operation. - * @param lr The struct - * @param cb The callback to set - * @param data The data param to use in the info callback - */ -void lrzip_info_cb_set(Lrzip *lr, Lrzip_Info_Cb cb, void *data); - -/** - * @brief Quick setup for performing a decompression - * This function performs all the required allocations and sets necessary parameters - * to decompress @p source to @p dest. No extra functions are necessary to call, and - * this function will block until it completes. - * @param dest A pointer to the LRZIP-allocated destination buffer - * @param dest_len A pointer to the length of @p dest - * @param source The allocated source buffer to read from - * @param source_len The length of @p source - * @return true on success, else false - */ -bool lrzip_decompress(void *dest, unsigned long *dest_len, const void *source, unsigned long source_len); - -/** - * @brief Quick setup for performing a compression - * This function performs all the required allocations and sets necessary parameters - * to compress @p source to @p dest. No extra functions are necessary to call, and - * this function will block until it completes. - * @param dest A pointer to the LRZIP-allocated destination buffer - * @param dest_len A pointer to the length of @p dest - * @param source The allocated source buffer to read from - * @param source_len The length of @p source - * @param mode The compression mode to use - * @param compress_level The value, 1-9, to use as a compression level - * @return true on success, else false - */ -bool lrzip_compress_full(void *dest, unsigned long *dest_len, const void *source, unsigned long source_len, Lrzip_Mode mode, int compress_level); - -/** - * @brief Quick setup for performing a compression using LZMA - * This function performs all the required allocations and sets necessary parameters - * to compress @p source to @p dest. No extra functions are necessary to call, and - * this function will block until it completes. - * @param dest A pointer to the LRZIP-allocated destination buffer - * @param dest_len A pointer to the length of @p dest - * @param source The allocated source buffer to read from - * @param source_len The length of @p source - * @return true on success, else false - */ -static inline bool lrzip_compress(void *dest, unsigned long *dest_len, const void *source, unsigned long source_len) -{ return lrzip_compress_full(dest, dest_len, source, source_len, LRZIP_MODE_COMPRESS_LZMA, 7); } - -/** - * @brief Quick setup for performing a compression using LZO - * This function performs all the required allocations and sets necessary parameters - * to compress @p source to @p dest. No extra functions are necessary to call, and - * this function will block until it completes. - * @param dest A pointer to the LRZIP-allocated destination buffer - * @param dest_len A pointer to the length of @p dest - * @param source The allocated source buffer to read from - * @param source_len The length of @p source - * @return true on success, else false - */ -static inline bool lrzip_lcompress(void *dest, unsigned long *dest_len, const void *source, unsigned long source_len) -{ return lrzip_compress_full(dest, dest_len, source, source_len, LRZIP_MODE_COMPRESS_LZO, 7); } - -/** - * @brief Quick setup for performing a compression using ZLIB (GZIP) - * This function performs all the required allocations and sets necessary parameters - * to compress @p source to @p dest. No extra functions are necessary to call, and - * this function will block until it completes. - * @param dest A pointer to the LRZIP-allocated destination buffer - * @param dest_len A pointer to the length of @p dest - * @param source The allocated source buffer to read from - * @param source_len The length of @p source - * @return true on success, else false - */ -static inline bool lrzip_gcompress(void *dest, unsigned long *dest_len, const void *source, unsigned long source_len) -{ return lrzip_compress_full(dest, dest_len, source, source_len, LRZIP_MODE_COMPRESS_ZLIB, 7); } - -/** - * @brief Quick setup for performing a compression using ZPAQ - * This function performs all the required allocations and sets necessary parameters - * to compress @p source to @p dest. No extra functions are necessary to call, and - * this function will block until it completes. - * @param dest A pointer to the LRZIP-allocated destination buffer - * @param dest_len A pointer to the length of @p dest - * @param source The allocated source buffer to read from - * @param source_len The length of @p source - * @return true on success, else false - */ -static inline bool lrzip_zcompress(void *dest, unsigned long *dest_len, const void *source, unsigned long source_len) -{ return lrzip_compress_full(dest, dest_len, source, source_len, LRZIP_MODE_COMPRESS_ZPAQ, 7); } - -/** - * @brief Quick setup for performing a compression using BZIP - * This function performs all the required allocations and sets necessary parameters - * to compress @p source to @p dest. No extra functions are necessary to call, and - * this function will block until it completes. - * @param dest A pointer to the LRZIP-allocated destination buffer - * @param dest_len A pointer to the length of @p dest - * @param source The allocated source buffer to read from - * @param source_len The length of @p source - * @return true on success, else false - */ -static inline bool lrzip_bcompress(void *dest, unsigned long *dest_len, const void *source, unsigned long source_len) -{ return lrzip_compress_full(dest, dest_len, source, source_len, LRZIP_MODE_COMPRESS_BZIP2, 7); } - -/** - * @brief Quick setup for performing RZIP preprocessing - * This function performs all the required allocations and sets necessary parameters - * to preprocess @p source to @p dest. No extra functions are necessary to call, and - * this function will block until it completes. - * @param dest A pointer to the LRZIP-allocated destination buffer - * @param dest_len A pointer to the length of @p dest - * @param source The allocated source buffer to read from - * @param source_len The length of @p source - * @return true on success, else false - */ -static inline bool lrzip_rcompress(void *dest, unsigned long *dest_len, const void *source, unsigned long source_len) -{ return lrzip_compress_full(dest, dest_len, source, source_len, LRZIP_MODE_COMPRESS_NONE, 7); } - -/** - * @brief Quick setup for performing a compression using LZMA and a user-defined compression level - * This function performs all the required allocations and sets necessary parameters - * to compress @p source to @p dest. No extra functions are necessary to call, and - * this function will block until it completes. - * @param dest A pointer to the LRZIP-allocated destination buffer - * @param dest_len A pointer to the length of @p dest - * @param source The allocated source buffer to read from - * @param source_len The length of @p source - * @param compress_level The value, 1-9, to use as a compression level - * @return true on success, else false - */ -static inline bool lrzip_compress2(void *dest, unsigned long *dest_len, const void *source, unsigned long source_len, int compress_level) -{ return lrzip_compress_full(dest, dest_len, source, source_len, LRZIP_MODE_COMPRESS_LZMA, compress_level); } - -/** - * @brief Quick setup for performing a compression using LZO and a user-defined compression level - * This function performs all the required allocations and sets necessary parameters - * to compress @p source to @p dest. No extra functions are necessary to call, and - * this function will block until it completes. - * @param dest A pointer to the LRZIP-allocated destination buffer - * @param dest_len A pointer to the length of @p dest - * @param source The allocated source buffer to read from - * @param source_len The length of @p source - * @param compress_level The value, 1-9, to use as a compression level - * @return true on success, else false - */ -static inline bool lrzip_lcompress2(void *dest, unsigned long *dest_len, const void *source, unsigned long source_len, int compress_level) -{ return lrzip_compress_full(dest, dest_len, source, source_len, LRZIP_MODE_COMPRESS_LZO, compress_level); } - -/** - * @brief Quick setup for performing a compression using ZLIB (GZIP) and a user-defined compression level - * This function performs all the required allocations and sets necessary parameters - * to compress @p source to @p dest. No extra functions are necessary to call, and - * this function will block until it completes. - * @param dest A pointer to the LRZIP-allocated destination buffer - * @param dest_len A pointer to the length of @p dest - * @param source The allocated source buffer to read from - * @param source_len The length of @p source - * @param compress_level The value, 1-9, to use as a compression level - * @return true on success, else false - */ -static inline bool lrzip_gcompress2(void *dest, unsigned long *dest_len, const void *source, unsigned long source_len, int compress_level) -{ return lrzip_compress_full(dest, dest_len, source, source_len, LRZIP_MODE_COMPRESS_ZLIB, compress_level); } - -/** - * @brief Quick setup for performing a compression using ZPAQ and a user-defined compression level - * This function performs all the required allocations and sets necessary parameters - * to compress @p source to @p dest. No extra functions are necessary to call, and - * this function will block until it completes. - * @param dest A pointer to the LRZIP-allocated destination buffer - * @param dest_len A pointer to the length of @p dest - * @param source The allocated source buffer to read from - * @param source_len The length of @p source - * @param compress_level The value, 1-9, to use as a compression level - * @return true on success, else false - */ -static inline bool lrzip_zcompress2(void *dest, unsigned long *dest_len, const void *source, unsigned long source_len, int compress_level) -{ return lrzip_compress_full(dest, dest_len, source, source_len, LRZIP_MODE_COMPRESS_ZPAQ, compress_level); } - -/** - * @brief Quick setup for performing a compression using BZIP and a user-defined compression level - * This function performs all the required allocations and sets necessary parameters - * to compress @p source to @p dest. No extra functions are necessary to call, and - * this function will block until it completes. - * @param dest A pointer to the LRZIP-allocated destination buffer - * @param dest_len A pointer to the length of @p dest - * @param source The allocated source buffer to read from - * @param source_len The length of @p source - * @param compress_level The value, 1-9, to use as a compression level - * @return true on success, else false - */ -static inline bool lrzip_bcompress2(void *dest, unsigned long *dest_len, const void *source, unsigned long source_len, int compress_level) -{ return lrzip_compress_full(dest, dest_len, source, source_len, LRZIP_MODE_COMPRESS_BZIP2, compress_level); } - -/** - * @brief Quick setup for performing RZIP preprocessing and a user-defined compression level - * This function performs all the required allocations and sets necessary parameters - * to preprocess @p source to @p dest. No extra functions are necessary to call, and - * this function will block until it completes. - * @param dest A pointer to the LRZIP-allocated destination buffer - * @param dest_len A pointer to the length of @p dest - * @param source The allocated source buffer to read from - * @param source_len The length of @p source - * @param compress_level The value, 1-9, to use as a compression level - * @return true on success, else false - */ -static inline bool lrzip_rcompress2(void *dest, unsigned long *dest_len, const void *source, unsigned long source_len, int compress_level) -{ return lrzip_compress_full(dest, dest_len, source, source_len, LRZIP_MODE_COMPRESS_NONE, compress_level); } - -#ifdef __cplusplus -} -#endif - -#endif -