@@ -0,0 +1,56 @@
1+#include <zlib.h>
2+#include <stdlib.h>
3+#include <assert.h>
4+#include <stdio.h>
5+
6+z_stream * create_z_stream (void)
7+{
8+ z_stream *ret = malloc(sizeof(z_stream));
9+ ret->zalloc = Z_NULL;
10+ ret->zfree = Z_NULL;
11+ ret->opaque = Z_NULL;
12+ ret->next_in = NULL;
13+ ret->avail_in = 0;
14+
15+ if (deflateInit2(ret, 7, Z_DEFLATED, 31, 8, Z_DEFAULT_STRATEGY)
16+ != Z_OK) return NULL;
17+ else return ret;
18+}
19+
20+void free_z_stream (z_stream *stream)
21+{
22+ deflateEnd(stream);
23+ free(stream);
24+}
25+
26+void set_avail_in (z_stream *stream, char *buff, unsigned int avail)
27+{
28+ stream->next_in = buff;
29+ stream->avail_in = avail;
30+}
31+
32+void set_avail_out (z_stream *stream, char *buff, unsigned int avail)
33+{
34+ stream->next_out = buff;
35+ stream->avail_out = avail;
36+}
37+
38+void call_deflate_noflush (z_stream *stream)
39+{
40+ int ret;
41+ ret = deflate(stream, Z_NO_FLUSH);
42+ assert (ret == Z_OK);
43+}
44+
45+int call_deflate_finish (z_stream *stream)
46+{
47+ int ret;
48+ ret = deflate(stream, Z_FINISH);
49+ assert (ret == Z_OK || ret == Z_STREAM_END);
50+ return ret;
51+}
52+
53+unsigned int get_avail_out (z_stream *stream)
54+{
55+ return stream->avail_out;
56+}