From f0edb677f09ad338e22ac3b5d91497b4479e0b3c Mon Sep 17 00:00:00 2001 From: Dennis Francis Date: Wed, 15 Apr 2015 22:22:16 +0530 Subject: enhancement : tdf#90225 Cannot open compressed csv files from calc Change-Id: I5098fd25f1747b49e47e360f017ee1112a242771 Reviewed-on: https://gerrit.libreoffice.org/15108 Reviewed-by: Kohei Yoshida Tested-by: Kohei Yoshida --- tools/source/zcodec/zcodec.cxx | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) (limited to 'tools') diff --git a/tools/source/zcodec/zcodec.cxx b/tools/source/zcodec/zcodec.cxx index d6bce145a188..b5c645ac92e2 100644 --- a/tools/source/zcodec/zcodec.cxx +++ b/tools/source/zcodec/zcodec.cxx @@ -394,4 +394,30 @@ void ZCodec::UpdateCRC ( sal_uInt8* pSource, long nDatSize) mnCRC = rtl_crc32( mnCRC, pSource, nDatSize ); } +bool ZCodec::AttemptDecompression(SvStream& rIStm, SvStream& rOStm, bool updateCrc, bool gzLib) +{ + assert(meState == STATE_INIT); + sal_uLong nStreamPos = rIStm.Tell(); + BeginCompression(ZCODEC_DEFAULT_COMPRESSION, updateCrc, gzLib); + InitDecompress(rIStm); + EndCompression(); + if ( !mbStatus || rIStm.GetError() ) + { + rIStm.Seek(nStreamPos); + return false; + } + rIStm.Seek(nStreamPos); + BeginCompression(ZCODEC_DEFAULT_COMPRESSION, updateCrc, gzLib); + Decompress(rIStm, rOStm); + EndCompression(); + if( !mbStatus || rIStm.GetError() || rOStm.GetError() ) + { + rIStm.Seek(nStreamPos); + return false; + } + rIStm.Seek(nStreamPos); + rOStm.Seek(0); + return true; +} + /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ -- cgit