diff --git a/src/plugins/qt4projectmanager/qt-maemo/maemoremotemounter.cpp b/src/plugins/qt4projectmanager/qt-maemo/maemoremotemounter.cpp index 89c808003c4feedb4649a434a72aa73ed342ec1f..8085ff2b82d65118ab7181d78238545513b8ba6d 100644 --- a/src/plugins/qt4projectmanager/qt-maemo/maemoremotemounter.cpp +++ b/src/plugins/qt4projectmanager/qt-maemo/maemoremotemounter.cpp @@ -27,8 +27,9 @@ ** **************************************************************************/ -#include "maemoglobal.h" #include "maemoremotemounter.h" + +#include "maemoglobal.h" #include "maemotoolchain.h" #include <coreplugin/ssh/sftpchannel.h> @@ -89,11 +90,12 @@ void MaemoRemoteMounter::unmount() m_mountSpecs.at(i).remoteMountPoint); } + m_umountStderr.clear(); m_unmountProcess = m_connection->createRemoteProcess(remoteCall.toUtf8()); connect(m_unmountProcess.data(), SIGNAL(closed(int)), this, SLOT(handleUnmountProcessFinished(int))); connect(m_unmountProcess.data(), SIGNAL(errorOutputAvailable(QByteArray)), - this, SIGNAL(remoteErrorOutput(QByteArray))); + this, SLOT(handleUmountStderr(QByteArray))); m_unmountProcess->start(); } @@ -125,10 +127,15 @@ void MaemoRemoteMounter::handleUnmountProcessFinished(int exitStatus) } m_mountSpecs.clear(); - if (errorMsg.isEmpty()) + if (errorMsg.isEmpty()) { emit unmounted(); - else + } else { + if (!m_umountStderr.isEmpty()) { + errorMsg += tr("\nstderr was: '%1'") + .arg(QString::fromUtf8(m_umountStderr)); + } emit error(errorMsg); + } } void MaemoRemoteMounter::stop() @@ -224,13 +231,14 @@ void MaemoRemoteMounter::startUtfsClients() remoteCall += andOp + mkdir + andOp + chmod + andOp + utfsClient; } + m_utfsClientStderr.clear(); m_mountProcess = m_connection->createRemoteProcess(remoteCall.toUtf8()); connect(m_mountProcess.data(), SIGNAL(started()), this, SLOT(handleUtfsClientsStarted())); connect(m_mountProcess.data(), SIGNAL(closed(int)), this, SLOT(handleUtfsClientsFinished(int))); connect(m_mountProcess.data(), SIGNAL(errorOutputAvailable(QByteArray)), - this, SIGNAL(remoteErrorOutput(QByteArray))); + this, SLOT(handleUtfsClientStderr(QByteArray))); m_mountProcess->start(); } @@ -245,22 +253,30 @@ void MaemoRemoteMounter::handleUtfsClientsFinished(int exitStatus) if (m_stop) return; + QString errMsg; switch (exitStatus) { case SshRemoteProcess::FailedToStart: - emit error(tr("Could not execute mount request.")); + errMsg = tr("Could not execute mount request."); break; case SshRemoteProcess::KilledBySignal: - emit error(tr("Failure running UTFS client: %1") - .arg(m_mountProcess->errorString())); + errMsg = tr("Failure running UTFS client: %1") + .arg(m_mountProcess->errorString()); break; case SshRemoteProcess::ExitedNormally: if (m_mountProcess->exitCode() != 0) - emit error(tr("Could not execute mount request.")); + errMsg = tr("Could not execute mount request."); break; default: Q_ASSERT_X(false, Q_FUNC_INFO, "Impossible SshRemoteProcess exit status."); } + + if (!errMsg.isEmpty()) { + if (!m_utfsClientStderr.isEmpty()) + errMsg += tr("\nstderr was: '%1'") + .arg(QString::fromUtf8(m_utfsClientStderr)); + emit error(errMsg); + } } void MaemoRemoteMounter::startUtfsServers() @@ -268,8 +284,6 @@ void MaemoRemoteMounter::startUtfsServers() for (int i = 0; i < m_mountSpecs.count(); ++i) { const MaemoMountSpecification &mountSpec = m_mountSpecs.at(i); const ProcPtr utfsServerProc(new QProcess); - connect(utfsServerProc.data(), SIGNAL(readyReadStandardError()), this, - SLOT(handleUtfsServerErrorOutput())); const QString port = QString::number(mountSpec.remotePort); const QString localSecretOpt = QLatin1String("-l"); const QString remoteSecretOpt = QLatin1String("-r"); @@ -279,8 +293,15 @@ void MaemoRemoteMounter::startUtfsServers() << mountSpec.localDir; utfsServerProc->start(utfsServer(), utfsServerArgs); if (!utfsServerProc->waitForStarted()) { - emit error(tr("Could not start UTFS server: %1") - .arg(utfsServerProc->errorString())); + const QByteArray &errorOutput + = utfsServerProc->readAllStandardError(); + QString errorMsg = tr("Could not start UTFS server: %1") + .arg(utfsServerProc->errorString()); + if (!errorOutput.isEmpty()) { + errorMsg += tr("\nstderr output was: '%1'") + .arg(QString::fromLocal8Bit(errorOutput)); + } + emit error(errorMsg); return; } m_utfsServers << utfsServerProc; @@ -289,9 +310,14 @@ void MaemoRemoteMounter::startUtfsServers() emit mounted(); } -void MaemoRemoteMounter::handleUtfsServerErrorOutput() +void MaemoRemoteMounter::handleUtfsClientStderr(const QByteArray &output) +{ + m_utfsClientStderr += output; +} + +void MaemoRemoteMounter::handleUmountStderr(const QByteArray &output) { - emit remoteErrorOutput(qobject_cast<QProcess *>(sender())->readAllStandardError()); + m_umountStderr += output; } QString MaemoRemoteMounter::utfsClientOnDevice() const diff --git a/src/plugins/qt4projectmanager/qt-maemo/maemoremotemounter.h b/src/plugins/qt4projectmanager/qt-maemo/maemoremotemounter.h index 9324d89eeb4dd540ceb84903a9ef9aa6e3aca31b..080785e4c34e40bc55a6a8044efe89e72a0dd7a1 100644 --- a/src/plugins/qt4projectmanager/qt-maemo/maemoremotemounter.h +++ b/src/plugins/qt4projectmanager/qt-maemo/maemoremotemounter.h @@ -70,7 +70,6 @@ signals: void mounted(); void unmounted(); void error(const QString &reason); - void remoteErrorOutput(const QByteArray &output); private slots: void handleUploaderInitialized(); @@ -78,8 +77,9 @@ private slots: void handleUploadFinished(Core::SftpJobId jobId, const QString &error); void handleUtfsClientsStarted(); void handleUtfsClientsFinished(int exitStatus); - void handleUtfsServerErrorOutput(); void handleUnmountProcessFinished(int exitStatus); + void handleUtfsClientStderr(const QByteArray &output); + void handleUmountStderr(const QByteArray &output); private: void deployUtfsClient(); @@ -101,6 +101,8 @@ private: typedef QSharedPointer<QProcess> ProcPtr; QList<ProcPtr> m_utfsServers; bool m_stop; + QByteArray m_utfsClientStderr; + QByteArray m_umountStderr; }; } // namespace Internal diff --git a/src/plugins/qt4projectmanager/qt-maemo/maemosshrunner.cpp b/src/plugins/qt4projectmanager/qt-maemo/maemosshrunner.cpp index bed4bf2dab593f1bb837786d1097f704612bd4e3..cdebaea777d71b2147b4d98f5d2cdce6c3281701 100644 --- a/src/plugins/qt4projectmanager/qt-maemo/maemosshrunner.cpp +++ b/src/plugins/qt4projectmanager/qt-maemo/maemosshrunner.cpp @@ -66,8 +66,6 @@ MaemoSshRunner::MaemoSshRunner(QObject *parent, connect(m_mounter, SIGNAL(unmounted()), this, SLOT(handleUnmounted())); connect(m_mounter, SIGNAL(error(QString)), this, SLOT(handleMounterError(QString))); - connect(m_mounter, SIGNAL(remoteErrorOutput(QByteArray)), this, - SIGNAL(remoteErrorOutput(QByteArray))); } MaemoSshRunner::~MaemoSshRunner() {}