From cfc73da31215d139b6b3074a45945a9b77422da9 Mon Sep 17 00:00:00 2001 From: Vladimir Golovnev Date: Sun, 30 Apr 2023 10:10:03 +0300 Subject: [PATCH] Improve logging of running external program PR #18901. --- src/app/application.cpp | 29 +++++++++++++++++++++-------- 1 file changed, 21 insertions(+), 8 deletions(-) diff --git a/src/app/application.cpp b/src/app/application.cpp index 7908a9540..5a74d27a4 100644 --- a/src/app/application.cpp +++ b/src/app/application.cpp @@ -453,6 +453,7 @@ void Application::runExternalProgram(const QString &programTemplate, const BitTo }; const QString logMsg = tr("Running external program. Torrent: \"%1\". Command: `%2`"); + const QString logMsgError = tr("Failed to run external program. Torrent: \"%1\". Command: `%2`"); // The processing sequenece is different for Windows and other OS, this is intentional #if defined(Q_OS_WIN) @@ -472,8 +473,6 @@ void Application::runExternalProgram(const QString &programTemplate, const BitTo for (int i = 1; i < argCount; ++i) argList += QString::fromWCharArray(args[i]); - LogMsg(logMsg.arg(torrent->name(), program)); - QProcess proc; proc.setProgram(QString::fromWCharArray(args[0])); proc.setArguments(argList); @@ -498,7 +497,11 @@ void Application::runExternalProgram(const QString &programTemplate, const BitTo args->startupInfo->hStdOutput = nullptr; args->startupInfo->hStdError = nullptr; }); - proc.startDetached(); + + if (proc.startDetached()) + LogMsg(logMsg.arg(torrent->name(), program)); + else + LogMsg(logMsgError.arg(torrent->name(), program)); #else // Q_OS_WIN QStringList args = Utils::String::splitCommand(programTemplate); @@ -514,11 +517,21 @@ void Application::runExternalProgram(const QString &programTemplate, const BitTo arg = replaceVariables(arg); } - // show intended command in log - LogMsg(logMsg.arg(torrent->name(), replaceVariables(programTemplate))); - const QString command = args.takeFirst(); - QProcess::startDetached(command, args); + QProcess proc; + proc.setProgram(command); + proc.setArguments(args); + + if (proc.startDetached()) + { + // show intended command in log + LogMsg(logMsg.arg(torrent->name(), replaceVariables(programTemplate))); + } + else + { + // show intended command in log + LogMsg(logMsgError.arg(torrent->name(), replaceVariables(programTemplate))); + } #endif } @@ -732,7 +745,7 @@ try actionExit->setIcon(UIThemeManager::instance()->getIcon(u"application-exit"_qs)); actionExit->setMenuRole(QAction::QuitRole); actionExit->setShortcut(Qt::CTRL | Qt::Key_Q); - connect(actionExit, &QAction::triggered, this, [this]() + connect(actionExit, &QAction::triggered, this, [] { QApplication::exit(); });