void show_statistics() { if (!global::options().showStatistics) return; global::Statistics& s = global::statistics(); LogConsoleForce(-1, L"Processing statistics:\n"); LogConsoleForce(-1, L" Files found: %I64d\n", s.fileFound); LogConsoleForce(-1, L" Folders found: %I64d\n", s.foldersFound); LogConsoleForce(-1, L" Junctions found: %I64d\n", s.foldersLinksFound); LogConsoleForce(-1, L"\n"); LogConsoleForce(-1, L" Files unique by size and skipped: %I64d\n", s.fileFoundUnique); LogConsoleForce(-1, L" Files were ignored: %I64d\n", s.fileIgnored); LogConsoleForce(-1, L" Folders were ignored: %I64d\n", s.foldersIgnored); LogConsoleForce(-1, L" Comparisons of files already linked: %I64d\n", s.fileAlreadyLinked); LogConsoleForce(-1, L" Comparisons of files on different volumes: %I64d\n", s.fileOnDifferentVolumes); LogConsoleForce(-1, L"\n"); // LogConsoleForce(-1, L" Number of file hashes calculated: %I64d\n", s.hashesCalculated); LogConsoleForce(-1, L" File comparisons: %I64d\n", s.fileCompares); // LogConsoleForce(-1, L" Files differ in first 65535 bytes: %I64d\n", s.fileContentDifferFirstBlock); // LogConsoleForce(-1, L" Files compared using a hash: %I64d\n", s.hashComparesDiffer); LogConsoleForce(-1, L" Files content is same: %I64d\n", s.fileContentSame); LogConsoleForce(-1, L" Links successful: %I64d\n", s.hardLinksSuccess); LogConsoleForce(-1, L" Links failed: %I64d\n", s.hardLinksFailed); LogConsoleForce(-1, L" Increase of free space: %I64d\n", s.FreeSpaceIncrease); // LogConsoleForce(-1, L" Summary size of files: %I64d\n", s.FoundFilesSize); LogConsoleDebug(-1, L"\n"); LogConsoleDebug(-1, L" Path objects created: %I64d\n", s.folderObjectsCreated); LogConsoleDebug(-1, L" Path objects destroyed: %I64d\n", s.folderObjectsDestroyed); LogConsoleDebug(-1, L" File objects created: %I64d\n", s.fileObjectsCreated); LogConsoleDebug(-1, L" File objects destroyed: %I64d\n", s.fileObjectsDestroyed); }
bool fsys::Sequence::Options::apply_filters(const Stat_i& stat) const { bool skip = false; LogConsoleDebug(-1, L" %s: 0x%08IX, %I64u, '%s'\n", L"found", stat.attr(), stat.size(), stat.name()); if (cstr::compare(stat.name(), L".") == 0 || cstr::compare(stat.name(), L"..") == 0) { // LogConsoleDebug(FOREGROUND_INTENSITY | FOREGROUND_RED | FOREGROUND_GREEN, L" ignored [invalid]: '%s'\n", stat.name()); skip = true; } else { for (const Sequence::FiltersBunch& filter : filters) { if (filter(stat, statistics)) { skip = true; break; } } } LogConsoleDebug(-1, L" %s: 0x%08IX, %I64u, '%s'\n", skip ? L"skipped" : L"accepted", stat.attr(), stat.size(), stat.name()); return skip; }