summaryrefslogtreecommitdiffstats
path: root/programs
diff options
context:
space:
mode:
authorTim Zakian <2895723+tzakian@users.noreply.github.com>2019-01-10 18:20:17 (GMT)
committerTim Zakian <2895723+tzakian@users.noreply.github.com>2019-01-10 18:20:17 (GMT)
commit9028682e7ac1e621299b52065d47ba9f74c5c111 (patch)
tree2971fa892b0ac832f959df59edd068b7b9e0230e /programs
parente30b1f73d42a1307ab37c6ddcdb583acf17b4457 (diff)
downloadlz4-9028682e7ac1e621299b52065d47ba9f74c5c111.zip
lz4-9028682e7ac1e621299b52065d47ba9f74c5c111.tar.gz
lz4-9028682e7ac1e621299b52065d47ba9f74c5c111.tar.bz2
Fix pass-through mode
Diffstat (limited to 'programs')
-rw-r--r--programs/lz4cli.c7
-rw-r--r--programs/lz4io.c11
-rw-r--r--programs/lz4io.h4
3 files changed, 20 insertions, 2 deletions
diff --git a/programs/lz4cli.c b/programs/lz4cli.c
index 84499d0..c6b3cc1 100644
--- a/programs/lz4cli.c
+++ b/programs/lz4cli.c
@@ -340,6 +340,7 @@ int main(int argc, const char** argv)
if (exeNameMatch(exeName, LZ4CAT)) {
mode = om_decompress;
LZ4IO_setOverwrite(1);
+ LZ4IO_setPassThrough(1);
LZ4IO_setRemoveSrcFile(0);
forceStdout=1;
output_filename=stdoutmark;
@@ -468,7 +469,11 @@ int main(int argc, const char** argv)
case 'd': mode = om_decompress; break;
/* Force stdout, even if stdout==console */
- case 'c': forceStdout=1; output_filename=stdoutmark; break;
+ case 'c':
+ forceStdout=1;
+ output_filename=stdoutmark;
+ LZ4IO_setPassThrough(1);
+ break;
/* Test integrity */
case 't': mode = om_test; break;
diff --git a/programs/lz4io.c b/programs/lz4io.c
index a35928d..f7adb89 100644
--- a/programs/lz4io.c
+++ b/programs/lz4io.c
@@ -107,6 +107,7 @@ static clock_t g_time = 0;
/**************************************
* Local Parameters
**************************************/
+static int g_passThrough = 0;
static int g_overwrite = 1;
static int g_testMode = 0;
static int g_blockSizeId = LZ4IO_BLOCKSIZEID_DEFAULT;
@@ -157,6 +158,14 @@ int LZ4IO_setDictionaryFilename(const char* dictionaryFilename) {
return g_useDictionary;
}
+/* Default setting : passThrough = 0; return : passThrough mode (0/1) */
+int LZ4IO_setPassThrough(int yes)
+{
+ g_passThrough = (yes!=0);
+ return g_passThrough;
+}
+
+
/* Default setting : overwrite = 1; return : overwrite mode (0/1) */
int LZ4IO_setOverwrite(int yes)
{
@@ -1070,7 +1079,7 @@ static unsigned long long selectDecoder(dRess_t ress, FILE* finput, FILE* foutpu
default:
if (nbFrames == 1) { /* just started */
/* Wrong magic number at the beginning of 1st stream */
- if (!g_testMode && g_overwrite) {
+ if (!g_testMode && g_overwrite && g_passThrough) {
nbFrames = 0;
return LZ4IO_passThrough(finput, foutput, MNstore);
}
diff --git a/programs/lz4io.h b/programs/lz4io.h
index 33de41f..3a62869 100644
--- a/programs/lz4io.h
+++ b/programs/lz4io.h
@@ -66,6 +66,10 @@ int LZ4IO_decompressMultipleFilenames(const char** inFileNamesTable, int ifntSiz
int LZ4IO_setDictionaryFilename(const char* dictionaryFilename);
+/* Default setting : passThrough = 0;
+ return : passThrough mode (0/1) */
+int LZ4IO_setPassThrough(int yes);
+
/* Default setting : overwrite = 1;
return : overwrite mode (0/1) */
int LZ4IO_setOverwrite(int yes);