ENH: Fix compression on Windows

This commit is contained in:
Andy Cedilnik 2006-01-11 19:12:21 -05:00
parent 867c3a763e
commit 48808133b0
1 changed files with 6 additions and 8 deletions

View File

@ -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;