typedef void * (*alloc_func)(void * opaque, unsigned items, unsigned size); typedef void (*free_func)(void * opaque, void * address); typedef struct z_stream_s { char *msg; alloc_func zalloc; free_func zfree; void * opaque; } z_stream; void * zcalloc(void * opaque, unsigned items, unsigned size); void zcfree(void * opaque, void * ptr); int deflateInit2_(z_stream *strm, int level, int method, int windowBits, int memLevel, int strategy, const char *version, int stream_size) { int noheader = 0; static const char *my_version = "1.1.3"; if (version == 0 || version[0] != my_version[0] || stream_size != sizeof(z_stream)) { return (-6); } if (strm == 0) return (-2); strm->msg = 0; if (strm->zalloc == 0) { strm->zalloc = zcalloc; strm->opaque = (void *)0; } if (strm->zfree == 0) strm->zfree = zcfree; if (level == (-1)) level = 6; if (windowBits < 0) { noheader = 1; windowBits = -windowBits; } if (memLevel < 1 || memLevel > 9 || method != 8 || windowBits < 8 || windowBits > 15 || level < 0 || level > 9 || strategy < 0 || strategy > 2) { return (-2); } (*((strm)->zalloc))((strm)->opaque, (1), 112); return 0; }