MCPcopy Create free account
hub / github.com/InteractiveComputerGraphics/SPlisHSPlasH / compress2

Function compress2

extern/zlib/src/compress.c:22–59  ·  view source on GitHub ↗

=========================================================================== Compresses the source buffer into the destination buffer. The level parameter has the same meaning as in deflateInit. sourceLen is the byte length of the source buffer. Upon entry, destLen is the total size of the destination buffer, which must be at least 0.1% larger than sourceLen plus 12 bytes. Upon ex

Source from the content-addressed store, hash-verified

20 Z_STREAM_ERROR if the level parameter is invalid.
21*/
22int ZEXPORT compress2(Bytef *dest, uLongf *destLen, const Bytef *source,
23 uLong sourceLen, int level) {
24 z_stream stream;
25 int err;
26 const uInt max = (uInt)-1;
27 uLong left;
28
29 left = *destLen;
30 *destLen = 0;
31
32 stream.zalloc = (alloc_func)0;
33 stream.zfree = (free_func)0;
34 stream.opaque = (voidpf)0;
35
36 err = deflateInit(&stream, level);
37 if (err != Z_OK) return err;
38
39 stream.next_out = dest;
40 stream.avail_out = 0;
41 stream.next_in = (z_const Bytef *)source;
42 stream.avail_in = 0;
43
44 do {
45 if (stream.avail_out == 0) {
46 stream.avail_out = left > (uLong)max ? max : (uInt)left;
47 left -= stream.avail_out;
48 }
49 if (stream.avail_in == 0) {
50 stream.avail_in = sourceLen > (uLong)max ? max : (uInt)sourceLen;
51 sourceLen -= stream.avail_in;
52 }
53 err = deflate(&stream, sourceLen ? Z_NO_FLUSH : Z_FINISH);
54 } while (err == Z_OK);
55
56 *destLen = stream.total_out;
57 deflateEnd(&stream);
58 return err == Z_STREAM_END ? Z_OK : err;
59}
60
61/* ===========================================================================
62 */

Callers 1

compressFunction · 0.85

Calls 2

deflateFunction · 0.85
deflateEndFunction · 0.85

Tested by

no test coverage detected