summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/libs/ssh/sshremoteprocess.cpp28
-rw-r--r--src/libs/ssh/sshremoteprocess.h4
-rw-r--r--src/plugins/projectexplorer/devicesupport/sshdeviceprocess.cpp3
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,