From 2edaf459bd1682fbe590e330d05df54cc2f3b4c8 Mon Sep 17 00:00:00 2001 From: Marcus Tillmanns Date: Tue, 13 Jun 2023 08:59:07 +0200 Subject: [PATCH] Utils: Support relative path for PtyProcess Change-Id: I8af96e51a4b75c192f5fab339449f4d07b1a040a Reviewed-by: Cristian Adam --- src/libs/utils/process.cpp | 35 ++++++++++++++++++++++++++--------- 1 file changed, 26 insertions(+), 9 deletions(-) diff --git a/src/libs/utils/process.cpp b/src/libs/utils/process.cpp index 60efd93c586..43d57ded891 100644 --- a/src/libs/utils/process.cpp +++ b/src/libs/utils/process.cpp @@ -345,6 +345,23 @@ public: void doDefaultStart(const QString &program, const QStringList &arguments) final { + QString executable = program; + FilePath path = FilePath::fromUserInput(executable); + if (!path.isAbsolutePath()) { + path = path.searchInPath(); + if (path.isEmpty()) { + const ProcessResultData result + = {0, + QProcess::CrashExit, + QProcess::FailedToStart, + Tr::tr("The program \"%1\" could not be found.").arg(program)}; + emit done(result); + return; + } + + executable = path.nativePath(); + } + QTC_CHECK(m_setup.m_ptyData); m_setup.m_ptyData->setResizeHandler([this](const QSize &size) { if (m_ptyProcess) @@ -365,15 +382,15 @@ public: penv = Environment::systemEnvironment().toProcessEnvironment(); const QStringList senv = penv.toStringList(); - bool startResult - = m_ptyProcess->startProcess(program, - HostOsInfo::isWindowsHost() - ? QStringList{m_setup.m_nativeArguments} << arguments - : arguments, - m_setup.m_workingDirectory.nativePath(), - senv, - m_setup.m_ptyData->size().width(), - m_setup.m_ptyData->size().height()); + bool startResult = m_ptyProcess->startProcess(executable, + HostOsInfo::isWindowsHost() + ? QStringList{m_setup.m_nativeArguments} + << arguments + : arguments, + m_setup.m_workingDirectory.nativePath(), + senv, + m_setup.m_ptyData->size().width(), + m_setup.m_ptyData->size().height()); if (!startResult) { const ProcessResultData result = {-1,