bool bBin1 = (m_textStats[1].nzeros > 0);
if (bBin0 && bBin1)
- diffcode |= DIFFCODE::BIN;
+ diffcode |= DIFFCODE::BIN | DIFFCODE::BINSIDE1 | DIFFCODE::BINSIDE2;
else if (bBin0)
- diffcode |= DIFFCODE::BINSIDE1;
+ diffcode |= DIFFCODE::BIN | DIFFCODE::BINSIDE1;
else if (bBin1)
- diffcode |= DIFFCODE::BINSIDE2;
+ diffcode |= DIFFCODE::BIN | DIFFCODE::BINSIDE2;
else
diffcode |= DIFFCODE::TEXT;
// and each set of flags is in a different hex digit
// to make debugging easier
// These can always be packed down in the future
- TEXTFLAGS=0x7, TEXT=0x1, BINSIDE1=0x2, BINSIDE2=0x3, BIN=0x4,
- TYPEFLAGS=0x30, FILE=0x10, DIR=0x20,
+ TEXTFLAGS=0x1F, TEXT=0x1, BIN=0x2, BINSIDE1=0x4, BINSIDE2=0x8, BINSIDE3=0x10,
+ TYPEFLAGS=0x60, FILE=0x20, DIR=0x40,
SIDEFLAGS=0x700, FIRST=0x100, SECOND=0x200, THIRD=0x400, BOTH=0x300, ALL=0x700,
COMPAREFLAGS=0x7000, NOCMP=0x0000, SAME=0x1000, DIFF=0x2000, CMPERR=0x3000, CMPABORT=0x4000,
COMPAREFLAGS3WAY=0x18000, DIFFALL=0x0000, DIFF1STONLY=0x8000, DIFF2NDONLY=0x10000, DIFF3RDONLY=0x18000,
bool isResultFiltered() const { return CheckFilter(diffcode, DIFFCODE::SKIPPED); }
// type
bool isText() const { return Check(diffcode, DIFFCODE::TEXTFLAGS, DIFFCODE::TEXT); }
- void setText() { Set(DIFFCODE::TEXTFLAGS, DIFFCODE::TEXT); }
- bool isBin() const { return Check(diffcode, DIFFCODE::TEXTFLAGS, DIFFCODE::BIN) ||
- Check(diffcode, DIFFCODE::TEXTFLAGS, DIFFCODE::BINSIDE1) ||
- Check(diffcode, DIFFCODE::TEXTFLAGS, DIFFCODE::BINSIDE2); }
- void setBin() { Set(DIFFCODE::TEXTFLAGS, DIFFCODE::BIN); }
+ bool isBin() const { return (diffcode & DIFFCODE::BIN) != 0; }
// rescan
bool isScanNeeded() const { return ((diffcode & DIFFCODE::SCANFLAGS) == DIFFCODE::NEEDSCAN); }
// This allows us to (faster) compare big binary files
if (nCompMethod == CMP_CONTENT &&
(di.diffFileInfo[0].size > pCtxt->m_nQuickCompareLimit ||
- di.diffFileInfo[1].size > pCtxt->m_nQuickCompareLimit))
+ di.diffFileInfo[1].size > pCtxt->m_nQuickCompareLimit ||
+ (nDirs > 2 && di.diffFileInfo[2].size > pCtxt->m_nQuickCompareLimit)))
{
nCompMethod = CMP_QUICK_CONTENT;
}
code |= DIFFCODE::DIFF;
else
code |= DIFFCODE::SAME;
- if (code10 & DIFFCODE::BIN || code12 & DIFFCODE::BIN)
- code |= DIFFCODE::BIN;
- else
+ if ((code10 & DIFFCODE::TEXTFLAGS) == DIFFCODE::TEXT &&
+ (code12 & DIFFCODE::TEXTFLAGS) == DIFFCODE::TEXT)
code |= DIFFCODE::TEXT;
-
+ else
+ code |= DIFFCODE::BIN;
+ if ((code10 & DIFFCODE::TEXTFLAGS) == (DIFFCODE::BIN | DIFFCODE::BINSIDE1))
+ code |= DIFFCODE::BINSIDE2;
+ if ((code10 & DIFFCODE::TEXTFLAGS) == (DIFFCODE::BIN | DIFFCODE::BINSIDE2))
+ code |= DIFFCODE::BINSIDE1;
+ if ((code12 & DIFFCODE::TEXTFLAGS) == (DIFFCODE::BIN | DIFFCODE::BINSIDE2))
+ code |= DIFFCODE::BINSIDE3;
if ((code & DIFFCODE::COMPAREFLAGS) == DIFFCODE::DIFF)
{
if ((code12 & DIFFCODE::COMPAREFLAGS) == DIFFCODE::SAME)