diff options
Diffstat (limited to 'linux/include/linux/xz.h')
-rw-r--r-- | linux/include/linux/xz.h | 154 |
1 files changed, 3 insertions, 151 deletions
diff --git a/linux/include/linux/xz.h b/linux/include/linux/xz.h index f3801eb..0a4b38d 100644 --- a/linux/include/linux/xz.h +++ b/linux/include/linux/xz.h @@ -2,7 +2,7 @@ * XZ decompressor * * Authors: Lasse Collin <lasse.collin@tukaani.org> - * Igor Pavlov <https://7-zip.org/> + * Igor Pavlov <http://7-zip.org/> * * This file has been put into the public domain. * You can do whatever you want with this file. @@ -32,7 +32,7 @@ extern "C" { * enum xz_mode - Operation mode * * @XZ_SINGLE: Single-call mode. This uses less RAM than - * multi-call modes, because the LZMA2 + * than multi-call modes, because the LZMA2 * dictionary doesn't need to be allocated as * part of the decoder state. All required data * structures are allocated at initialization, @@ -198,7 +198,7 @@ struct xz_dec; XZ_EXTERN struct xz_dec *xz_dec_init(enum xz_mode mode, uint32_t dict_max); /** - * xz_dec_run() - Run the XZ decoder for a single XZ stream + * xz_dec_run() - Run the XZ decoder * @s: Decoder state allocated using xz_dec_init() * @b: Input and output buffers * @@ -214,52 +214,10 @@ XZ_EXTERN struct xz_dec *xz_dec_init(enum xz_mode mode, uint32_t dict_max); * cannot give the single-call decoder a too small buffer and then expect to * get that amount valid data from the beginning of the stream. You must use * the multi-call decoder if you don't want to uncompress the whole stream. - * - * Use xz_dec_run() when XZ data is stored inside some other file format. - * The decoding will stop after one XZ stream has been decompresed. To - * decompress regular .xz files which might have multiple concatenated - * streams, use xz_dec_catrun() instead. */ XZ_EXTERN enum xz_ret xz_dec_run(struct xz_dec *s, struct xz_buf *b); /** - * xz_dec_catrun() - Run the XZ decoder with support for concatenated streams - * @s: Decoder state allocated using xz_dec_init() - * @b: Input and output buffers - * @finish: This is an int instead of bool to avoid requiring stdbool.h. - * As long as more input might be coming, finish must be false. - * When the caller knows that it has provided all the input to - * the decoder (some possibly still in b->in), it must set finish - * to true. Only when finish is true can this function return - * XZ_STREAM_END to indicate successful decompression of the - * file. In single-call mode (XZ_SINGLE) finish is assumed to - * always be true; the caller-provided value is ignored. - * - * This is like xz_dec_run() except that this makes it easy to decode .xz - * files with multiple streams (multiple .xz files concatenated as is). - * The rarely-used Stream Padding feature is supported too, that is, there - * can be null bytes after or between the streams. The number of null bytes - * must be a multiple of four. - * - * When finish is false and b->in_pos == b->in_size, it is possible that - * XZ_BUF_ERROR isn't returned even when no progress is possible (XZ_OK is - * returned instead). This shouldn't matter because in this situation a - * reasonable caller will attempt to provide more input or set finish to - * true for the next xz_dec_catrun() call anyway. - * - * For any struct xz_dec that has been initialized for multi-call mode: - * Once decoding has been started with xz_dec_run() or xz_dec_catrun(), - * the same function must be used until xz_dec_reset() or xz_dec_end(). - * Switching between the two decoding functions without resetting results - * in undefined behavior. - * - * xz_dec_catrun() is only available if XZ_DEC_CONCATENATED was defined - * at compile time. - */ -XZ_EXTERN enum xz_ret xz_dec_catrun(struct xz_dec *s, struct xz_buf *b, - int finish); - -/** * xz_dec_reset() - Reset an already allocated decoder state * @s: Decoder state allocated using xz_dec_init() * @@ -280,112 +238,6 @@ XZ_EXTERN void xz_dec_reset(struct xz_dec *s); XZ_EXTERN void xz_dec_end(struct xz_dec *s); /* - * Decompressor for MicroLZMA, an LZMA variant with a very minimal header. - * See xz_dec_microlzma_alloc() below for details. - * - * These functions aren't used or available in preboot code and thus aren't - * marked with XZ_EXTERN. This avoids warnings about static functions that - * are never defined. - */ -/** - * struct xz_dec_microlzma - Opaque type to hold the MicroLZMA decoder state - */ -struct xz_dec_microlzma; - -/** - * xz_dec_microlzma_alloc() - Allocate memory for the MicroLZMA decoder - * @mode XZ_SINGLE or XZ_PREALLOC - * @dict_size LZMA dictionary size. This must be at least 4 KiB and - * at most 3 GiB. - * - * In contrast to xz_dec_init(), this function only allocates the memory - * and remembers the dictionary size. xz_dec_microlzma_reset() must be used - * before calling xz_dec_microlzma_run(). - * - * The amount of allocated memory is a little less than 30 KiB with XZ_SINGLE. - * With XZ_PREALLOC also a dictionary buffer of dict_size bytes is allocated. - * - * On success, xz_dec_microlzma_alloc() returns a pointer to - * struct xz_dec_microlzma. If memory allocation fails or - * dict_size is invalid, NULL is returned. - * - * The compressed format supported by this decoder is a raw LZMA stream - * whose first byte (always 0x00) has been replaced with bitwise-negation - * of the LZMA properties (lc/lp/pb) byte. For example, if lc/lp/pb is - * 3/0/2, the first byte is 0xA2. This way the first byte can never be 0x00. - * Just like with LZMA2, lc + lp <= 4 must be true. The LZMA end-of-stream - * marker must not be used. The unused values are reserved for future use. - * This MicroLZMA header format was created for use in EROFS but may be used - * by others too. - */ -extern struct xz_dec_microlzma *xz_dec_microlzma_alloc(enum xz_mode mode, - uint32_t dict_size); - -/** - * xz_dec_microlzma_reset() - Reset the MicroLZMA decoder state - * @s Decoder state allocated using xz_dec_microlzma_alloc() - * @comp_size Compressed size of the input stream - * @uncomp_size Uncompressed size of the input stream. A value smaller - * than the real uncompressed size of the input stream can - * be specified if uncomp_size_is_exact is set to false. - * uncomp_size can never be set to a value larger than the - * expected real uncompressed size because it would eventually - * result in XZ_DATA_ERROR. - * @uncomp_size_is_exact This is an int instead of bool to avoid - * requiring stdbool.h. This should normally be set to true. - * When this is set to false, error detection is weaker. - */ -extern void xz_dec_microlzma_reset(struct xz_dec_microlzma *s, - uint32_t comp_size, uint32_t uncomp_size, - int uncomp_size_is_exact); - -/** - * xz_dec_microlzma_run() - Run the MicroLZMA decoder - * @s Decoder state initialized using xz_dec_microlzma_reset() - * @b: Input and output buffers - * - * This works similarly to xz_dec_run() with a few important differences. - * Only the differences are documented here. - * - * The only possible return values are XZ_OK, XZ_STREAM_END, and - * XZ_DATA_ERROR. This function cannot return XZ_BUF_ERROR: if no progress - * is possible due to lack of input data or output space, this function will - * keep returning XZ_OK. Thus, the calling code must be written so that it - * will eventually provide input and output space matching (or exceeding) - * comp_size and uncomp_size arguments given to xz_dec_microlzma_reset(). - * If the caller cannot do this (for example, if the input file is truncated - * or otherwise corrupt), the caller must detect this error by itself to - * avoid an infinite loop. - * - * If the compressed data seems to be corrupt, XZ_DATA_ERROR is returned. - * This can happen also when incorrect dictionary, uncompressed, or - * compressed sizes have been specified. - * - * With XZ_PREALLOC only: As an extra feature, b->out may be NULL to skip over - * uncompressed data. This way the caller doesn't need to provide a temporary - * output buffer for the bytes that will be ignored. - * - * With XZ_SINGLE only: In contrast to xz_dec_run(), the return value XZ_OK - * is also possible and thus XZ_SINGLE is actually a limited multi-call mode. - * After XZ_OK the bytes decoded so far may be read from the output buffer. - * It is possible to continue decoding but the variables b->out and b->out_pos - * MUST NOT be changed by the caller. Increasing the value of b->out_size is - * allowed to make more output space available; one doesn't need to provide - * space for the whole uncompressed data on the first call. The input buffer - * may be changed normally like with XZ_PREALLOC. This way input data can be - * provided from non-contiguous memory. - */ -extern enum xz_ret xz_dec_microlzma_run(struct xz_dec_microlzma *s, - struct xz_buf *b); - -/** - * xz_dec_microlzma_end() - Free the memory allocated for the decoder state - * @s: Decoder state allocated using xz_dec_microlzma_alloc(). - * If s is NULL, this function does nothing. - */ -extern void xz_dec_microlzma_end(struct xz_dec_microlzma *s); - -/* * Standalone build (userspace build or in-kernel build for boot time use) * needs a CRC32 implementation. For normal in-kernel use, kernel's own * CRC32 module is used instead, and users of this module don't need to |