From fbdfc6b0d5a12adc0257e6fb2a1d1627c9109040 Mon Sep 17 00:00:00 2001 From: Reinder Feenstra Date: Sat, 29 Jul 2023 00:50:03 +0200 Subject: [PATCH] added zlib required for reading CS2 config data stream, see #11 --- server/CMakeLists.txt | 11 +++++++++++ server/src/utils/zlib.cpp | 36 ++++++++++++++++++++++++++++++++++++ server/src/utils/zlib.hpp | 34 ++++++++++++++++++++++++++++++++++ 3 files changed, 81 insertions(+) create mode 100644 server/src/utils/zlib.cpp create mode 100644 server/src/utils/zlib.hpp diff --git a/server/CMakeLists.txt b/server/CMakeLists.txt index e2a99755..a70a7897 100644 --- a/server/CMakeLists.txt +++ b/server/CMakeLists.txt @@ -281,6 +281,17 @@ else() list(APPEND SOURCES ${SOURCES_BOOST}) endif() +# zlib +if(WIN32) + # TODO +else() + find_package(ZLIB REQUIRED) +endif() +target_include_directories(traintastic-server PRIVATE ${ZLIB_INCLUDE_DIRS}) +target_link_libraries(traintastic-server PRIVATE ${ZLIB_LIBRARIES}) +target_include_directories(traintastic-server-test PRIVATE ${ZLIB_INCLUDE_DIRS}) +target_link_libraries(traintastic-server-test PRIVATE ${ZLIB_LIBRARIES}) + # libarchive if(WIN32) set(LibArchive_INCLUDE_DIRS "thirdparty/libarchive/include") diff --git a/server/src/utils/zlib.cpp b/server/src/utils/zlib.cpp new file mode 100644 index 00000000..5ce6d012 --- /dev/null +++ b/server/src/utils/zlib.cpp @@ -0,0 +1,36 @@ +/** + * server/src/utils/zlib.cpp + * + * This file is part of the traintastic source code. + * + * Copyright (C) 2023 Reinder Feenstra + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#include "zlib.hpp" +#include + +namespace ZLib::Uncompress { + +bool toString(const void* src, size_t srcSize, size_t dstSize, std::string& out) +{ + out.resize(dstSize); + int r = uncompress(reinterpret_cast(out.data()), &dstSize, reinterpret_cast(src), srcSize); + out.resize(dstSize); + return r == Z_OK; +} + +} diff --git a/server/src/utils/zlib.hpp b/server/src/utils/zlib.hpp new file mode 100644 index 00000000..296daf55 --- /dev/null +++ b/server/src/utils/zlib.hpp @@ -0,0 +1,34 @@ +/** + * server/src/utils/zlib.hpp + * + * This file is part of the traintastic source code. + * + * Copyright (C) 2023 Reinder Feenstra + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#ifndef TRAINTASTIC_SERVER_UTILS_ZLIB_HPP +#define TRAINTASTIC_SERVER_UTILS_ZLIB_HPP + +#include + +namespace ZLib::Uncompress { + +bool toString(const void* src, size_t srcSize, size_t dstSize, std::string& out); + +} + +#endif