From: Christian P. <cp...@us...> - 2005-01-06 17:24:33
|
Update of /cvsroot/pclasses/pclasses2/src/IO In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv22206/src/IO Modified Files: IODevice.cpp IOFilter.cpp ZLib.cpp ZLibIOFilter.cpp Log Message: Fix for IODevice::eof() - must be also proxied through the filter. Index: ZLib.cpp =================================================================== RCS file: /cvsroot/pclasses/pclasses2/src/IO/ZLib.cpp,v retrieving revision 1.2 retrieving revision 1.3 diff -u -d -r1.2 -r1.3 --- ZLib.cpp 6 Jan 2005 16:41:38 -0000 1.2 +++ ZLib.cpp 6 Jan 2005 17:24:22 -0000 1.3 @@ -172,7 +172,7 @@ } ZLibInputStream::ZLibInputStream(size_t bufferSize) throw(ZLibError) -: ZLibStream(bufferSize) +: ZLibStream(bufferSize), _eof(false) { int ret; if((ret = ::inflateInit(_strm)) != Z_OK) @@ -195,7 +195,8 @@ int ret = ::inflate(_strm, Z_NO_FLUSH); if(ret == Z_STREAM_END) { - // we do nothing, so this or next call to inflate() returns 0 + // we do nothing, so this or next call to inflate() returns 0 + _eof = true; } else if(ret != Z_OK) throw ZLibError(ret, _strm->msg, "Could not inflate", P_SOURCEINFO); @@ -205,10 +206,16 @@ return inflated; } +bool ZLibInputStream::eof() const throw() +{ + return _eof; +} + void ZLibInputStream::reset() throw(ZLibError) { _strm->next_out = (Bytef*)_buffer; _strm->avail_out = _bufferSize; + _eof = false; int ret = ::inflateReset(_strm); if(ret != Z_OK) Index: IODevice.cpp =================================================================== RCS file: /cvsroot/pclasses/pclasses2/src/IO/IODevice.cpp,v retrieving revision 1.5 retrieving revision 1.6 diff -u -d -r1.5 -r1.6 --- IODevice.cpp 6 Jan 2005 16:40:14 -0000 1.5 +++ IODevice.cpp 6 Jan 2005 17:24:20 -0000 1.6 @@ -165,7 +165,7 @@ bool IODevice::eof() const throw() { - return _eof; + return _filter ? _filter->eof() : _eof; } void IODevice::setValid(bool v) throw() Index: ZLibIOFilter.cpp =================================================================== RCS file: /cvsroot/pclasses/pclasses2/src/IO/ZLibIOFilter.cpp,v retrieving revision 1.1 retrieving revision 1.2 diff -u -d -r1.1 -r1.2 --- ZLibIOFilter.cpp 6 Jan 2005 16:47:47 -0000 1.1 +++ ZLibIOFilter.cpp 6 Jan 2005 17:24:22 -0000 1.2 @@ -78,6 +78,11 @@ return false; } +bool ZLibIOFilter::eof() const throw() +{ + return _strmIn ? _strmIn->eof() : false; +} + size_t ZLibIOFilter::read(char* buffer, size_t count) throw(IO::IOError) { if(!_strmIn) Index: IOFilter.cpp =================================================================== RCS file: /cvsroot/pclasses/pclasses2/src/IO/IOFilter.cpp,v retrieving revision 1.2 retrieving revision 1.3 diff -u -d -r1.2 -r1.3 --- IOFilter.cpp 6 Jan 2005 16:40:14 -0000 1.2 +++ IOFilter.cpp 6 Jan 2005 17:24:22 -0000 1.3 @@ -59,6 +59,11 @@ return _dev->_isSeekable(); } +bool IOFilter::eof() const throw() +{ + return _dev->_eof; +} + size_t IOFilter::read(char* buffer, size_t count) throw(IO::IOError) { return _dev->_read(buffer, count); |