static SquashStatus squash_libdeflate_compress_buffer (SquashCodec* codec, size_t* compressed_size, uint8_t compressed[HEDLEY_ARRAY_PARAM(*compressed_size)], size_t uncompressed_size, const uint8_t uncompressed[HEDLEY_ARRAY_PARAM(uncompressed_size)], SquashOptions* options) { const int level = squash_options_get_int_at (options, codec, SQUASH_LIBDEFLATE_OPT_LEVEL); struct deflate_compressor *compressor = deflate_alloc_compressor(level); *compressed_size = deflate_compress(compressor, uncompressed, uncompressed_size, compressed, *compressed_size); deflate_free_compressor(compressor); return HEDLEY_LIKELY(*compressed_size != 0) ? SQUASH_OK : squash_error (SQUASH_BUFFER_FULL); }
int libdeflate_deflate( unsigned char *dest, size_t *destLen, const unsigned char *source, size_t sourceLen, int level ){ struct deflate_compressor *comp=deflate_alloc_compressor(level); size_t siz=deflate_compress(comp,source,sourceLen,dest,*destLen); deflate_free_compressor(comp); if(!siz)return !Z_OK; *destLen=siz; return Z_OK; }