compress2 -- compress data at a specified level


#include <zlib.h>

int compress2(Bytef * dest, uLongf * destLen, const Bytef * source, uLong sourceLen, int level);


The compress2() function shall attempt to compress sourceLen bytes of data in the buffer source, placing the result in the buffer dest, at the level described by level. The level supplied shall be a value between 0 and 9, or the value Z_DEFAULT_COMPRESSION. A level of 1 requests the highest speed, while a level of 9 requests the highest compression. A level of 0 indicates that no compression should be used, and the output shall be the same as the input.

On entry, destLen should point to a value describing the size of the dest buffer. The application should ensure that this value be at least (sourceLen 1.001) + 12. On successful exit, the variable referenced by destLen shall be updated to hold the length of compressed data in dest.

The compress() function is equivalent to compress2() with a level of Z_DEFAULT_COMPRESSION.

Return Value

On success, compress2() shall return Z_OK. Otherwise, compress2() shall return a value to indicate the error.


On error, compress2() shall return a value as described below:


The buffer dest was not large enough to hold the compressed data.


Insufficient memory.


The level was not Z_DEFAULT_COMPRESSION, or was not between 0 and 9.