forked from luck/tmp_suning_uos_patched
bzip2/lzma/gzip: fix comments describing decompressor API
Fix and improve comments in decompress/generic.h that describe the decompressor API. Also remove an unused definition, and rename INBUF_LEN in lib/decompress_inflate.c to conform to bzip2/lzma naming. Signed-off-by: Phillip Lougher <phillip@lougher.demon.co.uk> Cc: "H. Peter Anvin" <hpa@zytor.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
parent
9c8a8228d0
commit
daeb6b6fbe
|
@ -1,31 +1,37 @@
|
|||
#ifndef DECOMPRESS_GENERIC_H
|
||||
#define DECOMPRESS_GENERIC_H
|
||||
|
||||
/* Minimal chunksize to be read.
|
||||
*Bzip2 prefers at least 4096
|
||||
*Lzma prefers 0x10000 */
|
||||
#define COMPR_IOBUF_SIZE 4096
|
||||
|
||||
typedef int (*decompress_fn) (unsigned char *inbuf, int len,
|
||||
int(*fill)(void*, unsigned int),
|
||||
int(*writebb)(void*, unsigned int),
|
||||
unsigned char *output,
|
||||
int(*flush)(void*, unsigned int),
|
||||
unsigned char *outbuf,
|
||||
int *posp,
|
||||
void(*error)(char *x));
|
||||
|
||||
/* inbuf - input buffer
|
||||
*len - len of pre-read data in inbuf
|
||||
*fill - function to fill inbuf if empty
|
||||
*writebb - function to write out outbug
|
||||
*fill - function to fill inbuf when empty
|
||||
*flush - function to write out outbuf
|
||||
*outbuf - output buffer
|
||||
*posp - if non-null, input position (number of bytes read) will be
|
||||
* returned here
|
||||
*
|
||||
*If len != 0, the inbuf is initialized (with as much data), and fill
|
||||
*should not be called
|
||||
*If len = 0, the inbuf is allocated, but empty. Its size is IOBUF_SIZE
|
||||
*fill should be called (repeatedly...) to read data, at most IOBUF_SIZE
|
||||
*If len != 0, inbuf should contain all the necessary input data, and fill
|
||||
*should be NULL
|
||||
*If len = 0, inbuf can be NULL, in which case the decompressor will allocate
|
||||
*the input buffer. If inbuf != NULL it must be at least XXX_IOBUF_SIZE bytes.
|
||||
*fill will be called (repeatedly...) to read data, at most XXX_IOBUF_SIZE
|
||||
*bytes should be read per call. Replace XXX with the appropriate decompressor
|
||||
*name, i.e. LZMA_IOBUF_SIZE.
|
||||
*
|
||||
*If flush = NULL, outbuf must be large enough to buffer all the expected
|
||||
*output. If flush != NULL, the output buffer will be allocated by the
|
||||
*decompressor (outbuf = NULL), and the flush function will be called to
|
||||
*flush the output buffer at the appropriate time (decompressor and stream
|
||||
*dependent).
|
||||
*/
|
||||
|
||||
|
||||
/* Utility routine to detect the decompression method */
|
||||
decompress_fn decompress_method(const unsigned char *inbuf, int len,
|
||||
const char **name);
|
||||
|
|
|
@ -25,7 +25,7 @@
|
|||
#include <linux/decompress/mm.h>
|
||||
#include <linux/slab.h>
|
||||
|
||||
#define INBUF_LEN (16*1024)
|
||||
#define GZIP_IOBUF_SIZE (16*1024)
|
||||
|
||||
/* Included from initramfs et al code */
|
||||
STATIC int INIT gunzip(unsigned char *buf, int len,
|
||||
|
@ -55,7 +55,7 @@ STATIC int INIT gunzip(unsigned char *buf, int len,
|
|||
if (buf)
|
||||
zbuf = buf;
|
||||
else {
|
||||
zbuf = malloc(INBUF_LEN);
|
||||
zbuf = malloc(GZIP_IOBUF_SIZE);
|
||||
len = 0;
|
||||
}
|
||||
if (!zbuf) {
|
||||
|
@ -77,7 +77,7 @@ STATIC int INIT gunzip(unsigned char *buf, int len,
|
|||
}
|
||||
|
||||
if (len == 0)
|
||||
len = fill(zbuf, INBUF_LEN);
|
||||
len = fill(zbuf, GZIP_IOBUF_SIZE);
|
||||
|
||||
/* verify the gzip header */
|
||||
if (len < 10 ||
|
||||
|
@ -113,7 +113,7 @@ STATIC int INIT gunzip(unsigned char *buf, int len,
|
|||
while (rc == Z_OK) {
|
||||
if (strm->avail_in == 0) {
|
||||
/* TODO: handle case where both pos and fill are set */
|
||||
len = fill(zbuf, INBUF_LEN);
|
||||
len = fill(zbuf, GZIP_IOBUF_SIZE);
|
||||
if (len < 0) {
|
||||
rc = -1;
|
||||
error("read error");
|
||||
|
|
Loading…
Reference in New Issue
Block a user