diff options
Diffstat (limited to 'src/libs/utils')
-rw-r--r-- | src/libs/utils/fileutils.cpp | 20 | ||||
-rw-r--r-- | src/libs/utils/fileutils.h | 2 |
2 files changed, 15 insertions, 7 deletions
diff --git a/src/libs/utils/fileutils.cpp b/src/libs/utils/fileutils.cpp index 296a4f398e3..1f5a7b7cbc1 100644 --- a/src/libs/utils/fileutils.cpp +++ b/src/libs/utils/fileutils.cpp @@ -391,13 +391,6 @@ FilePath FilePath::resolvePath(const QString &fileName) const return FilePath::fromString(QDir::cleanPath(toString() + QLatin1Char('/') + fileName)); } -FilePath FilePath::resolveSymlinkTarget() const -{ - // FIXME: implement - QTC_CHECK(false); - return *this; -} - FilePath FilePath::cleanPath() const { FilePath result = *this; @@ -1009,6 +1002,19 @@ bool FilePath::needsDevice() const return !m_scheme.isEmpty(); } +/// \returns an empty FilePath if this is not a symbolic linl +FilePath FilePath::symLinkTarget() const +{ + if (needsDevice()) { + QTC_ASSERT(s_deviceHooks.symLinkTarget, return {}); + return s_deviceHooks.symLinkTarget(*this); + } + const QFileInfo info(m_data); + if (!info.isSymLink()) + return {}; + return FilePath::fromString(info.symLinkTarget()); +} + /// Find the parent directory of a given directory. diff --git a/src/libs/utils/fileutils.h b/src/libs/utils/fileutils.h index 585f2dcf2e7..6a67aaedd4a 100644 --- a/src/libs/utils/fileutils.h +++ b/src/libs/utils/fileutils.h @@ -83,6 +83,7 @@ public: std::function<bool(const FilePath &, const FilePath &)> copyFile; std::function<bool(const FilePath &, const FilePath &)> renameFile; std::function<FilePath(const FilePath &)> searchInPath; + std::function<FilePath(const FilePath &)> symLinkTarget; std::function<QList<FilePath>(const FilePath &, const QStringList &, QDir::Filters, QDir::SortFlags)> dirEntries; std::function<QByteArray(const FilePath &, int)> fileContents; @@ -188,6 +189,7 @@ public: FilePath cleanPath() const; FilePath canonicalPath() const; + FilePath symLinkTarget() const; FilePath operator/(const QString &str) const; |