From 3c7c3527d0a84bc794819173a681e415fa4e08e0 Mon Sep 17 00:00:00 2001 From: inikep Date: Fri, 22 Apr 2016 13:59:05 +0200 Subject: [PATCH] introduced ZSTD_NOCOMPRESS to generate decompressor only --- lib/compress/zstd_compress.c | 4 ++-- lib/decompress/zbuff_decompress.c | 6 ------ programs/Makefile | 3 +++ programs/fileio.c | 6 +++++- programs/zstdcli.c | 22 ++++++++++++++++------ 5 files changed, 26 insertions(+), 15 deletions(-) diff --git a/lib/compress/zstd_compress.c b/lib/compress/zstd_compress.c index 1475d5fb3..a8ebaa549 100644 --- a/lib/compress/zstd_compress.c +++ b/lib/compress/zstd_compress.c @@ -2432,7 +2432,7 @@ size_t ZSTD_compress(void* dst, size_t dstCapacity, const void* src, size_t srcS /*-===== Pre-defined compression levels =====-*/ -#define ZSTD_DEAFULT_CLEVEL 5 +#define ZSTD_DEFAULT_CLEVEL 5 #define ZSTD_MAX_CLEVEL 22 unsigned ZSTD_maxCLevel(void) { return ZSTD_MAX_CLEVEL; } @@ -2552,7 +2552,7 @@ ZSTD_compressionParameters ZSTD_getCParams(int compressionLevel, U64 srcSize, si size_t const addedSize = srcSize ? 0 : 500; U64 const rSize = srcSize+dictSize ? srcSize+dictSize+addedSize : (U64)-1; U32 const tableID = (rSize <= 256 KB) + (rSize <= 128 KB) + (rSize <= 16 KB); /* intentional underflow for srcSizeHint == 0 */ - if (compressionLevel < 0) compressionLevel = ZSTD_DEAFULT_CLEVEL; + if (compressionLevel < 0) compressionLevel = ZSTD_DEFAULT_CLEVEL; if (compressionLevel==0) compressionLevel = 1; if (compressionLevel > ZSTD_MAX_CLEVEL) compressionLevel = ZSTD_MAX_CLEVEL; cp = ZSTD_defaultCParameters[tableID][compressionLevel]; diff --git a/lib/decompress/zbuff_decompress.c b/lib/decompress/zbuff_decompress.c index 614a79240..fef32f76d 100644 --- a/lib/decompress/zbuff_decompress.c +++ b/lib/decompress/zbuff_decompress.c @@ -40,12 +40,6 @@ #include "zbuff_static.h" -/* ************************************* -* Constants -***************************************/ -static size_t const ZBUFF_endFrameSize = ZSTD_BLOCKHEADERSIZE; - - /*-*************************************************************************** * Streaming decompression howto * diff --git a/programs/Makefile b/programs/Makefile index e6c4e8047..e0a26127c 100644 --- a/programs/Makefile +++ b/programs/Makefile @@ -114,6 +114,9 @@ zstd-pgo : clean zstd zstd-frugal: $(ZSTD_FILES) $(ZBUFF_FILES) zstdcli.c fileio.c $(CC) $(FLAGS) -DZSTD_NOBENCH -DZSTD_NODICT -DZSTD_LEGACY_SUPPORT=0 $^ -o zstd$(EXT) +zstd-decompress: $(ZSTDDECOMP_FILES) $(ZSTDDIR)/decompress/zbuff_decompress.c zstdcli.c fileio.c + $(CC) $(FLAGS) -DZSTD_NOBENCH -DZSTD_NODICT -DZSTD_NOCOMPRESS -DZSTD_LEGACY_SUPPORT=0 $^ -o $@$(EXT) + zstd-small: clean CFLAGS="-Os -s" $(MAKE) zstd-frugal diff --git a/programs/fileio.c b/programs/fileio.c index edd917e81..e0ccee7f8 100644 --- a/programs/fileio.c +++ b/programs/fileio.c @@ -112,6 +112,8 @@ #define MAX_DICT_SIZE (1 MB) /* protection against large input (attack scenario) ; can be changed */ +#define FNSPACE 30 + /*-************************************* * Macros @@ -267,6 +269,7 @@ static size_t FIO_loadFile(void** bufferPtr, const char* fileName) return (size_t)fileSize; } +#ifndef ZSTD_NOCOMPRESS /*-********************************************************************** * Compression @@ -460,7 +463,6 @@ int FIO_compressFilename(const char* dstFileName, const char* srcFileName, } -#define FNSPACE 30 int FIO_compressMultipleFilenames(const char** inFileNamesTable, unsigned nbFiles, const char* suffix, const char* dictFileName, int compressionLevel) @@ -499,6 +501,8 @@ int FIO_compressMultipleFilenames(const char** inFileNamesTable, unsigned nbFile return missed_files; } +#endif // #ifndef ZSTD_NOCOMPRESS + /* ************************************************************************** * Decompression diff --git a/programs/zstdcli.c b/programs/zstdcli.c index e43b94541..feaddc339 100644 --- a/programs/zstdcli.c +++ b/programs/zstdcli.c @@ -111,7 +111,9 @@ static int usage(const char* programName) DISPLAY( "FILE : a filename\n"); DISPLAY( " with no FILE, or when FILE is - , read standard input\n"); DISPLAY( "Arguments :\n"); +#ifndef ZSTD_NOCOMPRESS DISPLAY( " -# : # compression level (1-%u, default:1) \n", ZSTD_maxCLevel()); +#endif DISPLAY( " -d : decompression \n"); DISPLAY( " -D file: use `file` as Dictionary \n"); DISPLAY( " -o file: result stored into `file` (only if 1 input file) \n"); @@ -131,7 +133,9 @@ static int usage_advanced(const char* programName) DISPLAY( " -v : verbose mode\n"); DISPLAY( " -q : suppress warnings; specify twice to suppress errors too\n"); DISPLAY( " -c : force write to standard output, even if it is the console\n"); +#ifndef ZSTD_NOCOMPRESS DISPLAY( "--ultra : enable ultra modes (requires more memory to decompress)\n"); +#endif #ifndef ZSTD_NODICT DISPLAY( "Dictionary builder :\n"); DISPLAY( "--train : create a dictionary from a training set of files \n"); @@ -194,6 +198,7 @@ int main(int argCount, const char** argv) /* init */ (void)cLevelLast; (void)dictCLevel; /* not used when ZSTD_NOBENCH / ZSTD_NODICT set */ + (void)decode; (void)cLevel; /* not used when ZSTD_NOCOMPRESS set */ if (filenameTable==NULL) { DISPLAY("not enough memory\n"); exit(1); } displayOut = stderr; /* Pick out program name from path. Don't rely on stdlib because of conflicting behavior */ @@ -233,6 +238,7 @@ int main(int argCount, const char** argv) argument++; while (argument[0]!=0) { +#ifndef ZSTD_NOCOMPRESS /* compression Level */ if ((*argument>='0') && (*argument<='9')) { cLevel = 0; @@ -246,6 +252,7 @@ int main(int argCount, const char** argv) CLEAN_RETURN(badusage(programName)); continue; } +#endif switch(argument[0]) { @@ -417,16 +424,19 @@ int main(int argCount, const char** argv) /* IO Stream/File */ FIO_setNotificationLevel(displayLevel); - if (decode) { - if (filenameIdx==1 && outFileName) - operationResult = FIO_decompressFilename(outFileName, filenameTable[0], dictFileName); - else - operationResult = FIO_decompressMultipleFilenames(filenameTable, filenameIdx, outFileName ? outFileName : ZSTD_EXTENSION, dictFileName); - } else { /* compression */ +#ifndef ZSTD_NOCOMPRESS + if (!decode) { if (filenameIdx==1 && outFileName) operationResult = FIO_compressFilename(outFileName, filenameTable[0], dictFileName, cLevel); else operationResult = FIO_compressMultipleFilenames(filenameTable, filenameIdx, outFileName ? outFileName : ZSTD_EXTENSION, dictFileName, cLevel); + } else +#endif + { /* decompression */ + if (filenameIdx==1 && outFileName) + operationResult = FIO_decompressFilename(outFileName, filenameTable[0], dictFileName); + else + operationResult = FIO_decompressMultipleFilenames(filenameTable, filenameIdx, outFileName ? outFileName : ZSTD_EXTENSION, dictFileName); } _end: