Added possible gzip compression

This commit is contained in:
Morten Delenk 2016-02-22 19:54:05 +01:00
parent 089c5d1721
commit a85dbd3bd5
5 changed files with 76 additions and 2 deletions

View file

@ -1,5 +1,14 @@
cmake_minimum_required (VERSION 2.6) cmake_minimum_required (VERSION 2.6)
project(cookiebot) project(cookiebot)
set(CMAKE_BUILD_TYPE DEBUG)
set(CMAKE_C_FLAGS_DEBUG "-O0 -g3 -pg -std=c99")
set(CMAKE_C_FLAGS_MINSIZEREL "-Os -std=c99")
set(CMAKE_C_FLAGS_RELWITHDEBINFO "-O0 -g -std=c99")
set(CMAKE_C_FLAGS_RELEASE "-O3 -std=c99")
set(CMAKE_CXX_FLAGS_DEBUG "-O0 -g3 -pg -std=gnu++14")
set(CMAKE_CXX_FLAGS_MINSIZEREL "-Os -std=gnu++14")
set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "-O0 -g -std=gnu++14")
set(CMAKE_CXX_FLAGS_RELEASE "-O3 -std=gnu++14")
set (cookiebot_VERSION_MAJOR 0) set (cookiebot_VERSION_MAJOR 0)
set (cookiebot_VERSION_MINOR 0) set (cookiebot_VERSION_MINOR 0)
find_package (ZLIB) find_package (ZLIB)
@ -25,6 +34,7 @@ configure_file (
"${PROJECT_BINARY_DIR}/cookiebot_conf.h" "${PROJECT_BINARY_DIR}/cookiebot_conf.h"
) )
include_directories("${PROJECT_BINARY_DIR}") include_directories("${PROJECT_BINARY_DIR}")
include_directories("${PROJECT_SOURCE_DIR}/include")
if (MOD_GZIP) if (MOD_GZIP)
set(EXTRA_LIBS ${EXTRA_LIBS} z) set(EXTRA_LIBS ${EXTRA_LIBS} z)
endif (MOD_GZIP) endif (MOD_GZIP)
@ -34,5 +44,6 @@ endif (MOD_BZ2)
if (MOD_XZ) if (MOD_XZ)
set(EXTRA_LIBS ${EXTRA_LIBS} lzma) set(EXTRA_LIBS ${EXTRA_LIBS} lzma)
endif (MOD_XZ) endif (MOD_XZ)
add_executable(cookiebot cookiebot.cpp)
add_executable(cookiebot cookiebot.cpp module_storage.cpp)
target_link_libraries (cookiebot ${EXTRA_LIBS}) target_link_libraries (cookiebot ${EXTRA_LIBS})

View file

@ -1,9 +1,20 @@
#include <stdio.h> #include <stdio.h>
#include <stdlib.h> #include <stdlib.h>
#include <math.h> #include <math.h>
#include <iostream>
#include "cookiebot_conf.h" #include "cookiebot_conf.h"
#include <module_storage.hpp>
int main (int argc, char *argv[]) int main (int argc, char *argv[])
{ {
#ifdef USE_GZIP
printf("I use GZip\n");
#endif
#ifdef USE_BZIP2
printf("I use BZip2\n");
#endif
#ifdef USE_XZ
printf("I use XZ\n");
#endif
std::cout << getModuleStorage("test.gz") << std::endl;
return 0; return 0;
} }

View file

@ -1,2 +1,7 @@
#define VERSION_MAJOR @cookiebot_VERSION_MAJOR@ #define VERSION_MAJOR @cookiebot_VERSION_MAJOR@
#define VERSION_MINOR @cookiebot_VERSION_MINOR@ #define VERSION_MINOR @cookiebot_VERSION_MINOR@
#define ON 1
#define OFF 0
#define USE_GZIP @MOD_GZIP@
#define USE_BZIP2 @MOD_BZ2@
#define USE_XZ @MOD_XZ@

View file

@ -0,0 +1,5 @@
#ifndef __MODULE_STORAGE_HPP
#define __MODULE_STORAGE_HPP
#include <string>
auto getModuleStorage(std::string filename) -> std::string;
#endif /* end of include guard: __MODULE_STORAGE_HPP */

42
module_storage.cpp Normal file
View file

@ -0,0 +1,42 @@
#define CHUNK 16384
#include <module_storage.hpp>
#include <stdio.h>
#include <string.h>
#include <assert.h>
#include "cookiebot_conf.h"
#include <iostream>
#if USE_GZIP == ON
#include <zlib.h>
#endif
auto getModuleStorage(std::string filename) -> std::string {
std::string::size_type idx;
idx = filename.rfind('.');
if(idx != std::string::npos)
{
std::string extension = filename.substr(idx+1);
#if USE_GZIP == ON
if(extension=="gz") {
FILE *out;
out=fopen(filename.substr(0,idx).c_str(), "wb");
struct gzFile_s *file = gzopen(filename.c_str(),"rb");
size_t len=1024*1024;
gzrewind(file);
uint8_t *buf=new uint8_t[len];
gzread(file, (void*)buf, len);
std::cout << buf << std::endl;
fwrite((void*)buf, len, 1, out);
gzclose(file);
fclose(out);
delete[] buf;
return filename.substr(0,idx);
}
#endif
return filename;
}
else
{
return nullptr;
}
}