// ************************************************************************** // * This file is part of the FreeFileSync project. It is distributed under * // * GNU General Public License: http://www.gnu.org/licenses/gpl.html * // * Copyright (C) Zenju (zenju AT gmx DOT de) - All Rights Reserved * // ************************************************************************** #include "zlib_wrap.h" #ifdef ZEN_WIN #include //not really a "nice" place to look for a stable solution #elif defined ZEN_LINUX || defined ZEN_MAC #include //let's pray this is the same version wxWidgets is linking against! #endif using namespace zen; size_t zen::impl::zlib_compressBound(size_t len) { return ::compressBound(static_cast(len)); //upper limit for buffer size, larger than input size!!! } size_t zen::impl::zlib_compress(const void* src, size_t srcLen, void* trg, size_t trgLen, int level) //throw ZlibInternalError { uLongf bufferSize = static_cast(trgLen); const int rv = ::compress2(static_cast(trg), //Bytef* dest, &bufferSize, //uLongf* destLen, static_cast(src), //const Bytef* source, static_cast(srcLen), //uLong sourceLen, level); //int level // Z_OK: success // Z_MEM_ERROR: not enough memory // Z_BUF_ERROR: not enough room in the output buffer if (rv != Z_OK || bufferSize > trgLen) throw ZlibInternalError(); return bufferSize; } size_t zen::impl::zlib_decompress(const void* src, size_t srcLen, void* trg, size_t trgLen) //throw ZlibInternalError { uLongf bufferSize = static_cast(trgLen); const int rv = ::uncompress(static_cast(trg), //Bytef* dest, &bufferSize, //uLongf* destLen, static_cast(src), //const Bytef* source, static_cast(srcLen)); //uLong sourceLen // Z_OK: success // Z_MEM_ERROR: not enough memory // Z_BUF_ERROR: not enough room in the output buffer // Z_DATA_ERROR: input data was corrupted or incomplete if (rv != Z_OK || bufferSize > trgLen) throw ZlibInternalError(); return bufferSize; }