diff options
author | Christian Kandeler <christian.kandeler@digia.com> | 2014-04-14 15:40:30 +0200 |
---|---|---|
committer | Christian Kandeler <christian.kandeler@digia.com> | 2014-04-15 14:18:27 +0200 |
commit | fdc392858716c390f1541430dad3bb6aefdf792e (patch) | |
tree | daece0e70b9525ab45718ac9fd2019a215aecc71 /src/lib/corelib/tools | |
parent | a27e8552174475e95cb5ec42612c41e25bcd1364 (diff) |
Work around braindead QFileInfo::exists() behavior for symbolic links.
Change-Id: If8002fc7be0cc6af954ebb28ccbcb7bee1031e1c
Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
Diffstat (limited to 'src/lib/corelib/tools')
-rw-r--r-- | src/lib/corelib/tools/fileinfo.cpp | 7 | ||||
-rw-r--r-- | src/lib/corelib/tools/fileinfo.h | 3 |
2 files changed, 9 insertions, 1 deletions
diff --git a/src/lib/corelib/tools/fileinfo.cpp b/src/lib/corelib/tools/fileinfo.cpp index ccde88f13..2db0a142b 100644 --- a/src/lib/corelib/tools/fileinfo.cpp +++ b/src/lib/corelib/tools/fileinfo.cpp @@ -225,6 +225,11 @@ bool FileInfo::isFileCaseCorrect(const QString &filePath) #endif } +bool FileInfo::fileExists(const QFileInfo &fi) +{ + return fi.isSymLink() || fi.exists(); +} + #if defined(Q_OS_WIN) #define z(x) reinterpret_cast<WIN32_FILE_ATTRIBUTE_DATA*>(const_cast<FileInfo::InternalStatType*>(&x)) @@ -315,7 +320,7 @@ bool FileInfo::isDir() const // adapted from qtc/plugins/vcsbase/cleandialog.cpp bool removeFileRecursion(const QFileInfo &f, QString *errorMessage) { - if (!f.exists()) + if (!FileInfo::fileExists(f)) return true; if (f.isDir()) { const QDir dir(f.absoluteFilePath()); diff --git a/src/lib/corelib/tools/fileinfo.h b/src/lib/corelib/tools/fileinfo.h index b5731cedd..d20c6cf8c 100644 --- a/src/lib/corelib/tools/fileinfo.h +++ b/src/lib/corelib/tools/fileinfo.h @@ -68,6 +68,9 @@ public: static bool globMatches(const QRegExp &pattern, const QString &subject); static bool isFileCaseCorrect(const QString &filePath); + // Symlink-correct check. + static bool fileExists(const QFileInfo &fi); + private: #if defined(Q_OS_WIN) struct InternalStatType |