Merge pull request #2032 from bimbashrestha/no-size

Adding --[no-]content-size to the cli
This commit is contained in:
Bimba Shrestha 2020-03-09 18:14:05 -05:00 committed by GitHub
commit 10f915f041
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 31 additions and 2 deletions

View File

@ -323,6 +323,7 @@ struct FIO_prefs_s {
int excludeCompressedFiles; int excludeCompressedFiles;
int patchFromMode; int patchFromMode;
int contentSize;
}; };
@ -494,6 +495,11 @@ void FIO_setPatchFromMode(FIO_prefs_t* const prefs, int value)
prefs->patchFromMode = value != 0; prefs->patchFromMode = value != 0;
} }
void FIO_setContentSize(FIO_prefs_t* const prefs, int value)
{
prefs->contentSize = value != 0;
}
/*-************************************* /*-*************************************
* Functions * Functions
***************************************/ ***************************************/
@ -817,6 +823,7 @@ static cRess_t FIO_createCResources(FIO_prefs_t* const prefs,
CHECK( ZSTD_CCtx_setParameter(ress.cctx, ZSTD_c_contentSizeFlag, 1) ); /* always enable content size when available (note: supposed to be default) */ CHECK( ZSTD_CCtx_setParameter(ress.cctx, ZSTD_c_contentSizeFlag, 1) ); /* always enable content size when available (note: supposed to be default) */
CHECK( ZSTD_CCtx_setParameter(ress.cctx, ZSTD_c_dictIDFlag, prefs->dictIDFlag) ); CHECK( ZSTD_CCtx_setParameter(ress.cctx, ZSTD_c_dictIDFlag, prefs->dictIDFlag) );
CHECK( ZSTD_CCtx_setParameter(ress.cctx, ZSTD_c_checksumFlag, prefs->checksumFlag) ); CHECK( ZSTD_CCtx_setParameter(ress.cctx, ZSTD_c_checksumFlag, prefs->checksumFlag) );
CHECK( ZSTD_CCtx_setParameter(ress.cctx, ZSTD_c_contentSizeFlag, prefs->contentSize) );
/* compression level */ /* compression level */
CHECK( ZSTD_CCtx_setParameter(ress.cctx, ZSTD_c_compressionLevel, cLevel) ); CHECK( ZSTD_CCtx_setParameter(ress.cctx, ZSTD_c_compressionLevel, cLevel) );
/* max compressed block size */ /* max compressed block size */

View File

@ -95,6 +95,7 @@ void FIO_setNoProgress(unsigned noProgress);
void FIO_setNotificationLevel(int level); void FIO_setNotificationLevel(int level);
void FIO_setExcludeCompressedFile(FIO_prefs_t* const prefs, int excludeCompressedFiles); void FIO_setExcludeCompressedFile(FIO_prefs_t* const prefs, int excludeCompressedFiles);
void FIO_setPatchFromMode(FIO_prefs_t* const prefs, int value); void FIO_setPatchFromMode(FIO_prefs_t* const prefs, int value);
void FIO_setContentSize(FIO_prefs_t* const prefs, int value);
/*-************************************* /*-*************************************
* Single File functions * Single File functions

View File

@ -198,6 +198,10 @@ the last one takes effect.
default: enabled when output is into a file, default: enabled when output is into a file,
and disabled when output is stdout. and disabled when output is stdout.
This setting overrides default and can force sparse mode over stdout. This setting overrides default and can force sparse mode over stdout.
* `--[no-]content-size`:
enable / disable whether or not the original size of the file is placed in
the header of the compressed file. The default option is
--content-size (meaning that the original size will be placed in the header).
* `--rm`: * `--rm`:
remove source file(s) after successful compression or decompression remove source file(s) after successful compression or decompression
* `-k`, `--keep`: * `-k`, `--keep`:

View File

@ -634,7 +634,8 @@ int main(int const argCount, const char* argv[])
setRealTimePrio = 0, setRealTimePrio = 0,
singleThread = 0, singleThread = 0,
showDefaultCParams = 0, showDefaultCParams = 0,
ultra=0; ultra=0,
contentSize=1;
double compressibility = 0.5; double compressibility = 0.5;
unsigned bench_nbSeconds = 3; /* would be better if this value was synchronized from bench */ unsigned bench_nbSeconds = 3; /* would be better if this value was synchronized from bench */
size_t blockSize = 0; size_t blockSize = 0;
@ -748,6 +749,8 @@ int main(int const argCount, const char* argv[])
if (!strcmp(argument, "--priority=rt")) { setRealTimePrio = 1; continue; } if (!strcmp(argument, "--priority=rt")) { setRealTimePrio = 1; continue; }
if (!strcmp(argument, "--output-dir-flat")) {nextArgumentIsOutDirName=1; lastCommand=1; continue; } if (!strcmp(argument, "--output-dir-flat")) {nextArgumentIsOutDirName=1; lastCommand=1; continue; }
if (!strcmp(argument, "--show-default-cparams")) { showDefaultCParams = 1; continue; } if (!strcmp(argument, "--show-default-cparams")) { showDefaultCParams = 1; continue; }
if (!strcmp(argument, "--content-size")) { contentSize = 1; continue; }
if (!strcmp(argument, "--no-content-size")) { contentSize = 0; continue; }
if (!strcmp(argument, "--adapt")) { adapt = 1; continue; } if (!strcmp(argument, "--adapt")) { adapt = 1; continue; }
if (longCommandWArg(&argument, "--adapt=")) { adapt = 1; if (!parseAdaptParameters(argument, &adaptMin, &adaptMax)) { badusage(programName); CLEAN_RETURN(1); } continue; } if (longCommandWArg(&argument, "--adapt=")) { adapt = 1; if (!parseAdaptParameters(argument, &adaptMin, &adaptMax)) { badusage(programName); CLEAN_RETURN(1); } continue; }
if (!strcmp(argument, "--single-thread")) { nbWorkers = 0; singleThread = 1; continue; } if (!strcmp(argument, "--single-thread")) { nbWorkers = 0; singleThread = 1; continue; }
@ -1256,6 +1259,7 @@ int main(int const argCount, const char* argv[])
FIO_setMemLimit(prefs, memLimit); FIO_setMemLimit(prefs, memLimit);
if (operation==zom_compress) { if (operation==zom_compress) {
#ifndef ZSTD_NOCOMPRESS #ifndef ZSTD_NOCOMPRESS
FIO_setContentSize(prefs, contentSize);
FIO_setNbWorkers(prefs, nbWorkers); FIO_setNbWorkers(prefs, nbWorkers);
FIO_setBlockSize(prefs, (int)blockSize); FIO_setBlockSize(prefs, (int)blockSize);
if (g_overlapLog!=OVERLAP_LOG_DEFAULT) FIO_setOverlapLog(prefs, (int)g_overlapLog); if (g_overlapLog!=OVERLAP_LOG_DEFAULT) FIO_setOverlapLog(prefs, (int)g_overlapLog);
@ -1303,7 +1307,7 @@ int main(int const argCount, const char* argv[])
else else
operationResult = FIO_compressMultipleFilenames(prefs, filenames->fileNames, (unsigned)filenames->tableSize, outDirName, outFileName, suffix, dictFileName, cLevel, compressionParams); operationResult = FIO_compressMultipleFilenames(prefs, filenames->fileNames, (unsigned)filenames->tableSize, outDirName, outFileName, suffix, dictFileName, cLevel, compressionParams);
#else #else
(void)suffix; (void)adapt; (void)rsyncable; (void)ultra; (void)cLevel; (void)ldmFlag; (void)literalCompressionMode; (void)targetCBlockSize; (void)streamSrcSize; (void)srcSizeHint; (void)ZSTD_strategyMap; /* not used when ZSTD_NOCOMPRESS set */ (void)contentSize; (void)suffix; (void)adapt; (void)rsyncable; (void)ultra; (void)cLevel; (void)ldmFlag; (void)literalCompressionMode; (void)targetCBlockSize; (void)streamSrcSize; (void)srcSizeHint; (void)ZSTD_strategyMap; /* not used when ZSTD_NOCOMPRESS set */
DISPLAY("Compression not supported \n"); DISPLAY("Compression not supported \n");
#endif #endif
} else { /* decompression or test */ } else { /* decompression or test */

View File

@ -469,6 +469,19 @@ ls tmp* > tmpList
$ZSTD -f tmp1 --filelist=tmpList --filelist=tmpList tmp2 tmp3 # can trigger an overflow of internal file list $ZSTD -f tmp1 --filelist=tmpList --filelist=tmpList tmp2 tmp3 # can trigger an overflow of internal file list
rm -rf tmp* rm -rf tmp*
println "\n===> --[no-]content-size tests"
$DATAGEN > tmp_contentsize
$ZSTD -f tmp_contentsize
$ZSTD -lv tmp_contentsize.zst | grep "Decompressed Size:"
$ZSTD -f --no-content-size tmp_contentsize
$ZSTD -lv tmp_contentsize.zst | grep "Decompressed Size:" && die
$ZSTD -f --content-size tmp_contentsize
$ZSTD -lv tmp_contentsize.zst | grep "Decompressed Size:"
$ZSTD -f --content-size --no-content-size tmp_contentsize
$ZSTD -lv tmp_contentsize.zst | grep "Decompressed Size:" && die
rm -rf tmp*
println "test : show-default-cparams regular" println "test : show-default-cparams regular"
$DATAGEN > tmp $DATAGEN > tmp
$ZSTD --show-default-cparams -f tmp $ZSTD --show-default-cparams -f tmp