ENH: Fix compression on Windows
This commit is contained in:
parent
867c3a763e
commit
48808133b0
|
@ -59,8 +59,7 @@ class cmCPackTGZ_Data
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
cmCPackTGZ_Data(cmCPackTGZGenerator* gen) :
|
cmCPackTGZ_Data(cmCPackTGZGenerator* gen) :
|
||||||
Name(0), OutputStream(0), Generator(gen), m_CompressionLevel(Z_DEFAULT_COMPRESSION) {}
|
OutputStream(0), Generator(gen), m_CompressionLevel(Z_DEFAULT_COMPRESSION) {}
|
||||||
const char *Name;
|
|
||||||
std::ostream* OutputStream;
|
std::ostream* OutputStream;
|
||||||
cmCPackTGZGenerator* Generator;
|
cmCPackTGZGenerator* Generator;
|
||||||
char m_CompressedBuffer[cmCPackTGZ_Data_BlockSize];
|
char m_CompressedBuffer[cmCPackTGZ_Data_BlockSize];
|
||||||
|
@ -92,15 +91,15 @@ int cmCPackTGZ_Data_Open(void *client_data, const char* pathname, int, mode_t)
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
cmGeneratedFileStream* gf = new cmGeneratedFileStream(pathname);
|
cmGeneratedFileStream* gf = new cmGeneratedFileStream;
|
||||||
|
// Open binary
|
||||||
|
gf->Open(pathname, false, true);
|
||||||
mydata->OutputStream = gf;
|
mydata->OutputStream = gf;
|
||||||
if ( !*mydata->OutputStream )
|
if ( !*mydata->OutputStream )
|
||||||
{
|
{
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
gf->SetCompression(false);
|
|
||||||
|
|
||||||
if ( !cmCPackTGZGeneratorForward::GenerateHeader(mydata->Generator,gf))
|
if ( !cmCPackTGZGeneratorForward::GenerateHeader(mydata->Generator,gf))
|
||||||
{
|
{
|
||||||
return -1;
|
return -1;
|
||||||
|
@ -116,14 +115,13 @@ ssize_t cmCPackTGZ_Data_Write(void *client_data, void *buff, size_t n)
|
||||||
{
|
{
|
||||||
cmCPackTGZ_Data *mydata = (cmCPackTGZ_Data*)client_data;
|
cmCPackTGZ_Data *mydata = (cmCPackTGZ_Data*)client_data;
|
||||||
|
|
||||||
|
|
||||||
mydata->m_ZLibStream.avail_in = n;
|
mydata->m_ZLibStream.avail_in = n;
|
||||||
mydata->m_ZLibStream.next_in = reinterpret_cast<Bytef*>(buff);
|
mydata->m_ZLibStream.next_in = reinterpret_cast<Bytef*>(buff);
|
||||||
|
|
||||||
do {
|
do {
|
||||||
mydata->m_ZLibStream.avail_out = cmCPackTGZ_Data_BlockSize;
|
mydata->m_ZLibStream.avail_out = cmCPackTGZ_Data_BlockSize;
|
||||||
mydata->m_ZLibStream.next_out = reinterpret_cast<Bytef*>(mydata->m_CompressedBuffer);
|
mydata->m_ZLibStream.next_out = reinterpret_cast<Bytef*>(mydata->m_CompressedBuffer);
|
||||||
int ret = deflate(&mydata->m_ZLibStream, (n?Z_NO_FLUSH:Z_FINISH)); /* no bad return value */
|
int ret = deflate(&mydata->m_ZLibStream, (n?Z_NO_FLUSH:Z_FINISH)); // no bad return value
|
||||||
if(ret == Z_STREAM_ERROR)
|
if(ret == Z_STREAM_ERROR)
|
||||||
{
|
{
|
||||||
return 0;
|
return 0;
|
||||||
|
|
Loading…
Reference in New Issue