From 033405f9617be93b27f6b442e70cdbc3d3b4ae86 Mon Sep 17 00:00:00 2001 From: Dario Sassi Date: Mon, 9 Dec 2019 19:01:20 +0000 Subject: [PATCH] EgtGeneral 2.1l4 : - TextFileCompare e BinaryFile ora restituiscono il numero di differenze trovate. --- CmdParser.cpp | 6 ++++-- EgtGeneral.rc | Bin 11638 -> 11638 bytes FileCompare.cpp | 51 +++++++++++++++++++++++------------------------- 3 files changed, 28 insertions(+), 29 deletions(-) diff --git a/CmdParser.cpp b/CmdParser.cpp index 74f5541..0f10cfc 100644 --- a/CmdParser.cpp +++ b/CmdParser.cpp @@ -579,7 +579,8 @@ CmdParser::ExecuteFile( const string& sCmd2, const STRVECTOR& vsParams) string sFileDiff = vsParams[3] ; DirReplace( sFileDiff) ; // eseguo il confronto - TextFileCompare( sFile1, sFile2, vsParams[2], sFileDiff) ; + int nDiff ; + TextFileCompare( sFile1, sFile2, vsParams[2], sFileDiff, nDiff) ; return true ; } @@ -596,7 +597,8 @@ CmdParser::ExecuteFile( const string& sCmd2, const STRVECTOR& vsParams) string sFileDiff = vsParams[2] ; DirReplace( sFileDiff) ; // eseguo il confronto - BinaryFileCompare( sFile1, sFile2, sFileDiff) ; + int nDiff ; + BinaryFileCompare( sFile1, sFile2, sFileDiff, nDiff) ; return true ; } diff --git a/EgtGeneral.rc b/EgtGeneral.rc index f1a32e74515eb135cd02fef4db9c602f257ee287..ea11861ed9e2625afd63c1d8f1ab43af858df18b 100644 GIT binary patch delta 126 zcmews^(|_{4>ndK1|0^I&GY4?nVEAKOeSv>)ZHv2WyQF;iQ9!4E_s@1a)V?Jk^&pX V&3VF3cofvJz%`?rtfCym1pq@yBQyX2 delta 126 zcmews^(|_{4>ndq1|0^o&GY4?nVGX0%qDLX)ZHv2WyQF;iQ9!4E_s@1a)V?Jk^&pX V&3VF3cofvJz%`?rtfCym1pq}WBRl{A diff --git a/FileCompare.cpp b/FileCompare.cpp index 0d96cba..80ccac3 100644 --- a/FileCompare.cpp +++ b/FileCompare.cpp @@ -27,48 +27,42 @@ static string CharToHexString( char cVal) ; //---------------------------------------------------------------------------- bool -TextFileCompare( const string& sFile1, const string& sFile2, const string& sRemIni, const string& sFileO) +TextFileCompare( const string& sFile1, const string& sFile2, const string& sRemIni, const string& sFileO, int& nDiff) { - bool bOk1 ; - bool bOk2 ; - int nDiff ; - string sLine1 ; - string sLine2 ; - string sLine1S ; - string sLine2S ; - string sLine1T ; - string sLine2T ; - ofstream ofOut ; - Scanner scFile1 ; - Scanner scFile2 ; - - // apro il file per le differenze in append + ofstream ofOut ; ofOut.open( stringtoW( sFileO), ios_base::out | ios_base::app) ; - if ( ! ofOut.good()) + if ( ! ofOut.good()) { + nDiff = -3 ; return false ; + } // emetto intestazione differenze ofOut << "Compare (text) " << sFile1 << " to " << sFile2 << " :" << endl ; // apro il primo file + Scanner scFile1 ; if ( ! scFile1.Init( sFile1, sRemIni.c_str())) { ofOut << " Missing first file !!!" << endl ; ofOut.close() ; + nDiff = -1 ; return false ; } // apro il secondo file + Scanner scFile2 ; if ( ! scFile2.Init( sFile2, sRemIni.c_str())) { ofOut << " Missing second file !!!" << endl ; ofOut.close() ; + nDiff = -2 ; return false ; } // ciclo sulle linee dei due file nDiff = 0 ; - bOk1 = scFile1.GetLine( sLine1) ; - bOk2 = scFile2.GetLine( sLine2) ; + string sLine1, sLine2 ; + bool bOk1 = scFile1.GetLine( sLine1) ; + bool bOk2 = scFile2.GetLine( sLine2) ; while ( bOk1 || bOk2) { // se linee diverse if ( sLine1.compare( sLine2) != 0) { @@ -78,6 +72,7 @@ TextFileCompare( const string& sFile1, const string& sFile2, const string& sRemI ofOut << " F1(" << scFile1.GetCurrLineNbr() << "):" << sLine1 << endl ; ofOut << " F2(" << scFile2.GetCurrLineNbr() << "):" << sLine2 << endl ; // provo a caricare le linee successive + string sLine1S, sLine2S ; bOk1 = scFile1.GetLine( sLine1S) ; bOk2 = scFile2.GetLine( sLine2S) ; // se le successive coincidono @@ -103,6 +98,7 @@ TextFileCompare( const string& sFile1, const string& sFile2, const string& sRemI // altrimenti else { // carico le linee ancora successive + string sLine1T, sLine2T ; bOk1 = scFile1.GetLine( sLine1T) ; bOk2 = scFile2.GetLine( sLine2T) ; // se la 1 corrente coincide con la 2 terza @@ -151,40 +147,42 @@ TextFileCompare( const string& sFile1, const string& sFile2, const string& sRemI //---------------------------------------------------------------------------- bool -BinaryFileCompare( const string& sFile1, const string& sFile2, const string& sFileO) +BinaryFileCompare( const string& sFile1, const string& sFile2, const string& sFileO, int& nDiff) { - ifstream ifIn1 ; - ifstream ifIn2 ; - ofstream ofOut ; - - // apro il file per le differenze in append + ofstream ofOut ; ofOut.open( stringtoW( sFileO), ios_base::out | ios_base::app) ; - if ( ! ofOut.good()) + if ( ! ofOut.good()) { + nDiff = -3 ; return false ; + } // emetto intestazione differenze ofOut << "Compare (binary) " << sFile1 << " to " << sFile2 << " :" << endl ; // apro il primo file + ifstream ifIn1 ; ifIn1.open( stringtoW( sFile1), ios_base::in | ios_base::binary) ; if ( ! ifIn1.good()) { ofOut << " Missing first file !!!" << endl ; ofOut.close() ; + nDiff = -1 ; return false ; } // apro il secondo file + ifstream ifIn2 ; ifIn2.open( stringtoW( sFile2), ios_base::in | ios_base::binary) ; if ( ! ifIn2.good()) { ofOut << " Missing second file !!!" << endl ; ofOut.close() ; ifIn1.close() ; + nDiff = -2 ; return false ; } // ciclo sui buffer dei due file - int nDiff = 0 ; + nDiff = 0 ; const int DIM_BUFF = 8192 ; char cBuff1[DIM_BUFF] ; char cBuff2[DIM_BUFF] ; @@ -205,7 +203,6 @@ BinaryFileCompare( const string& sFile1, const string& sFile2, const string& sFi } } } - // lettura prossimo blocco nBase += min( nBuff1, nBuff2) ; ifIn1.read( cBuff1, DIM_BUFF) ;