@@ -616,10 +616,11 @@ static unsigned parseAdaptParameters(const char* stringPtr, int* adaptMinPtr, in
616616 * @return 1 means that compression parameters were correct
617617 * @return 0 in case of malformed parameters
618618 */
619- static unsigned parseCompressionParameters (const char * stringPtr , ZSTD_compressionParameters * params )
619+ static unsigned parseCompressionParameters (const char * stringPtr , ZSTD_compressionParameters * params , int * windowFrac )
620620{
621621 for ( ; ;) {
622622 if (longCommandWArg (& stringPtr , "windowLog=" ) || longCommandWArg (& stringPtr , "wlog=" )) { params -> windowLog = readU32FromChar (& stringPtr ); if (stringPtr [0 ]== ',' ) { stringPtr ++ ; continue ; } else break ; }
623+ if (longCommandWArg (& stringPtr , "windowFrac=" ) || longCommandWArg (& stringPtr , "wfrac=" )) { * windowFrac = readU32FromChar (& stringPtr ); if (stringPtr [0 ]== ',' ) { stringPtr ++ ; continue ; } else break ; }
623624 if (longCommandWArg (& stringPtr , "chainLog=" ) || longCommandWArg (& stringPtr , "clog=" )) { params -> chainLog = readU32FromChar (& stringPtr ); if (stringPtr [0 ]== ',' ) { stringPtr ++ ; continue ; } else break ; }
624625 if (longCommandWArg (& stringPtr , "hashLog=" ) || longCommandWArg (& stringPtr , "hlog=" )) { params -> hashLog = readU32FromChar (& stringPtr ); if (stringPtr [0 ]== ',' ) { stringPtr ++ ; continue ; } else break ; }
625626 if (longCommandWArg (& stringPtr , "searchLog=" ) || longCommandWArg (& stringPtr , "slog=" )) { params -> searchLog = readU32FromChar (& stringPtr ); if (stringPtr [0 ]== ',' ) { stringPtr ++ ; continue ; } else break ; }
@@ -878,6 +879,7 @@ int main(int argCount, const char* argv[])
878879 FIO_progressSetting_e progress = FIO_ps_auto ;
879880 zstd_operation_mode operation = zom_compress ;
880881 ZSTD_compressionParameters compressionParams ;
882+ int windowFrac = 0 ;
881883 int cLevel = init_cLevel ();
882884 int cLevelLast = MINCLEVEL - 1 ; /* lower than minimum */
883885 unsigned recursive = 0 ;
@@ -1076,7 +1078,7 @@ int main(int argCount, const char* argv[])
10761078 if (longCommandWArg (& argument , "--block-size" )) { NEXT_TSIZE (blockSize ); continue ; }
10771079 if (longCommandWArg (& argument , "--maxdict" )) { NEXT_UINT32 (maxDictSize ); continue ; }
10781080 if (longCommandWArg (& argument , "--dictID" )) { NEXT_UINT32 (dictID ); continue ; }
1079- if (longCommandWArg (& argument , "--zstd=" )) { if (!parseCompressionParameters (argument , & compressionParams )) { badUsage (programName , originalArgument ); CLEAN_RETURN (1 ); } ; cType = FIO_zstdCompression ; continue ; }
1081+ if (longCommandWArg (& argument , "--zstd=" )) { if (!parseCompressionParameters (argument , & compressionParams , & windowFrac )) { badUsage (programName , originalArgument ); CLEAN_RETURN (1 ); } ; cType = FIO_zstdCompression ; continue ; }
10801082 if (longCommandWArg (& argument , "--stream-size" )) { NEXT_TSIZE (streamSrcSize ); continue ; }
10811083 if (longCommandWArg (& argument , "--target-compressed-block-size" )) { NEXT_TSIZE (targetCBlockSize ); continue ; }
10821084 if (longCommandWArg (& argument , "--size-hint" )) { NEXT_TSIZE (srcSizeHint ); continue ; }
@@ -1600,6 +1602,7 @@ int main(int argCount, const char* argv[])
16001602 FIO_setSrcSizeHint (prefs , srcSizeHint );
16011603 FIO_setLiteralCompressionMode (prefs , literalCompressionMode );
16021604 FIO_setSparseWrite (prefs , 0 );
1605+ FIO_setWindowFrac (prefs , windowFrac );
16031606 if (adaptMin > cLevel ) cLevel = adaptMin ;
16041607 if (adaptMax < cLevel ) cLevel = adaptMax ;
16051608
0 commit comments