diff options
Diffstat (limited to 'package/heirloom-cpio/src/blast.h')
| -rw-r--r-- | package/heirloom-cpio/src/blast.h | 76 | 
1 files changed, 76 insertions, 0 deletions
| diff --git a/package/heirloom-cpio/src/blast.h b/package/heirloom-cpio/src/blast.h new file mode 100644 index 000000000..0c16d1391 --- /dev/null +++ b/package/heirloom-cpio/src/blast.h @@ -0,0 +1,76 @@ +/* + * Changes by Gunnar Ritter, Freiburg i. Br., Germany, February 2004. + * + * Sccsid @(#)blast.h	1.2 (gritter) 2/17/04 + */ +/* blast.h -- interface for blast.c +  Copyright (C) 2003 Mark Adler +  version 1.1, 16 Feb 2003 + +  This software is provided 'as-is', without any express or implied +  warranty.  In no event will the author be held liable for any damages +  arising from the use of this software. + +  Permission is granted to anyone to use this software for any purpose, +  including commercial applications, and to alter it and redistribute it +  freely, subject to the following restrictions: + +  1. The origin of this software must not be misrepresented; you must not +     claim that you wrote the original software. If you use this software +     in a product, an acknowledgment in the product documentation would be +     appreciated but is not required. +  2. Altered source versions must be plainly marked as such, and must not be +     misrepresented as being the original software. +  3. This notice may not be removed or altered from any source distribution. + +  Mark Adler    madler@alumni.caltech.edu + */ + + +/* + * blast() decompresses the PKWare Data Compression Library (DCL) compressed + * format.  It provides the same functionality as the explode() function in + * that library.  (Note: PKWare overused the "implode" verb, and the format + * used by their library implode() function is completely different and + * incompatible with the implode compression method supported by PKZIP.) + */ + + +typedef unsigned (*blast_in)(void *how, unsigned char **buf); +typedef int (*blast_out)(void *how, unsigned char *buf, unsigned len); +/* Definitions for input/output functions passed to blast().  See below for + * what the provided functions need to do. + */ + + +int blast(blast_in infun, void *inhow, blast_out outfun, void *outhow); +/* Decompress input to output using the provided infun() and outfun() calls. + * On success, the return value of blast() is zero.  If there is an error in + * the source data, i.e. it is not in the proper format, then a negative value + * is returned.  If there is not enough input available or there is not enough + * output space, then a positive error is returned. + * + * The input function is invoked: len = infun(how, &buf), where buf is set by + * infun() to point to the input buffer, and infun() returns the number of + * available bytes there.  If infun() returns zero, then blast() returns with + * an input error.  (blast() only asks for input if it needs it.)  inhow is for + * use by the application to pass an input descriptor to infun(), if desired. + * + * The output function is invoked: err = outfun(how, buf, len), where the bytes + * to be written are buf[0..len-1].  If err is not zero, then blast() returns + * with an output error.  outfun() is always called with len <= 4096.  outhow + * is for use by the application to pass an output descriptor to outfun(), if + * desired. + * + * The return codes are: + * + *   2:  ran out of input before completing decompression + *   1:  output error before completing decompression + *   0:  successful decompression + *  -1:  literal flag not zero or one + *  -2:  dictionary size not in 4..6 + *  -3:  distance is too far back + * + * At the bottom of blast.c is an example program that uses blast() that can be + * compiled to produce a command-line decompression filter by defining TEST. + */ | 
