Mercurial > hg > sv-dependency-builds
comparison src/zlib-1.2.8/contrib/blast/blast.h @ 128:5b4145a0d408
Current zlib source
author | Chris Cannam <cannam@all-day-breakfast.com> |
---|---|
date | Tue, 18 Oct 2016 14:33:52 +0100 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
127:7867fa7e1b6b | 128:5b4145a0d408 |
---|---|
1 /* blast.h -- interface for blast.c | |
2 Copyright (C) 2003, 2012 Mark Adler | |
3 version 1.2, 24 Oct 2012 | |
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 * The binary mode for stdio functions should be used to assure that the | |
33 * compressed data is not corrupted when read or written. For example: | |
34 * fopen(..., "rb") and fopen(..., "wb"). | |
35 */ | |
36 | |
37 | |
38 typedef unsigned (*blast_in)(void *how, unsigned char **buf); | |
39 typedef int (*blast_out)(void *how, unsigned char *buf, unsigned len); | |
40 /* Definitions for input/output functions passed to blast(). See below for | |
41 * what the provided functions need to do. | |
42 */ | |
43 | |
44 | |
45 int blast(blast_in infun, void *inhow, blast_out outfun, void *outhow); | |
46 /* Decompress input to output using the provided infun() and outfun() calls. | |
47 * On success, the return value of blast() is zero. If there is an error in | |
48 * the source data, i.e. it is not in the proper format, then a negative value | |
49 * is returned. If there is not enough input available or there is not enough | |
50 * output space, then a positive error is returned. | |
51 * | |
52 * The input function is invoked: len = infun(how, &buf), where buf is set by | |
53 * infun() to point to the input buffer, and infun() returns the number of | |
54 * available bytes there. If infun() returns zero, then blast() returns with | |
55 * an input error. (blast() only asks for input if it needs it.) inhow is for | |
56 * use by the application to pass an input descriptor to infun(), if desired. | |
57 * | |
58 * The output function is invoked: err = outfun(how, buf, len), where the bytes | |
59 * to be written are buf[0..len-1]. If err is not zero, then blast() returns | |
60 * with an output error. outfun() is always called with len <= 4096. outhow | |
61 * is for use by the application to pass an output descriptor to outfun(), if | |
62 * desired. | |
63 * | |
64 * The return codes are: | |
65 * | |
66 * 2: ran out of input before completing decompression | |
67 * 1: output error before completing decompression | |
68 * 0: successful decompression | |
69 * -1: literal flag not zero or one | |
70 * -2: dictionary size not in 4..6 | |
71 * -3: distance is too far back | |
72 * | |
73 * At the bottom of blast.c is an example program that uses blast() that can be | |
74 * compiled to produce a command-line decompression filter by defining TEST. | |
75 */ |