diff options
author | Cyan4973 <yann.collet.73@gmail.com> | 2014-04-22 22:45:28 (GMT) |
---|---|---|
committer | Cyan4973 <yann.collet.73@gmail.com> | 2014-04-22 22:45:28 (GMT) |
commit | dac2a0946d854e1fcb9547b3cc40db835432cece (patch) | |
tree | ff6f5c293ee4c61cda64b1f36a8549743db3b8c2 /programs | |
parent | 37be46701a21e554fff47f97b549fb473f6a2904 (diff) | |
parent | 30a41b5b91b4f4caf8d65b979de5199c9ddcccf5 (diff) | |
download | lz4-dac2a0946d854e1fcb9547b3cc40db835432cece.zip lz4-dac2a0946d854e1fcb9547b3cc40db835432cece.tar.gz lz4-dac2a0946d854e1fcb9547b3cc40db835432cece.tar.bz2 |
Merge pull request #3 from Cyan4973/betar117
Beta
Diffstat (limited to 'programs')
-rw-r--r-- | programs/Makefile | 25 | ||||
-rw-r--r-- | programs/bench.c | 2 | ||||
-rw-r--r-- | programs/bench.h | 2 | ||||
-rw-r--r-- | programs/fullbench.c | 24 | ||||
-rw-r--r-- | programs/fuzzer.c | 25 | ||||
-rw-r--r-- | programs/lz4c.1 | 33 | ||||
-rw-r--r-- | programs/lz4cat.1 | 34 | ||||
-rw-r--r-- | programs/lz4cli.c | 6 | ||||
-rw-r--r-- | programs/lz4io.c | 2 | ||||
-rw-r--r-- | programs/lz4io.h | 2 |
10 files changed, 133 insertions, 22 deletions
diff --git a/programs/Makefile b/programs/Makefile index fc42ac0..8ec0b85 100644 --- a/programs/Makefile +++ b/programs/Makefile @@ -41,6 +41,7 @@ BINDIR=$(PREFIX)/bin MANDIR=$(PREFIX)/share/man/man1 LZ4DIR=.. +TEST_FILES = COPYING # Define *.exe as extension for Windows systems ifneq (,$(filter Windows%,$(OS))) @@ -85,11 +86,15 @@ clean: ifneq (,$(filter $(shell uname),Linux Darwin)) install: lz4 lz4c + @echo Installing binaries @install -d -m 755 $(DESTDIR)$(BINDIR)/ $(DESTDIR)$(MANDIR)/ @install -m 755 lz4 $(DESTDIR)$(BINDIR)/lz4 @ln -sf lz4 $(DESTDIR)$(BINDIR)/lz4cat @install -m 755 lz4c $(DESTDIR)$(BINDIR)/lz4c + @echo Installing man pages @install -m 644 lz4.1 $(DESTDIR)$(MANDIR)/lz4.1 + @install -m 644 lz4c.1 $(DESTDIR)$(MANDIR)/lz4c.1 + @install -m 644 lz4cat.1 $(DESTDIR)$(MANDIR)/lz4cat.1 @echo lz4 installation completed uninstall: @@ -99,4 +104,24 @@ uninstall: [ -f $(DESTDIR)$(MANDIR)/lz4.1 ] && rm -f $(DESTDIR)$(MANDIR)/lz4.1 @echo lz4 successfully uninstalled +test: test-lz4 test-lz4c test-lz4c32 test-fuzzer test-fuzzer32 test-fullbench test-fullbench32 + +test-lz4: + +test-lz4c: + +test-lz4c32: + +test-fuzzer: fuzzer + ./fuzzer --no-prompt + +test-fuzzer32: fuzzer32 + ./fuzzer32 --no-prompt + +test-fullbench: fullbench + ./fullbench --no-prompt $(TEST_FILES) + +test-fullbench32: fullbench32 + ./fullbench32 --no-prompt $(TEST_FILES) + endif diff --git a/programs/bench.c b/programs/bench.c index 2eabf61..8d68098 100644 --- a/programs/bench.c +++ b/programs/bench.c @@ -1,6 +1,6 @@ /* bench.c - Demo program to benchmark open-source compression algorithm - Copyright (C) Yann Collet 2012-2013 + Copyright (C) Yann Collet 2012-2014 GPL v2 License This program is free software; you can redistribute it and/or modify diff --git a/programs/bench.h b/programs/bench.h index ed801d4..a0b7ed2 100644 --- a/programs/bench.h +++ b/programs/bench.h @@ -1,6 +1,6 @@ /* bench.h - Demo program to benchmark open-source compression algorithm - Copyright (C) Yann Collet 2012-2013 + Copyright (C) Yann Collet 2012-2014 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 diff --git a/programs/fullbench.c b/programs/fullbench.c index 8e87019..6304029 100644 --- a/programs/fullbench.c +++ b/programs/fullbench.c @@ -1,6 +1,6 @@ /* bench.c - Demo program to benchmark open-source compression algorithm - Copyright (C) Yann Collet 2012-2013 + Copyright (C) Yann Collet 2012-2014 GPL v2 License This program is free software; you can redistribute it and/or modify @@ -50,6 +50,7 @@ #include <stdio.h> // fprintf, fopen, ftello64 #include <sys/types.h> // stat64 #include <sys/stat.h> // stat64 +#include <string.h> // strcmp // Use ftime() if gettimeofday() is not available on your target #if defined(BMK_LEGACY_TIMER) @@ -138,6 +139,7 @@ struct chunkParameters // MACRO //************************************** #define DISPLAY(...) fprintf(stderr, __VA_ARGS__) +#define PROGRESS(...) no_prompt ? 0 : DISPLAY(__VA_ARGS__) @@ -151,6 +153,7 @@ static int compressionTest = 1; static int decompressionTest = 1; static int compressionAlgo = ALL_COMPRESSORS; static int decompressionAlgo = ALL_DECOMPRESSORS; +static int no_prompt = 0; void BMK_SetBlocksize(int bsize) { @@ -281,12 +284,12 @@ static inline int local_LZ4_compress_limitedOutput_continue(const char* in, char static void* stateLZ4HC; static inline int local_LZ4_compressHC_withStateHC(const char* in, char* out, int inSize) { - return LZ4_compress_withState(stateLZ4HC, in, out, inSize); + return LZ4_compressHC_withStateHC(stateLZ4HC, in, out, inSize); } static inline int local_LZ4_compressHC_limitedOutput_withStateHC(const char* in, char* out, int inSize) { - return LZ4_compress_limitedOutput_withState(stateLZ4HC, in, out, inSize, LZ4_compressBound(inSize)); + return LZ4_compressHC_limitedOutput_withStateHC(stateLZ4HC, in, out, inSize, LZ4_compressBound(inSize)); } static inline int local_LZ4_compressHC_limitedOutput(const char* in, char* out, int inSize) @@ -478,7 +481,7 @@ int fullSpeedBench(char** fileNamesTable, int nbFiles) double averageTime; int milliTime; - DISPLAY("%1i-%-19.19s : %9i ->\r", loopNb, cName, (int)benchedSize); + PROGRESS("%1i-%-19.19s : %9i ->\r", loopNb, cName, (int)benchedSize); { size_t i; for (i=0; i<benchedSize; i++) compressed_buff[i]=(char)i; } // warmimg up memory nb_loops = 0; @@ -502,7 +505,7 @@ int fullSpeedBench(char** fileNamesTable, int nbFiles) if (averageTime < bestTime) bestTime = averageTime; cSize=0; for (chunkNb=0; chunkNb<nbChunks; chunkNb++) cSize += chunkP[chunkNb].compressedSize; ratio = (double)cSize/(double)benchedSize*100.; - DISPLAY("%1i-%-19.19s : %9i -> %9i (%5.2f%%),%7.1f MB/s\r", loopNb, cName, (int)benchedSize, (int)cSize, ratio, (double)benchedSize / bestTime / 1000.); + PROGRESS("%1i-%-19.19s : %9i -> %9i (%5.2f%%),%7.1f MB/s\r", loopNb, cName, (int)benchedSize, (int)cSize, ratio, (double)benchedSize / bestTime / 1000.); } if (ratio<100.) @@ -547,7 +550,7 @@ int fullSpeedBench(char** fileNamesTable, int nbFiles) int milliTime; U32 crcDecoded; - DISPLAY("%1i-%-24.24s :%10i ->\r", loopNb, dName, (int)benchedSize); + PROGRESS("%1i-%-24.24s :%10i ->\r", loopNb, dName, (int)benchedSize); nb_loops = 0; milliTime = BMK_GetMilliStart(); @@ -567,7 +570,7 @@ int fullSpeedBench(char** fileNamesTable, int nbFiles) averageTime = (double)milliTime / nb_loops; if (averageTime < bestTime) bestTime = averageTime; - DISPLAY("%1i-%-24.24s :%10i -> %7.1f MB/s\r", loopNb, dName, (int)benchedSize, (double)benchedSize / bestTime / 1000.); + PROGRESS("%1i-%-24.24s :%10i -> %7.1f MB/s\r", loopNb, dName, (int)benchedSize, (double)benchedSize / bestTime / 1000.); // CRC Checking crcDecoded = XXH32(orig_buff, (int)benchedSize, 0); @@ -627,7 +630,7 @@ int usage_advanced() { DISPLAY( "\nAdvanced options :\n"); DISPLAY( " -c# : test only compression function # [%c-%c]\n", MINCOMPRESSIONCHAR, MAXCOMPRESSIONCHAR); - DISPLAY( " -d# : test only compression function # [%c-%c]\n", MINDECOMPRESSIONCHAR, MAXDECOMPRESSIONCHAR); + DISPLAY( " -d# : test only decompression function # [%c-%c]\n", MINDECOMPRESSIONCHAR, MAXDECOMPRESSIONCHAR); DISPLAY( " -i# : iteration loops [1-9](default : %i)\n", NBLOOPS); DISPLAY( " -B# : Block size [4-7](default : 7)\n"); //DISPLAY( " -BD : Block dependency (improve compression ratio)\n"); @@ -658,6 +661,11 @@ int main(int argc, char** argv) char* argument = argv[i]; if(!argument) continue; // Protection if argument empty + if (!strcmp(argument, "--no-prompt")) + { + no_prompt = 1; + continue; + } // Decode command (note : aggregated commands are allowed) if (argument[0]=='-') diff --git a/programs/fuzzer.c b/programs/fuzzer.c index a2bd33a..ba4f960 100644 --- a/programs/fuzzer.c +++ b/programs/fuzzer.c @@ -34,6 +34,7 @@ #include <stdlib.h> #include <stdio.h> // fgets, sscanf #include <sys/timeb.h> // timeb +#include <string.h> // strcmp #include "lz4.h" #include "lz4hc.h" @@ -121,8 +122,8 @@ int FUZ_SecurityTest() } -//int main(int argc, char *argv[]) { -int main() { +int main(int argc, char** argv) { + const int no_prompt = (argc > 1) && (!strcmp(argv[1], "--no-prompt")); unsigned long long bytes = 0; unsigned long long cbytes = 0; unsigned long long hcbytes = 0; @@ -136,14 +137,14 @@ int main() { int i, j, k, ret, len, lenHC, attemptNb; char userInput[30] = {0}; # define FUZ_CHECKTEST(cond, message) if (cond) { printf("Test %i : %s : seed %u, cycle %i \n", testNb, message, seed, attemptNb); goto _output_error; } -# define FUZ_DISPLAYTEST testNb++; printf("%2i\b\b", testNb); +# define FUZ_DISPLAYTEST testNb++; no_prompt ? 0 : printf("%2i\b\b", testNb); void* stateLZ4 = malloc(LZ4_sizeofState()); void* stateLZ4HC = malloc(LZ4_sizeofStateHC()); printf("starting LZ4 fuzzer (%s)\n", LZ4_VERSION); printf("Select an Initialisation number (default : random) : "); fflush(stdout); - if ( fgets(userInput, sizeof userInput, stdin) ) + if ( no_prompt || fgets(userInput, sizeof userInput, stdin) ) { if ( sscanf(userInput, "%u", &seed) == 1 ) {} else seed = FUZ_GetMilliSpan(timestamp); @@ -160,7 +161,17 @@ int main() { { int testNb = 0; - printf("\r%7i /%7i - ", attemptNb, NB_ATTEMPTS); + // note : promptThrottle is throtting stdout to prevent + // Travis-CI's output limit (10MB) and false hangup detection. + const int promptThrottle = (attemptNb % (NB_ATTEMPTS / 100) == 0); + if (!no_prompt || attemptNb == 0 || promptThrottle) + { + printf("\r%7i /%7i - ", attemptNb, NB_ATTEMPTS); + if (no_prompt) + { + fflush(stdout); + } + } for (j = 0; j < NUM_SEQ; j++) { seeds[j] = FUZ_rand(&randState) << 8; @@ -293,10 +304,10 @@ int main() { printf("all tests completed successfully \n"); printf("compression ratio: %0.3f%%\n", (double)cbytes/bytes*100); printf("HC compression ratio: %0.3f%%\n", (double)hcbytes/bytes*100); - getchar(); + if(!no_prompt) getchar(); return 0; _output_error: - getchar(); + if(!no_prompt) getchar(); return 1; } diff --git a/programs/lz4c.1 b/programs/lz4c.1 new file mode 100644 index 0000000..fed6c8b --- /dev/null +++ b/programs/lz4c.1 @@ -0,0 +1,33 @@ +\" +\" lz4c.1: This is a manual page for 'lz4c' program. This file is part of the +\" lz4 <https://code.google.com/p/lz4/> project. +\" + +\" No hyphenation +.hy 0 +.nr HY 0 + +.TH lz4c "1" "2014-04-15" "lz4c" "User Commands" +.SH NAME +\fBlz4\fR - Extremely fast compression algorithm + +.SH SYNOPSIS +.TP 5 +\fBlz4c\fR [\fBOPTIONS\fR] [-|INPUT-FILE] <OUTPUT-FILE> + +.SH DESCRIPTION +.PP +\fBlz4c\fR is the legacy version of \fBlz4\fR. +As such, it supports older supplementary legacy commands. +\fBlz4c\fR is now deprecated. +It is recommended to use \fBlz4\fR instead whenever possible. + +To get a list of commands specific to lz4c, do : +lz4c -h + + +.SH BUGS +Report bugs at:- https://code.google.com/p/lz4/ + +.SH AUTHOR +Yann Collet
\ No newline at end of file diff --git a/programs/lz4cat.1 b/programs/lz4cat.1 new file mode 100644 index 0000000..fb33fd5 --- /dev/null +++ b/programs/lz4cat.1 @@ -0,0 +1,34 @@ +\" +\" lz4cat.1: This is a manual page for 'lz4cat' program. This file is part of +\" the lz4 <https://code.google.com/p/lz4/> project. +\" + +\" No hyphenation +.hy 0 +.nr HY 0 + +.TH lz4cat "1" "2014-04-15" "lz4cat" "User Commands" +.SH NAME +\fBlz4cat\fR - Extremely fast compression algorithm + +.SH SYNOPSIS +.TP 5 +\fBlz4cat\fR [\fBOPTIONS\fR] [-|INPUT-FILE] <OUTPUT-FILE> + +.SH DESCRIPTION +.PP +\fBlz4\fR is an extremely fast lossless compression algorithm. + +\fBlz4cat\fR is an utility based on \fBlz4\fR. + +\fBlz4cat\fR is equivalent to \fBlz4 -cd\fR, +which forces decompression and redirect its output to the console. + +All other options are the same as \fBlz4\fR ones (man lz4). + + +.SH BUGS +Report bugs at:- https://code.google.com/p/lz4/ + +.SH AUTHOR +Yann Collet
\ No newline at end of file diff --git a/programs/lz4cli.c b/programs/lz4cli.c index fc5bd81..934c2bb 100644 --- a/programs/lz4cli.c +++ b/programs/lz4cli.c @@ -1,6 +1,6 @@ /* LZ4cli.c - LZ4 Command Line Interface - Copyright (C) Yann Collet 2011-2013 + Copyright (C) Yann Collet 2011-2014 GPL v2 License This program is free software; you can redistribute it and/or modify @@ -407,11 +407,11 @@ int main(int argc, char** argv) int B = argument[1] - '0'; int S = 1 << (8 + 2*B); BMK_SetBlocksize(S); - LZ4IO_setBlockSizeID(B); + blockSize = LZ4IO_setBlockSizeID(B); argument++; break; } - case 'D': LZ4IO_setBlockMode(independentBlocks); argument++; break; + case 'D': LZ4IO_setBlockMode(chainedBlocks); argument++; break; case 'X': LZ4IO_setBlockChecksumMode(1); argument ++; break; default : exitBlockProperties=1; } diff --git a/programs/lz4io.c b/programs/lz4io.c index ae8b776..05955cf 100644 --- a/programs/lz4io.c +++ b/programs/lz4io.c @@ -1,6 +1,6 @@ /* LZ4io.c - LZ4 File/Stream Interface - Copyright (C) Yann Collet 2011-2013 + Copyright (C) Yann Collet 2011-2014 GPL v2 License This program is free software; you can redistribute it and/or modify diff --git a/programs/lz4io.h b/programs/lz4io.h index cb35ec0..9c3b217 100644 --- a/programs/lz4io.h +++ b/programs/lz4io.h @@ -1,6 +1,6 @@ /* LZ4io.h - LZ4 File/Stream Interface - Copyright (C) Yann Collet 2011-2013 + Copyright (C) Yann Collet 2011-2014 GPL v2 License This program is free software; you can redistribute it and/or modify |