|
@@ -225,33 +225,7 @@ unsigned long grfio_crc32 (const unsigned char* buf, unsigned int len)
|
|
|
/// Grf data sub : zip decode
|
|
|
int decode_zip(unsigned char* dest, unsigned long* destLen, const unsigned char* source, unsigned long sourceLen)
|
|
|
{
|
|
|
- z_stream stream;
|
|
|
- int err;
|
|
|
-
|
|
|
- stream.next_in = (Bytef*)source;
|
|
|
- stream.avail_in = (uInt)sourceLen;
|
|
|
- // Check for source > 64K on 16-bit machine:
|
|
|
- if ((uLong)stream.avail_in != sourceLen) return Z_BUF_ERROR;
|
|
|
-
|
|
|
- stream.next_out = (Bytef*) dest;
|
|
|
- stream.avail_out = (uInt)*destLen;
|
|
|
- if ((unsigned long)stream.avail_out != *destLen) return Z_BUF_ERROR;
|
|
|
-
|
|
|
- stream.zalloc = (alloc_func)0;
|
|
|
- stream.zfree = (free_func)0;
|
|
|
-
|
|
|
- err = inflateInit(&stream);
|
|
|
- if (err != Z_OK) return err;
|
|
|
-
|
|
|
- err = inflate(&stream, Z_FINISH);
|
|
|
- if (err != Z_STREAM_END) {
|
|
|
- inflateEnd(&stream);
|
|
|
- return err == Z_OK ? Z_BUF_ERROR : err;
|
|
|
- }
|
|
|
- *destLen = stream.total_out;
|
|
|
-
|
|
|
- err = inflateEnd(&stream);
|
|
|
- return err;
|
|
|
+ return uncompress(dest, destLen, source, sourceLen);
|
|
|
}
|
|
|
|
|
|
|
|
@@ -259,33 +233,7 @@ int decode_zip(unsigned char* dest, unsigned long* destLen, const unsigned char*
|
|
|
/// Grf data sub : zip encode
|
|
|
int encode_zip(unsigned char* dest, unsigned long* destLen, const unsigned char* source, unsigned long sourceLen)
|
|
|
{
|
|
|
- z_stream stream;
|
|
|
- int err;
|
|
|
-
|
|
|
- stream.next_in = (Bytef*)source;
|
|
|
- stream.avail_in = (uInt)sourceLen;
|
|
|
- // Check for source > 64K on 16-bit machine:
|
|
|
- if ((uLong)stream.avail_in != sourceLen) return Z_BUF_ERROR;
|
|
|
-
|
|
|
- stream.next_out = (Bytef*) dest;
|
|
|
- stream.avail_out = (uInt)*destLen;
|
|
|
- if ((uLong)stream.avail_out != *destLen) return Z_BUF_ERROR;
|
|
|
-
|
|
|
- stream.zalloc = (alloc_func)0;
|
|
|
- stream.zfree = (free_func)0;
|
|
|
-
|
|
|
- err = deflateInit(&stream,Z_DEFAULT_COMPRESSION);
|
|
|
- if (err != Z_OK) return err;
|
|
|
-
|
|
|
- err = deflate(&stream, Z_FINISH);
|
|
|
- if (err != Z_STREAM_END) {
|
|
|
- deflateEnd(&stream);
|
|
|
- return err == Z_OK ? Z_BUF_ERROR : err;
|
|
|
- }
|
|
|
- *destLen = stream.total_out;
|
|
|
-
|
|
|
- err = deflateEnd(&stream);
|
|
|
- return err;
|
|
|
+ return compress(dest, destLen, source, sourceLen);
|
|
|
}
|
|
|
|
|
|
|