diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/libs/ssh/sshremoteprocess.cpp | 28 | ||||
-rw-r--r-- | src/libs/ssh/sshremoteprocess.h | 4 | ||||
-rw-r--r-- | src/plugins/projectexplorer/devicesupport/sshdeviceprocess.cpp | 3 |
3 files changed, 19 insertions, 16 deletions
diff --git a/src/libs/ssh/sshremoteprocess.cpp b/src/libs/ssh/sshremoteprocess.cpp index 635f23e150..3d1ef6a81e 100644 --- a/src/libs/ssh/sshremoteprocess.cpp +++ b/src/libs/ssh/sshremoteprocess.cpp @@ -83,15 +83,14 @@ SshRemoteProcess::SshRemoteProcess(const QString &command, const QStringList &co void SshRemoteProcess::doStart() { QTC_ASSERT(!isRunning(), return); - const QStringList args = fullLocalCommandLine(); + const Utils::CommandLine cmd = fullLocalCommandLine(); if (!d->displayName.isEmpty()) { QProcessEnvironment env = processEnvironment(); env.insert("DISPLAY", d->displayName); setProcessEnvironment(env); } - qCDebug(sshLog) << "starting remote process:" << QDir::toNativeSeparators(args.first()) - << args; - QProcess::start(args.first(), args.mid(1)); + qCDebug(sshLog) << "starting remote process:" << cmd.toUserOutput(); + QProcess::start(cmd.executable().toString(), cmd.splitArguments()); } SshRemoteProcess::~SshRemoteProcess() @@ -119,17 +118,22 @@ bool SshRemoteProcess::isRunning() const return state() == QProcess::Running; } -QStringList SshRemoteProcess::fullLocalCommandLine() const +Utils::CommandLine SshRemoteProcess::fullLocalCommandLine() const { - QStringList args = QStringList("-q") << d->connectionArgs; - if (d->useTerminal) - args.prepend("-tt"); + Utils::CommandLine cmd{SshSettings::sshFilePath()}; + if (!d->displayName.isEmpty()) - args.prepend("-X"); + cmd.addArg("-X"); + if (d->useTerminal) + cmd.addArg("-tt"); + + cmd.addArg("-q"); + cmd.addArgs(d->connectionArgs); + if (!d->remoteCommand.isEmpty()) - args << d->remoteCommand; - args.prepend(SshSettings::sshFilePath().toString()); - return args; + cmd.addArg(d->remoteCommand); + + return cmd; } } // namespace QSsh diff --git a/src/libs/ssh/sshremoteprocess.h b/src/libs/ssh/sshremoteprocess.h index 02ab3546fd..d1d62d76fa 100644 --- a/src/libs/ssh/sshremoteprocess.h +++ b/src/libs/ssh/sshremoteprocess.h @@ -28,7 +28,7 @@ #include "ssh_global.h" #include "sshprocess.h" -#include <QStringList> +#include <utils/fileutils.h> namespace QSsh { class SshConnection; @@ -46,7 +46,7 @@ public: void start(); bool isRunning() const; - QStringList fullLocalCommandLine() const; + Utils::CommandLine fullLocalCommandLine() const; signals: void done(const QString &error); diff --git a/src/plugins/projectexplorer/devicesupport/sshdeviceprocess.cpp b/src/plugins/projectexplorer/devicesupport/sshdeviceprocess.cpp index 19ca79d0c2..56fd1b9503 100644 --- a/src/plugins/projectexplorer/devicesupport/sshdeviceprocess.cpp +++ b/src/plugins/projectexplorer/devicesupport/sshdeviceprocess.cpp @@ -194,7 +194,6 @@ void SshDeviceProcess::handleConnected() d->process->requestX11Forwarding(display); if (runInTerminal()) { d->process->requestTerminal(); - const QStringList cmdLine = d->process->fullLocalCommandLine(); connect(&d->consoleProcess, QOverload<QProcess::ProcessError>::of(&ConsoleProcess::error), this, &DeviceProcess::error); connect(&d->consoleProcess, &ConsoleProcess::processStarted, @@ -202,7 +201,7 @@ void SshDeviceProcess::handleConnected() connect(&d->consoleProcess, &ConsoleProcess::stubStopped, this, [this] { handleProcessFinished(d->consoleProcess.errorString()); }); d->consoleProcess.setAbortOnMetaChars(false); - d->consoleProcess.setCommand({cmdLine.first(), cmdLine.mid(1)}); + d->consoleProcess.setCommand(d->process->fullLocalCommandLine()); d->consoleProcess.start(); } else { connect(d->process.get(), &QSsh::SshRemoteProcess::started, |