📄 deflatecompress.c
字号:
/*__________________________________________________________________________
Copyright (C) 2002 PGP Corporation
All rights reserved.
$Id: DeflateCompress.c,v 1.8 2002/08/06 20:10:16 dallen Exp $
__________________________________________________________________________*/
#include <stdio.h>
#include <memory.h>
#if !PGP_UNIX_DARWIN
#include <malloc.h>
#endif
#include "zlib.h"
#include "DeflateWrapper.h"
#define INSIZE 512
#define OUTSIZE 512
static void *sAllocMem(void *dummy, unsigned int nItems, unsigned int nSize);
static void sFreeMem(void *dummy, void *address);
void Deflate_Compress(void *pUserValue)
{
z_stream myStream;
int nIn;
char szIn[INSIZE];
char szOut[OUTSIZE];
unsigned int nOutIndex;
unsigned int nInIndex;
int nErr = Z_OK;
myStream.zalloc = sAllocMem;
myStream.zfree = sFreeMem;
myStream.opaque = NULL;
deflateInit(&myStream, Z_BEST_COMPRESSION);
myStream.next_in = szIn;
myStream.next_out = szOut;
myStream.avail_in = 0;
myStream.avail_out = OUTSIZE;
nIn = 0;
nInIndex = 0;
while (nErr == Z_OK)
{
if (nIn != EOF)
{
if (!myStream.avail_in)
{
nInIndex = 0;
while ((nIn != EOF) && (nInIndex < INSIZE))
{
nIn = comp_getc_buffer(pUserValue);
szIn[nInIndex] = nIn;
nInIndex++;
}
myStream.avail_in = nInIndex;
myStream.next_in = szIn;
}
nErr = deflate(&myStream, Z_NO_FLUSH);
}
else
nErr = deflate(&myStream, Z_FINISH);
if ((nErr == Z_OK) && !myStream.avail_out)
{
nOutIndex = 0;
while (nOutIndex < OUTSIZE)
comp_putc_buffer(szOut[nOutIndex++], pUserValue);
myStream.next_out = szOut;
myStream.avail_out = OUTSIZE;
}
}
if (nErr == Z_STREAM_END)
{
nOutIndex = 0;
while (nOutIndex < (OUTSIZE - myStream.avail_out))
comp_putc_buffer(szOut[nOutIndex++], pUserValue);
}
return;
}
static void *sAllocMem(void *dummy, unsigned int nItems, unsigned int nSize)
{
return calloc(nItems, nSize);
}
static void sFreeMem(void *dummy, void *address)
{
free(address);
return;
}
#ifdef WIN32
#ifndef IS_ADMIN
void pgpCopyMemory(void const *src, void *dest, size_t size)
{
memcpy(dest, src, size);
return;
}
#endif // IS_ADMIN
#endif /* WIN32 */
/*__Editor_settings____
Local Variables:
tab-width: 4
End:
vi: ts=4 sw=4
vim: si
_____________________*/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -