From d3487b1bde9d5814714fcaad3ef2e653aac336ef Mon Sep 17 00:00:00 2001 From: Marcus Tillmanns Date: Fri, 2 Dec 2022 13:27:28 +0100 Subject: [PATCH] Utils: Fix FilePath::searchInPath remotely Change-Id: I49bd7fd96427b55d28743eab277c72710a2ac6c0 Reviewed-by: hjk Reviewed-by: --- src/libs/utils/environment.cpp | 9 +++------ src/libs/utils/filepath.cpp | 15 ++++++++------- 2 files changed, 11 insertions(+), 13 deletions(-) diff --git a/src/libs/utils/environment.cpp b/src/libs/utils/environment.cpp index 486fb850538..15b1271d30b 100644 --- a/src/libs/utils/environment.cpp +++ b/src/libs/utils/environment.cpp @@ -140,13 +140,10 @@ static FilePath searchInDirectory(const QStringList &execs, if (directory.isEmpty() || alreadyChecked.count() == checkedCount) return FilePath(); - const QString dir = directory.toString(); - - QFileInfo fi; for (const QString &exec : execs) { - fi.setFile(dir, exec); - if (fi.isFile() && fi.isExecutable()) - return FilePath::fromString(fi.absoluteFilePath()); + const FilePath filePath = directory.pathAppended(exec); + if (filePath.isExecutableFile()) + return filePath; } return FilePath(); } diff --git a/src/libs/utils/filepath.cpp b/src/libs/utils/filepath.cpp index 800caffdd9b..2bf0321aa5f 100644 --- a/src/libs/utils/filepath.cpp +++ b/src/libs/utils/filepath.cpp @@ -1172,7 +1172,7 @@ FilePath FilePath::withNewPath(const QString &newPath) const } /*! - Searched a binary corresponding to this object in the PATH of + Search for a binary corresponding to this object in the PATH of the device implied by this object's scheme and host. Example usage: @@ -1186,25 +1186,26 @@ FilePath FilePath::searchInDirectories(const FilePaths &dirs) const { if (isAbsolutePath()) return *this; - // FIXME: Ramp down use. - QTC_ASSERT(!needsDevice(), return {}); - return Environment::systemEnvironment().searchInDirectories(path(), dirs); + return deviceEnvironment().searchInDirectories(path(), dirs); } FilePath FilePath::searchInPath(const FilePaths &additionalDirs, PathAmending amending) const { if (isAbsolutePath()) return *this; - // FIXME: Ramp down use. FilePaths directories = deviceEnvironment().path(); + if (needsDevice()) { + directories = Utils::transform(directories, [this](const FilePath &path) { + return path.onDevice(*this); + }); + } if (!additionalDirs.isEmpty()) { if (amending == AppendToPath) directories.append(additionalDirs); else directories = additionalDirs + directories; } - QTC_ASSERT(!needsDevice(), return {}); - return Environment::systemEnvironment().searchInDirectories(path(), directories); + return searchInDirectories(directories); } Environment FilePath::deviceEnvironment() const