aboutsummaryrefslogtreecommitdiffstats
path: root/src/libs/utils
diff options
context:
space:
mode:
Diffstat (limited to 'src/libs/utils')
-rw-r--r--src/libs/utils/fileutils.cpp20
-rw-r--r--src/libs/utils/fileutils.h2
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;