#define __CASCLIB_SELF__
#include "CascLib.h"
#include "CascCommon.h"
DWORD CascDecompress(LPBYTE pbOutBuffer, PDWORD pcbOutBuffer, LPBYTE pbInBuffer, DWORD cbInBuffer)
{
z_stream z; DWORD dwErrCode = ERROR_FILE_CORRUPT;
uInt cbOutBuffer = *pcbOutBuffer;
int nResult;
z.next_in = pbInBuffer;
z.avail_in = cbInBuffer;
z.total_in = cbInBuffer;
z.next_out = pbOutBuffer;
z.avail_out = cbOutBuffer;
z.total_out = 0;
z.zalloc = NULL;
z.zfree = NULL;
cbOutBuffer = 0;
if((nResult = inflateInit(&z)) == Z_OK)
{
nResult = inflate(&z, Z_NO_FLUSH);
if(nResult == Z_OK || nResult == Z_STREAM_END)
{
cbOutBuffer = z.total_out;
dwErrCode = ERROR_SUCCESS;
}
inflateEnd(&z);
}
pcbOutBuffer[0] = cbOutBuffer;
return dwErrCode;
}