diff options
-rw-r--r-- | src/libs/utils/fileutils.cpp | 10 | ||||
-rw-r--r-- | src/libs/utils/fileutils.h | 3 | ||||
-rw-r--r-- | src/plugins/cmakeprojectmanager/cmakeprojectimporter.cpp | 2 | ||||
-rw-r--r-- | src/plugins/cmakeprojectmanager/tealeafreader.cpp | 4 | ||||
-rw-r--r-- | src/plugins/compilationdatabaseprojectmanager/compilationdatabaseproject.cpp | 6 |
5 files changed, 12 insertions, 13 deletions
diff --git a/src/libs/utils/fileutils.cpp b/src/libs/utils/fileutils.cpp index 9c7481b8fa..ec407832fb 100644 --- a/src/libs/utils/fileutils.cpp +++ b/src/libs/utils/fileutils.cpp @@ -234,17 +234,17 @@ FileName FileUtils::resolveSymlinks(const FileName &path) } /*! - Recursively resolves possibly present symlinks in \a filePath. + Recursively resolves possibly present symlinks in this file name. Unlike QFileInfo::canonicalFilePath(), this function will not return an empty string if path doesn't exist. Returns the canonical path. */ -FileName FileUtils::canonicalPath(const FileName &path) +FileName FileName::canonicalPath() const { - const QString result = path.toFileInfo().canonicalFilePath(); + const QString result = toFileInfo().canonicalFilePath(); if (result.isEmpty()) - return path; + return *this; return FileName::fromString(result); } @@ -356,7 +356,7 @@ FileName FileUtils::commonPath(const FileName &oldCommonPath, const FileName &fi FileName newCommonPath = oldCommonPath; while (!newCommonPath.isEmpty() && !fileName.isChildOf(newCommonPath)) newCommonPath = newCommonPath.parentDir(); - return canonicalPath(newCommonPath); + return newCommonPath.canonicalPath(); } // Copied from qfilesystemengine_win.cpp diff --git a/src/libs/utils/fileutils.h b/src/libs/utils/fileutils.h index 0991d4ae68..e765270b49 100644 --- a/src/libs/utils/fileutils.h +++ b/src/libs/utils/fileutils.h @@ -102,6 +102,8 @@ public: FileName pathAppended(const QString &str) const; FileName stringAppended(const QString &str) const; + FileName canonicalPath() const; + void clear() { m_data.clear(); } bool isEmpty() const { return m_data.isEmpty(); } @@ -129,7 +131,6 @@ public: const std::function<bool (QFileInfo, QFileInfo, QString *)> ©Helper = nullptr); static bool isFileNewerThan(const FileName &filePath, const QDateTime &timeStamp); static FileName resolveSymlinks(const FileName &path); - static FileName canonicalPath(const FileName &path); static QString shortNativePath(const FileName &path); static QString fileSystemFriendlyName(const QString &name); static int indexOfQmakeUnfriendly(const QString &name, int startpos = 0); diff --git a/src/plugins/cmakeprojectmanager/cmakeprojectimporter.cpp b/src/plugins/cmakeprojectmanager/cmakeprojectimporter.cpp index f42d308518..7593057b66 100644 --- a/src/plugins/cmakeprojectmanager/cmakeprojectimporter.cpp +++ b/src/plugins/cmakeprojectmanager/cmakeprojectimporter.cpp @@ -248,7 +248,7 @@ QList<void *> CMakeProjectImporter::examineDirectory(const Utils::FileName &impo } const auto homeDir = Utils::FileName::fromUserInput(QString::fromUtf8(CMakeConfigItem::valueOf("CMAKE_HOME_DIRECTORY", config))); - const Utils::FileName canonicalProjectDirectory = Utils::FileUtils::canonicalPath(projectDirectory()); + const Utils::FileName canonicalProjectDirectory = projectDirectory().canonicalPath(); if (homeDir != canonicalProjectDirectory) { qCDebug(cmInputLog()) << "Wrong source directory:" << homeDir.toUserOutput() << "expected:" << canonicalProjectDirectory.toUserOutput(); diff --git a/src/plugins/cmakeprojectmanager/tealeafreader.cpp b/src/plugins/cmakeprojectmanager/tealeafreader.cpp index 3e3a51d3e2..73d7ea00f3 100644 --- a/src/plugins/cmakeprojectmanager/tealeafreader.cpp +++ b/src/plugins/cmakeprojectmanager/tealeafreader.cpp @@ -250,8 +250,8 @@ CMakeConfig TeaLeafReader::takeParsedConfiguration() const FileName sourceOfBuildDir = FileName::fromUtf8(CMakeConfigItem::valueOf("CMAKE_HOME_DIRECTORY", result)); - const FileName canonicalSourceOfBuildDir = FileUtils::canonicalPath(sourceOfBuildDir); - const FileName canonicalSourceDirectory = FileUtils::canonicalPath(m_parameters.sourceDirectory); + const FileName canonicalSourceOfBuildDir = sourceOfBuildDir.canonicalPath(); + const FileName canonicalSourceDirectory = m_parameters.sourceDirectory.canonicalPath(); if (canonicalSourceOfBuildDir != canonicalSourceDirectory) { // Uses case-insensitive compare where appropriate emit errorOccured(tr("The build directory is not for %1 but for %2") .arg(canonicalSourceOfBuildDir.toUserOutput(), diff --git a/src/plugins/compilationdatabaseprojectmanager/compilationdatabaseproject.cpp b/src/plugins/compilationdatabaseprojectmanager/compilationdatabaseproject.cpp index d10ec35d79..7f3b77a942 100644 --- a/src/plugins/compilationdatabaseprojectmanager/compilationdatabaseproject.cpp +++ b/src/plugins/compilationdatabaseprojectmanager/compilationdatabaseproject.cpp @@ -181,10 +181,8 @@ Utils::FileName jsonObjectFilename(const QJsonObject &object) const QString workingDir = QDir::fromNativeSeparators(object["directory"].toString()); Utils::FileName fileName = Utils::FileName::fromString( QDir::fromNativeSeparators(object["file"].toString())); - if (fileName.toFileInfo().isRelative()) { - fileName = Utils::FileUtils::canonicalPath( - Utils::FileName::fromString(workingDir + "/" + fileName.toString())); - } + if (fileName.toFileInfo().isRelative()) + fileName = Utils::FileName::fromString(workingDir + "/" + fileName.toString()).canonicalPath(); return fileName; } |