MCPcopy Create free account
hub / github.com/RsyncProject/rsync / compress2

Function compress2

zlib/compress.c:22–53  ·  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, uLong sourceLen, int level)
23{
24 z_stream stream;
25 int err;
26
27 stream.next_in = (z_const Bytef *)source;
28 stream.avail_in = (uInt)sourceLen;
29#ifdef MAXSEG_64K
30 /* Check for source > 64K on 16-bit machine: */
31 if ((uLong)stream.avail_in != sourceLen) return Z_BUF_ERROR;
32#endif
33 stream.next_out = dest;
34 stream.avail_out = (uInt)*destLen;
35 if ((uLong)stream.avail_out != *destLen) return Z_BUF_ERROR;
36
37 stream.zalloc = (alloc_func)0;
38 stream.zfree = (free_func)0;
39 stream.opaque = (voidpf)0;
40
41 err = deflateInit(&stream, level);
42 if (err != Z_OK) return err;
43
44 err = deflate(&stream, Z_FINISH);
45 if (err != Z_STREAM_END) {
46 deflateEnd(&stream);
47 return err == Z_OK ? Z_BUF_ERROR : err;
48 }
49 *destLen = stream.total_out;
50
51 err = deflateEnd(&stream);
52 return err;
53}
54
55/* ===========================================================================
56 */

Callers 1

compressFunction · 0.85

Calls 2

deflateFunction · 0.85
deflateEndFunction · 0.85

Tested by

no test coverage detected