From: Perry Rapp Date: Fri, 22 Jul 2005 02:30:03 +0000 (+0000) Subject: 2005-07-22 Perry X-Git-Tag: 2.16.5~5816 X-Git-Url: http://git.osdn.net/view?a=commitdiff_plain;h=2bfddd48fa3f5d10061a4218fc7c6b902a304a4f;p=winmerge-jp%2Fwinmerge-jp.git 2005-07-22 Perry PATCH: [ 1242339 ] Fix CMergeDoc::Rescan to set bIdentical in all cases Src: DiffWrapper.cpp DiffWrapper.h MergeDoc.cpp PatchTool.cpp --- diff --git a/Src/DiffWrapper.cpp b/Src/DiffWrapper.cpp index 73002424e..52fdd870d 100644 --- a/Src/DiffWrapper.cpp +++ b/Src/DiffWrapper.cpp @@ -333,12 +333,15 @@ BOOL CDiffWrapper::RunFileDiff() { m_status.bBinaries = TRUE; if (bin_flag == -1) - m_status.bBinariesIdentical = FALSE; + m_status.bIdentical = FALSE; else - m_status.bBinariesIdentical = TRUE; + m_status.bIdentical = TRUE; } else + { // text files according to diffutils, so change script exists + m_status.bIdentical = (script == 0); m_status.bBinaries = FALSE; + } m_status.bLeftMissingNL = inf[0].missing_newline; m_status.bRightMissingNL = inf[1].missing_newline; diff --git a/Src/DiffWrapper.h b/Src/DiffWrapper.h index 11eff258e..8541e13a5 100644 --- a/Src/DiffWrapper.h +++ b/Src/DiffWrapper.h @@ -113,8 +113,10 @@ struct DIFFSTATUS BOOL bLeftMissingNL; /**< Left file is missing EOL before EOF */ BOOL bRightMissingNL; /**< Right file is missing EOL before EOF */ BOOL bBinaries; /**< Files are binaries */ - BOOL bBinariesIdentical; /**< Binary files are identical. */ + BOOL bIdentical; /**< diffutils said files are identical */ BOOL bPatchFileFailed; /**< Creating patch file failed */ + + DIFFSTATUS() { memset(this, 0, sizeof(*this)); } // start out with all flags clear }; /** diff --git a/Src/MergeDoc.cpp b/Src/MergeDoc.cpp index a116a16b3..d5e532532 100644 --- a/Src/MergeDoc.cpp +++ b/Src/MergeDoc.cpp @@ -326,7 +326,6 @@ int CMergeDoc::Rescan(BOOL &bBinary, BOOL &bIdentical, BOOL bForced /* =FALSE */) { DIFFOPTIONS diffOptions = {0}; - DIFFSTATUS status = {0}; DiffFileInfo fileInfo; BOOL diffSuccess; int nResult = RESCAN_OK; @@ -383,6 +382,7 @@ int CMergeDoc::Rescan(BOOL &bBinary, BOOL &bIdentical, diffSuccess = m_diffWrapper.RunFileDiff(); // Read diff-status + DIFFSTATUS status; m_diffWrapper.GetDiffStatus(&status); if (bBinary) // believe caller if we were told these are binaries status.bBinaries = TRUE; @@ -398,14 +398,15 @@ int CMergeDoc::Rescan(BOOL &bBinary, BOOL &bIdentical, status.bRightMissingNL); } + // set identical/diff result as recorded by diffutils + bIdentical = status.bIdentical; + // Determine errors and binary file compares if (!diffSuccess) nResult = RESCAN_FILE_ERR; else if (status.bBinaries) { bBinary = TRUE; - if (status.bBinariesIdentical) - bIdentical = TRUE; } else { diff --git a/Src/PatchTool.cpp b/Src/PatchTool.cpp index 7783e6c02..79f4e5297 100644 --- a/Src/PatchTool.cpp +++ b/Src/PatchTool.cpp @@ -47,7 +47,7 @@ void CPatchTool::AddFiles(CString file1, CString file2) */ int CPatchTool::CreatePatch() { - DIFFSTATUS status = {0}; + DIFFSTATUS status; BOOL bResult = TRUE; BOOL bDiffSuccess; int retVal = 0; diff --git a/Src/readme.txt b/Src/readme.txt index 3aa4d8923..5001d3172 100644 --- a/Src/readme.txt +++ b/Src/readme.txt @@ -1,3 +1,7 @@ +2005-07-22 Perry + PATCH: [ 1242339 ] Fix CMergeDoc::Rescan to set bIdentical in all cases + Src: DiffWrapper.cpp DiffWrapper.h MergeDoc.cpp PatchTool.cpp + 2005-07-21 Perry PATCH: [ 1226311 ] Record notes about why compare failed Src: DiffItem.h DiffWrapper.cpp DiffWrapper.h