51 #include <config_auto.h> 54 #include "allheaders.h" 63 static const l_int32 ZLIB_COMPRESSION_LEVEL = 6;
97 l_int32 status, success;
100 l_uint8 *bufferin, *bufferout;
104 PROCNAME(
"zlibCompress");
107 return (l_uint8 *)ERROR_PTR(
"datain not defined", procName, NULL);
110 bufferin = (l_uint8 *)LEPT_CALLOC(
L_BUF_SIZE,
sizeof(l_uint8));
111 bufferout = (l_uint8 *)LEPT_CALLOC(
L_BUF_SIZE,
sizeof(l_uint8));
118 if (!bufferin || !bufferout || !bbin || !bbout) {
119 L_ERROR(
"calloc fail for buffer\n", procName);
124 z.zalloc = (alloc_func)0;
125 z.zfree = (free_func)0;
126 z.opaque = (voidpf)0;
128 z.next_in = bufferin;
130 z.next_out = bufferout;
133 status = deflateInit(&z, ZLIB_COMPRESSION_LEVEL);
134 if (status != Z_OK) {
135 L_ERROR(
"deflateInit failed\n", procName);
141 if (z.avail_in == 0) {
142 z.next_in = bufferin;
145 lept_stderr(
" wrote %zu bytes to bufferin\n", nbytes);
149 flush = (bbin->
n) ? Z_SYNC_FLUSH : Z_FINISH;
150 status = deflate(&z, flush);
152 lept_stderr(
" status is %d, bytesleft = %u, totalout = %zu\n",
153 status, z.avail_out, z.total_out);
159 lept_stderr(
" read %zu bytes from bufferout\n", nbytes);
162 z.next_out = bufferout;
164 }
while (flush != Z_FINISH);
177 LEPT_FREE(bufferout);
201 l_uint8 *bufferin, *bufferout;
202 l_int32 status, success;
207 PROCNAME(
"zlibUncompress");
210 return (l_uint8 *)ERROR_PTR(
"datain not defined", procName, NULL);
213 bufferin = (l_uint8 *)LEPT_CALLOC(
L_BUF_SIZE,
sizeof(l_uint8));
214 bufferout = (l_uint8 *)LEPT_CALLOC(
L_BUF_SIZE,
sizeof(l_uint8));
221 if (!bufferin || !bufferout || !bbin || !bbout) {
222 L_ERROR(
"calloc fail for buffer\n", procName);
227 z.zalloc = (alloc_func)0;
228 z.zfree = (free_func)0;
230 z.next_in = bufferin;
232 z.next_out = bufferout;
239 if (z.avail_in == 0) {
240 z.next_in = bufferin;
243 lept_stderr(
" wrote %d bytes to bufferin\n", nbytes);
249 status = inflate(&z, Z_SYNC_FLUSH);
251 lept_stderr(
" status is %d, bytesleft = %d, totalout = %d\n",
252 status, z.avail_out, z.total_out);
258 lept_stderr(
" read %d bytes from bufferout\n", nbytes);
261 z.next_out = bufferout;
276 LEPT_FREE(bufferout);
L_BBUFFER * bbufferCreate(const l_uint8 *indata, l_int32 nalloc)
bbufferCreate()
l_ok bbufferWrite(L_BBUFFER *bb, l_uint8 *dest, size_t nbytes, size_t *pnout)
bbufferWrite()
void lept_stderr(const char *fmt,...)
lept_stderr()
l_uint8 * zlibUncompress(const l_uint8 *datain, size_t nin, size_t *pnout)
zlibUncompress()
l_uint8 * bbufferDestroyAndSaveData(L_BBUFFER **pbb, size_t *pnbytes)
bbufferDestroyAndSaveData()
void bbufferDestroy(L_BBUFFER **pbb)
bbufferDestroy()
l_ok bbufferRead(L_BBUFFER *bb, l_uint8 *src, l_int32 nbytes)
bbufferRead()
l_uint8 * zlibCompress(const l_uint8 *datain, size_t nin, size_t *pnout)
zlibCompress()