@@ -153,10 +153,11 @@ static void printUsage(){
153153 " )bytes of memory;\n "
154154 " matchBlockSize>=4, DEFAULT -s-64, recommended 16,32,48,1k,64k,1m etc...\n "
155155 " special options:\n "
156- " -block[ -fastMatchBlockSize] \n "
156+ " -block-fastMatchBlockSize \n "
157157 " must run with -m;\n "
158- " set is use fast block match befor slow match, DEFAULT false;\n "
159- " fastMatchBlockSize>=4, DEFAULT 4k, recommended 256,1k,64k,1m etc...;\n "
158+ " set block match befor slow byte-by-byte match, DEFAULT -block-4k;\n "
159+ " if set -block-0, means don't use block match;\n "
160+ " fastMatchBlockSize>=4, recommended 256,1k,64k,1m etc...\n "
160161 " if newData similar to oldData then diff speed++ & diff memory--,\n "
161162 " but small possibility outDiffFile's size+\n "
162163 " -cache \n "
@@ -181,13 +182,10 @@ static void printUsage(){
181182 " set outDiffFile Compress type, DEFAULT uncompress;\n "
182183 " for resave diffFile,recompress diffFile to outDiffFile by new set;\n "
183184 " support compress type & level & dict:\n "
184- " (re. https://github.com/sisong/lzbench/blob/master/lzbench171_sorted.md )\n "
185185#ifdef _CompressPlugin_zlib
186186 " -c-zlib[-{1..9}[-dictBits]] DEFAULT level 9\n "
187187 " dictBits can 9--15, DEFAULT 15.\n "
188188# if (_IS_USED_MULTITHREAD)
189- " -c-pzlib[-{1..9}[-dictBits]] DEFAULT level 6\n "
190- " dictBits can 9--15, DEFAULT 15.\n "
191189 " support run by multi-thread parallel, fast!\n "
192190# endif
193191#endif
@@ -591,16 +589,14 @@ static int _checkSetCompress(hdiff_TCompress** out_compressPlugin,
591589 const size_t defaultDictBits_zlib=15 ; // 32k
592590#endif
593591#ifdef _CompressPlugin_zlib
594- __getCompressSet (_tryGetCompressSet (&isMatchedType,ptype,ptypeEnd," zlib" ,0 ,
592+ __getCompressSet (_tryGetCompressSet (&isMatchedType,ptype,ptypeEnd," zlib" ," pzlib " ,
595593 &compressLevel,1 ,9 ,9 , &dictBits,9 ,15 ,defaultDictBits_zlib)," -c-zlib-?" ){
594+ # if (!_IS_USED_MULTITHREAD)
596595 static TCompressPlugin_zlib _zlibCompressPlugin=zlibCompressPlugin;
597596 _zlibCompressPlugin.compress_level =(int )compressLevel;
598597 _zlibCompressPlugin.windowBits =(signed char )(-dictBits);
599598 *out_compressPlugin=&_zlibCompressPlugin.base ; }}
600- # if (_IS_USED_MULTITHREAD)
601- // pzlib
602- __getCompressSet (_tryGetCompressSet (&isMatchedType,ptype,ptypeEnd," pzlib" ,0 ,
603- &compressLevel,1 ,9 ,6 , &dictBits,9 ,15 ,defaultDictBits_zlib)," -c-pzlib-?" ){
599+ # else
604600 static TCompressPlugin_pzlib _pzlibCompressPlugin=pzlibCompressPlugin;
605601 _pzlibCompressPlugin.base .compress_level =(int )compressLevel;
606602 _pzlibCompressPlugin.base .windowBits =(signed char )(-dictBits);
@@ -716,7 +712,7 @@ int hdiff_cmd_line(int argc, const char * argv[]){
716712 diffSets.isDiffInMem =_kNULL_VALUE;
717713 diffSets.isSingleCompressedDiff =_kNULL_VALUE;
718714 diffSets.isUseBigCacheMatch =_kNULL_VALUE;
719- diffSets.matchBlockSize =0 ;
715+ diffSets.matchBlockSize =_kNULL_SIZE ;
720716 diffSets.threadNum =_THREAD_NUMBER_NULL;
721717 hpatch_BOOL isForceOverwrite=_kNULL_VALUE;
722718 hpatch_BOOL isOutputHelp=_kNULL_VALUE;
@@ -771,12 +767,13 @@ int hdiff_cmd_line(int argc, const char * argv[]){
771767 } break ;
772768 case ' s' :{
773769 _options_check ((diffSets.isDiffInMem ==_kNULL_VALUE)," -s" );
774- _options_check ((diffSets.matchBlockSize ==0 )," -block must run with -m" );
770+ _options_check ((diffSets.matchBlockSize ==_kNULL_SIZE )," -block must run with -m" );
775771 diffSets.isDiffInMem =hpatch_FALSE; // diff by stream
776772 if (op[2 ]==' -' ){
777773 const char * pnum=op+3 ;
778774 _options_check (kmg_to_size (pnum,strlen (pnum),&diffSets.matchBlockSize )," -s-?" );
779- _options_check (kMatchBlockSize_min <=diffSets.matchBlockSize ," -s-?" );
775+ _options_check ((kMatchBlockSize_min <=diffSets.matchBlockSize )
776+ &&(diffSets.matchBlockSize !=_kNULL_SIZE)," -s-?" );
780777 }else {
781778 diffSets.matchBlockSize =kMatchBlockSize_default ;
782779 }
@@ -832,13 +829,15 @@ int hdiff_cmd_line(int argc, const char * argv[]){
832829 } break ;
833830#endif
834831 case ' b' :{
835- _options_check ((diffSets.matchBlockSize ==0 )&&
832+ _options_check ((diffSets.matchBlockSize ==_kNULL_SIZE )&&
836833 (op[2 ]==' l' )&&(op[3 ]==' o' )&&(op[4 ]==' c' )&&(op[5 ]==' k' )&&
837834 ((op[6 ]==' \0 ' )||(op[6 ]==' -' ))," -block?" );
838835 if (op[6 ]==' -' ){
839836 const char * pnum=op+7 ;
840837 _options_check (kmg_to_size (pnum,strlen (pnum),&diffSets.matchBlockSize )," -block-?" );
841- _options_check (kMatchBlockSize_min <=diffSets.matchBlockSize ," -block-?" );
838+ if (diffSets.matchBlockSize !=0 )
839+ _options_check ((kMatchBlockSize_min <=diffSets.matchBlockSize )
840+ &&(diffSets.matchBlockSize !=_kNULL_SIZE)," -block-?" );
842841 }else {
843842 diffSets.matchBlockSize =kDefaultFastMatchBlockSize ;
844843 }
@@ -867,9 +866,10 @@ int hdiff_cmd_line(int argc, const char * argv[]){
867866 _options_check (_getOptChecksum (&checksumPlugin,ptype," no" )," -C-?" );
868867 } break ;
869868 case ' n' :{
870- _options_check ((kMaxOpenFileNumber ==_kNULL_SIZE)&&(op[2 ]==' -' )," -n-? " )
869+ _options_check ((kMaxOpenFileNumber ==_kNULL_SIZE)&&(op[2 ]==' -' )," -n" )
871870 const char * pnum=op+3 ;
872871 _options_check (kmg_to_size (pnum,strlen (pnum),&kMaxOpenFileNumber )," -n-?" );
872+ _options_check ((kMaxOpenFileNumber !=_kNULL_SIZE)," -n-?" );
873873 } break ;
874874 case ' g' :{
875875 if (op[2 ]==' #' ){ // -g#
@@ -954,6 +954,8 @@ int hdiff_cmd_line(int argc, const char * argv[]){
954954 if (kMaxOpenFileNumber <kMaxOpenFileNumber_default_min )
955955 kMaxOpenFileNumber =kMaxOpenFileNumber_default_min ;
956956#endif
957+ if (diffSets.isDiffInMem &&(diffSets.matchBlockSize ==_kNULL_SIZE))
958+ diffSets.matchBlockSize =kDefaultFastMatchBlockSize ;
957959 if (diffSets.threadNum ==_THREAD_NUMBER_NULL)
958960 diffSets.threadNum =_THREAD_NUMBER_DEFUALT;
959961 else if (diffSets.threadNum >_THREAD_NUMBER_MAX)
@@ -1024,7 +1026,7 @@ int hdiff_cmd_line(int argc, const char * argv[]){
10241026#endif
10251027 {
10261028 diffSets.isDiffInMem =hpatch_FALSE; // not need -m, set as -s
1027- diffSets.matchBlockSize =hpatch_kStreamCacheSize ; // not used
1029+ diffSets.matchBlockSize =kDefaultFastMatchBlockSize ; // not used
10281030 diffSets.isUseBigCacheMatch =hpatch_FALSE;
10291031 }
10301032 }else {
0 commit comments