diff options
author | Przemyslaw Skibinski <inikep@gmail.com> | 2016-11-10 15:31:10 (GMT) |
---|---|---|
committer | Przemyslaw Skibinski <inikep@gmail.com> | 2016-11-10 15:31:10 (GMT) |
commit | 2278d1f02f74e8cfdb21248ff1ca347efbde53a1 (patch) | |
tree | 37fa94e3325b6c066b6c97398b5db23d44dd9817 /programs/lz4cli.c | |
parent | d57d3e4b4d5a95970ee204e2bc31776809ca8c6f (diff) | |
download | lz4-2278d1f02f74e8cfdb21248ff1ca347efbde53a1.zip lz4-2278d1f02f74e8cfdb21248ff1ca347efbde53a1.tar.gz lz4-2278d1f02f74e8cfdb21248ff1ca347efbde53a1.tar.bz2 |
custom block size
Diffstat (limited to 'programs/lz4cli.c')
-rw-r--r-- | programs/lz4cli.c | 39 |
1 files changed, 27 insertions, 12 deletions
diff --git a/programs/lz4cli.c b/programs/lz4cli.c index 1f6b391..1f25a21 100644 --- a/programs/lz4cli.c +++ b/programs/lz4cli.c @@ -161,7 +161,7 @@ static int usage_advanced(const char* exeName) DISPLAY( " -r : operate recursively on directories (sets also -m)\n"); #endif DISPLAY( " -l : compress using Legacy format (Linux kernel compression)\n"); - DISPLAY( " -B# : Block size [4-7](default : 7)\n"); + DISPLAY( " -B# : Block size [4-7] (default : 7)\n"); DISPLAY( " -BD : Block dependency (improve compression ratio)\n"); /* DISPLAY( " -BX : enable block checksum (default:disabled)\n"); *//* Option currently inactive */ DISPLAY( "--no-frame-crc : disable stream checksum (default:enabled)\n"); @@ -171,6 +171,8 @@ static int usage_advanced(const char* exeName) DISPLAY( " -b# : benchmark file(s), using # compression level (default : 1) \n"); DISPLAY( " -e# : test all compression levels from -bX to # (default : 1)\n"); DISPLAY( " -i# : minimum evaluation time in seconds (default : 3s)\n"); + DISPLAY( " -B# : cut file into independent blocks of size # bytes [32+]\n"); + DISPLAY( " or predefined block size [4-7] (default: 7)\n"); #if defined(ENABLE_LZ4C_LEGACY_OPTIONS) DISPLAY( "Legacy arguments :\n"); DISPLAY( " -c0 : fast compression\n"); @@ -417,20 +419,33 @@ int main(int argc, const char** argv) int exitBlockProperties=0; switch(argument[1]) { - case '4': - case '5': - case '6': - case '7': - { int const B = argument[1] - '0'; - blockSize = LZ4IO_setBlockSizeID(B); - BMK_setNotificationLevel(displayLevel); - BMK_SetBlockSize(blockSize); + case 'D': LZ4IO_setBlockMode(LZ4IO_blockLinked); argument++; break; + case 'X': LZ4IO_setBlockChecksumMode(1); argument ++; break; /* disabled by default */ + default : + if (argument[1] < '0' || argument[1] > '9') { + exitBlockProperties=1; + break; + } else { + unsigned B; argument++; + B = readU32FromChar(&argument); + argument--; + if (B < 4) badusage(exeName); + if (B <= 7) { + blockSize = LZ4IO_setBlockSizeID(B); + BMK_SetBlockSize(blockSize); + DISPLAYLEVEL(2, "using blocks of size %u KB \n", (U32)(blockSize>>10)); + } else { + if (B < 32) badusage(exeName); + BMK_SetBlockSize(B); + if (B >= 1024) { + DISPLAYLEVEL(2, "bench: using blocks of size %u KB \n", (U32)(B>>10)); + } else { + DISPLAYLEVEL(2, "bench: using blocks of size %u bytes \n", (U32)(B)); + } + } break; } - case 'D': LZ4IO_setBlockMode(LZ4IO_blockLinked); argument++; break; - case 'X': LZ4IO_setBlockChecksumMode(1); argument ++; break; /* disabled by default */ - default : exitBlockProperties=1; } if (exitBlockProperties) break; } |