diff --git a/src/plugins/qt4projectmanager/qt-maemo/maemosshconnection.cpp b/src/plugins/qt4projectmanager/qt-maemo/maemosshconnection.cpp index 18da1518c1a0aa79b30dfc756485835da809eb55..813f09333f36dee461fdaa96d4096c703ab45f2c 100644 --- a/src/plugins/qt4projectmanager/qt-maemo/maemosshconnection.cpp +++ b/src/plugins/qt4projectmanager/qt-maemo/maemosshconnection.cpp @@ -55,6 +55,8 @@ namespace Qt4ProjectManager { namespace Internal { namespace { + ne7ssh ssh; + char *alloc(size_t n) { return new char[n]; @@ -65,7 +67,7 @@ namespace { MaemoSshConnection::MaemoSshConnection(const MaemoDeviceConfig &devConf, bool shell) - : ssh(new ne7ssh), m_channel(-1), m_stopRequested(false) + : m_channel(-1), m_stopRequested(false) { const QString *authString; int (ne7ssh::*connFunc)(const char *, int, const char *, const char *, bool, int); @@ -76,8 +78,7 @@ MaemoSshConnection::MaemoSshConnection(const MaemoDeviceConfig &devConf, authString = &devConf.keyFile; connFunc = &ne7ssh::connectWithKey; } - - m_channel = (ssh.data()->*connFunc)(devConf.host.toLatin1(), devConf.sshPort, + m_channel = (ssh.*connFunc)(devConf.host.toLatin1(), devConf.sshPort, devConf.uname.toAscii(), authString->toLatin1(), shell, devConf.timeout); if (m_channel == -1) throw MaemoSshException(tr("Could not connect to host")); @@ -86,12 +87,12 @@ MaemoSshConnection::MaemoSshConnection(const MaemoDeviceConfig &devConf, MaemoSshConnection::~MaemoSshConnection() { qDebug("%s", Q_FUNC_INFO); - ssh->close(m_channel); + ssh.close(m_channel); } const char *MaemoSshConnection::lastError() { - return ssh->errors()->pop(channel()); + return ssh.errors()->pop(channel()); } void MaemoSshConnection::stop() @@ -103,31 +104,35 @@ MaemoInteractiveSshConnection::MaemoInteractiveSshConnection(const MaemoDeviceCo : MaemoSshConnection(devConf, true), m_prompt(0) { m_prompt = devConf.uname == QLatin1String("root") ? "# " : "$ "; - if (!ssh->waitFor(channel(), m_prompt, devConf.timeout)) - throw MaemoSshException(tr("Could not start remote shell: %1").arg(lastError())); + if (!ssh.waitFor(channel(), m_prompt, devConf.timeout)) { + const QString error + = tr("Could not start remote shell: %1").arg(lastError()); + throw MaemoSshException(error); + } } MaemoInteractiveSshConnection::~MaemoInteractiveSshConnection() { - ssh->send("exit\n", channel()); - ssh->waitFor(channel(), m_prompt, 1); + ssh.send("exit\n", channel()); + ssh.waitFor(channel(), m_prompt, 1); } void MaemoInteractiveSshConnection::runCommand(const QString &command) { - if (!ssh->send((command + QLatin1String("\n")).toLatin1().data(), - channel())) { - throw MaemoSshException(tr("Error running command: %1").arg(lastError())); + if (!ssh.send((command + QLatin1String("\n")).toLatin1().data(), + channel())) { + throw MaemoSshException(tr("Error running command: %1") + .arg(lastError())); } bool done; do { - done = ssh->waitFor(channel(), m_prompt, 1); + done = ssh.waitFor(channel(), m_prompt, 1); const char * const error = lastError(); if (error) throw MaemoSshException(tr("SSH error: %1").arg(error)); QScopedPointer<char, QScopedPointerArrayDeleter<char> > - output(ssh->readAndReset(channel(), alloc)); + output(ssh.readAndReset(channel(), alloc)); if (output.data()) { emit remoteOutput(QString::fromUtf8(output.data())); if (!done) @@ -145,10 +150,9 @@ MaemoSftpConnection::MaemoSftpConnection(const MaemoDeviceConfig &devConf) : MaemoSshConnection(devConf, false), sftp(new Ne7SftpSubsystem) { - if (!ssh->initSftp(*sftp, channel()) || !sftp->setTimeout(devConf.timeout)) { + if (!ssh.initSftp(*sftp, channel()) || !sftp->setTimeout(devConf.timeout)) throw MaemoSshException(tr("Error setting up SFTP subsystem: %1") .arg(lastError())); - } } MaemoSftpConnection::~MaemoSftpConnection() diff --git a/src/plugins/qt4projectmanager/qt-maemo/maemosshconnection.h b/src/plugins/qt4projectmanager/qt-maemo/maemosshconnection.h index c6119ec0e55c942eb57cd9cd121775c9404b8295..ff13095b7bc805b9ea0a0d488b23cd043897a35b 100644 --- a/src/plugins/qt4projectmanager/qt-maemo/maemosshconnection.h +++ b/src/plugins/qt4projectmanager/qt-maemo/maemosshconnection.h @@ -47,7 +47,6 @@ #include <QtCore/QSharedPointer> #include <QtCore/QString> -class ne7ssh; class Ne7SftpSubsystem; namespace Qt4ProjectManager { @@ -80,8 +79,6 @@ protected: bool stopRequested() const {return m_stopRequested; } const char *lastError(); - QScopedPointer<ne7ssh> ssh; - private: int m_channel; volatile bool m_stopRequested;