提交 daeb6b6f 编写于 作者: P Phillip Lougher 提交者: Linus Torvalds

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: NPhillip Lougher <phillip@lougher.demon.co.uk>
Cc: "H. Peter Anvin" <hpa@zytor.com>
Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
上级 9c8a8228
#ifndef DECOMPRESS_GENERIC_H #ifndef DECOMPRESS_GENERIC_H
#define 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, typedef int (*decompress_fn) (unsigned char *inbuf, int len,
int(*fill)(void*, unsigned int), int(*fill)(void*, unsigned int),
int(*writebb)(void*, unsigned int), int(*flush)(void*, unsigned int),
unsigned char *output, unsigned char *outbuf,
int *posp, int *posp,
void(*error)(char *x)); void(*error)(char *x));
/* inbuf - input buffer /* inbuf - input buffer
*len - len of pre-read data in inbuf *len - len of pre-read data in inbuf
*fill - function to fill inbuf if empty *fill - function to fill inbuf when empty
*writebb - function to write out outbug *flush - function to write out outbuf
*outbuf - output buffer
*posp - if non-null, input position (number of bytes read) will be *posp - if non-null, input position (number of bytes read) will be
* returned here * returned here
* *
*If len != 0, the inbuf is initialized (with as much data), and fill *If len != 0, inbuf should contain all the necessary input data, and fill
*should not be called *should be NULL
*If len = 0, the inbuf is allocated, but empty. Its size is IOBUF_SIZE *If len = 0, inbuf can be NULL, in which case the decompressor will allocate
*fill should be called (repeatedly...) to read data, at most IOBUF_SIZE *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 */ /* Utility routine to detect the decompression method */
decompress_fn decompress_method(const unsigned char *inbuf, int len, decompress_fn decompress_method(const unsigned char *inbuf, int len,
const char **name); const char **name);
......
...@@ -25,7 +25,7 @@ ...@@ -25,7 +25,7 @@
#include <linux/decompress/mm.h> #include <linux/decompress/mm.h>
#include <linux/slab.h> #include <linux/slab.h>
#define INBUF_LEN (16*1024) #define GZIP_IOBUF_SIZE (16*1024)
/* Included from initramfs et al code */ /* Included from initramfs et al code */
STATIC int INIT gunzip(unsigned char *buf, int len, STATIC int INIT gunzip(unsigned char *buf, int len,
...@@ -55,7 +55,7 @@ STATIC int INIT gunzip(unsigned char *buf, int len, ...@@ -55,7 +55,7 @@ STATIC int INIT gunzip(unsigned char *buf, int len,
if (buf) if (buf)
zbuf = buf; zbuf = buf;
else { else {
zbuf = malloc(INBUF_LEN); zbuf = malloc(GZIP_IOBUF_SIZE);
len = 0; len = 0;
} }
if (!zbuf) { if (!zbuf) {
...@@ -77,7 +77,7 @@ STATIC int INIT gunzip(unsigned char *buf, int len, ...@@ -77,7 +77,7 @@ STATIC int INIT gunzip(unsigned char *buf, int len,
} }
if (len == 0) if (len == 0)
len = fill(zbuf, INBUF_LEN); len = fill(zbuf, GZIP_IOBUF_SIZE);
/* verify the gzip header */ /* verify the gzip header */
if (len < 10 || if (len < 10 ||
...@@ -113,7 +113,7 @@ STATIC int INIT gunzip(unsigned char *buf, int len, ...@@ -113,7 +113,7 @@ STATIC int INIT gunzip(unsigned char *buf, int len,
while (rc == Z_OK) { while (rc == Z_OK) {
if (strm->avail_in == 0) { if (strm->avail_in == 0) {
/* TODO: handle case where both pos and fill are set */ /* TODO: handle case where both pos and fill are set */
len = fill(zbuf, INBUF_LEN); len = fill(zbuf, GZIP_IOBUF_SIZE);
if (len < 0) { if (len < 0) {
rc = -1; rc = -1;
error("read error"); error("read error");
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册