=========================================================================== 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
| 20 | Z_STREAM_ERROR if the level parameter is invalid. |
| 21 | */ |
| 22 | int 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 | */ |
no test coverage detected