)
{
di.diffcode.diffcode |= DIFFCODE::INCLUDED;
- // 2. Add unique files
- // We must compare unique files to itself to detect encoding
- if (di.diffcode.isSideFirstOnly() || di.diffcode.isSideSecondOnly() || (nDirs > 2 && di.diffcode.isSideThirdOnly()))
- {
- int nCurrentCompMethod = pCtxt->GetCompareMethod();
- if (nCurrentCompMethod != CMP_DATE &&
- nCurrentCompMethod != CMP_DATE_SIZE &&
- nCurrentCompMethod != CMP_SIZE)
- {
- FolderCmp folderCmp;
- unsigned diffCode = folderCmp.prepAndCompareFiles(pCtxt, di);
-
- // Add possible binary flag for unique items
- if (diffCode & DIFFCODE::BIN)
- di.diffcode.diffcode |= DIFFCODE::BIN;
- StoreDiffData(di, pCtxt, &folderCmp);
- }
- else
- {
- StoreDiffData(di, pCtxt, NULL);
- }
- }
- // 3. Compare two files
- else
- {
- // Really compare
- FolderCmp folderCmp;
- di.diffcode.diffcode |= folderCmp.prepAndCompareFiles(pCtxt, di);
- StoreDiffData(di, pCtxt, &folderCmp);
- }
+ FolderCmp folderCmp;
+ di.diffcode.diffcode |= folderCmp.prepAndCompareFiles(pCtxt, di);
+ StoreDiffData(di, pCtxt, &folderCmp);
}
else
{
*/
static void UpdateDiffItem(int nBuffers, DIFFITEM &di, CDiffContext *pCtxt)
{
- di.diffcode.diffcode |= DIFFCODE::SIDEFLAGS;
+ di.diffcode.setSideNone();
for (int nBuffer = 0; nBuffer < nBuffers; nBuffer++)
{
di.diffFileInfo[nBuffer].ClearPartial();
- di.diffFileInfo[nBuffer].ClearPartial();
- if (!pCtxt->UpdateInfoFromDiskHalf(di, nBuffer))
- {
- if (nBuffer == 0)
- di.diffcode.diffcode &= ~DIFFCODE::FIRST;
- else if (nBuffer == 1)
- di.diffcode.diffcode &= ~DIFFCODE::SECOND;
- else
- di.diffcode.diffcode &= ~DIFFCODE::THIRD;
- }
- }
- // 1. Clear flags
- di.diffcode.diffcode &= ~(DIFFCODE::TEXTFLAGS | DIFFCODE::COMPAREFLAGS);
- // 2. Process unique files
- // We must compare unique files to itself to detect encoding
- if (!di.diffcode.existAll())
- {
- int compareMethod = pCtxt->GetCompareMethod();
- if (compareMethod != CMP_DATE && compareMethod != CMP_DATE_SIZE &&
- compareMethod != CMP_SIZE)
- {
- di.diffcode.diffcode |= DIFFCODE::SAME;
- FolderCmp folderCmp;
- int diffCode = folderCmp.prepAndCompareFiles(pCtxt, di);
- // Add possible binary flag for unique items
- if (diffCode & DIFFCODE::BIN)
- di.diffcode.diffcode |= DIFFCODE::BIN;
- }
- }
- // 3. Compare two files
- else
- {
- // Really compare
- FolderCmp folderCmp;
- di.diffcode.diffcode |= folderCmp.prepAndCompareFiles(pCtxt, di);
+ if (pCtxt->UpdateInfoFromDiskHalf(di, nBuffer))
+ di.diffcode.diffcode |= DIFFCODE::FIRST << nBuffers;
}
+ // Clear flags
+ di.diffcode.diffcode &= ~(DIFFCODE::TEXTFLAGS | DIFFCODE::COMPAREFLAGS | DIFFCODE::COMPAREFLAGS3WAY);
+ // Really compare
+ FolderCmp folderCmp;
+ di.diffcode.diffcode |= folderCmp.prepAndCompareFiles(pCtxt, di);
}
/**