Utils: Add FilePath::isSameFile()

FilePath::isSameFile() checks if two files are the same file.
It first checks if its on the same device. If it is, it will
try to read the fileId of the files and compare them.

Change-Id: I83668955cacd4e5ed03d43a3fee2be29e9d0a6f0
Reviewed-by: hjk <hjk@qt.io>
This commit is contained in:
Marcus Tillmanns
2022-10-13 11:11:29 +02:00
parent 0f24475f48
commit a22d62e57d
8 changed files with 165 additions and 80 deletions

View File

@@ -175,13 +175,7 @@ bool Environment::isSameExecutable(const QString &exe1, const QString &exe2) con
for (const QString &i2 : exe2List) {
const FilePath f1 = FilePath::fromString(i1);
const FilePath f2 = FilePath::fromString(i2);
if (f1 == f2)
return true;
if (f1.needsDevice() != f2.needsDevice() || f1.scheme() != f2.scheme())
return false;
if (f1.resolveSymlinks() == f2.resolveSymlinks())
return true;
if (FileUtils::fileId(f1) == FileUtils::fileId(f2))
if (f1.isSameFile(f2))
return true;
}
}