diff options
Diffstat (limited to 'contrib/blast/blast.h')
-rw-r--r-- | contrib/blast/blast.h | 71 |
1 files changed, 71 insertions, 0 deletions
diff --git a/contrib/blast/blast.h b/contrib/blast/blast.h new file mode 100644 index 0000000..2417837 --- /dev/null +++ b/contrib/blast/blast.h | |||
@@ -0,0 +1,71 @@ | |||
1 | /* blast.h -- interface for blast.c | ||
2 | Copyright (C) 2003 Mark Adler | ||
3 | version 1.1, 16 Feb 2003 | ||
4 | |||
5 | This software is provided 'as-is', without any express or implied | ||
6 | warranty. In no event will the author be held liable for any damages | ||
7 | arising from the use of this software. | ||
8 | |||
9 | Permission is granted to anyone to use this software for any purpose, | ||
10 | including commercial applications, and to alter it and redistribute it | ||
11 | freely, subject to the following restrictions: | ||
12 | |||
13 | 1. The origin of this software must not be misrepresented; you must not | ||
14 | claim that you wrote the original software. If you use this software | ||
15 | in a product, an acknowledgment in the product documentation would be | ||
16 | appreciated but is not required. | ||
17 | 2. Altered source versions must be plainly marked as such, and must not be | ||
18 | misrepresented as being the original software. | ||
19 | 3. This notice may not be removed or altered from any source distribution. | ||
20 | |||
21 | Mark Adler madler@alumni.caltech.edu | ||
22 | */ | ||
23 | |||
24 | |||
25 | /* | ||
26 | * blast() decompresses the PKWare Data Compression Library (DCL) compressed | ||
27 | * format. It provides the same functionality as the explode() function in | ||
28 | * that library. (Note: PKWare overused the "implode" verb, and the format | ||
29 | * used by their library implode() function is completely different and | ||
30 | * incompatible with the implode compression method supported by PKZIP.) | ||
31 | */ | ||
32 | |||
33 | |||
34 | typedef unsigned (*blast_in)(void *how, unsigned char **buf); | ||
35 | typedef int (*blast_out)(void *how, unsigned char *buf, unsigned len); | ||
36 | /* Definitions for input/output functions passed to blast(). See below for | ||
37 | * what the provided functions need to do. | ||
38 | */ | ||
39 | |||
40 | |||
41 | int blast(blast_in infun, void *inhow, blast_out outfun, void *outhow); | ||
42 | /* Decompress input to output using the provided infun() and outfun() calls. | ||
43 | * On success, the return value of blast() is zero. If there is an error in | ||
44 | * the source data, i.e. it is not in the proper format, then a negative value | ||
45 | * is returned. If there is not enough input available or there is not enough | ||
46 | * output space, then a positive error is returned. | ||
47 | * | ||
48 | * The input function is invoked: len = infun(how, &buf), where buf is set by | ||
49 | * infun() to point to the input buffer, and infun() returns the number of | ||
50 | * available bytes there. If infun() returns zero, then blast() returns with | ||
51 | * an input error. (blast() only asks for input if it needs it.) inhow is for | ||
52 | * use by the application to pass an input descriptor to infun(), if desired. | ||
53 | * | ||
54 | * The output function is invoked: err = outfun(how, buf, len), where the bytes | ||
55 | * to be written are buf[0..len-1]. If err is not zero, then blast() returns | ||
56 | * with an output error. outfun() is always called with len <= 4096. outhow | ||
57 | * is for use by the application to pass an output descriptor to outfun(), if | ||
58 | * desired. | ||
59 | * | ||
60 | * The return codes are: | ||
61 | * | ||
62 | * 2: ran out of input before completing decompression | ||
63 | * 1: output error before completing decompression | ||
64 | * 0: successful decompression | ||
65 | * -1: literal flag not zero or one | ||
66 | * -2: dictionary size not in 4..6 | ||
67 | * -3: distance is too far back | ||
68 | * | ||
69 | * At the bottom of blast.c is an example program that uses blast() that can be | ||
70 | * compiled to produce a command-line decompression filter by defining TEST. | ||
71 | */ | ||