diff --git a/resources/desktop/com.github.rssguard.appdata.xml b/resources/desktop/com.github.rssguard.appdata.xml index 80e4ffec0..cb454eccc 100644 --- a/resources/desktop/com.github.rssguard.appdata.xml +++ b/resources/desktop/com.github.rssguard.appdata.xml @@ -30,7 +30,7 @@ https://martinrotter.github.io/donate/ - + none diff --git a/resources/docs/Documentation.md b/resources/docs/Documentation.md index efdf3076f..f8fdc7233 100644 --- a/resources/docs/Documentation.md +++ b/resources/docs/Documentation.md @@ -204,6 +204,8 @@ Any errors in your script must be written to **error output**. Note that you must provide full execution line to your custom script, including interpreter binary path and name and all that must be written in special format `###....`. The `#` character is there to separate interpreter and individual arguments. I had to select some character as separator because simply using space ` ` is not that easy as it might sound, because sometimes space could be a part of an argument sometimes argument separator etc. +Used script must return `0` as process exit code if everything went well, or non-zero exit code if some error happened. + Interpreter must be provided in all cases, arguments do not have to be. For example `bash.exe#` is valid execution line, as well as `bash#-c#cat feed.atom`. Note the difference in interpreter's binary name suffix. Also be very carefully about arguments quoting. Some examples of valid and tested execution lines are: | Command | Explanation | diff --git a/src/librssguard/services/standard/gui/standardfeeddetails.cpp b/src/librssguard/services/standard/gui/standardfeeddetails.cpp index 220cfc6b0..c37640278 100755 --- a/src/librssguard/services/standard/gui/standardfeeddetails.cpp +++ b/src/librssguard/services/standard/gui/standardfeeddetails.cpp @@ -78,6 +78,7 @@ StandardFeedDetails::StandardFeedDetails(QWidget* parent) : QWidget(parent) { m_ui.m_txtSource->textEdit()->setFocus(Qt::FocusReason::TabFocusReason); // Set feed metadata fetch label. + m_ui.m_lblFetchMetadata->label()->setWordWrap(true); m_ui.m_lblFetchMetadata->setStatus(WidgetWithStatus::StatusType::Information, tr("No metadata fetched so far."), tr("No metadata fetched so far.")); diff --git a/src/librssguard/services/standard/standardfeed.cpp b/src/librssguard/services/standard/standardfeed.cpp index a061e8eee..aab10744e 100644 --- a/src/librssguard/services/standard/standardfeed.cpp +++ b/src/librssguard/services/standard/standardfeed.cpp @@ -547,7 +547,9 @@ QString StandardFeed::runScriptProcess(const QStringList& cmd_args, const QStrin process.closeWriteChannel(); } - if (process.waitForFinished(run_timeout) && process.exitStatus() == QProcess::ExitStatus::NormalExit) { + if (process.waitForFinished(run_timeout) && + process.exitStatus() == QProcess::ExitStatus::NormalExit && + process.exitCode() == EXIT_SUCCESS) { auto raw_output = process.readAllStandardOutput(); auto raw_error = process.readAllStandardError(); @@ -564,6 +566,10 @@ QString StandardFeed::runScriptProcess(const QStringList& cmd_args, const QStrin auto raw_error = process.readAllStandardError().simplified(); + if (raw_error.isEmpty()) { + raw_error = process.readAllStandardOutput().simplified(); + } + switch (process.error()) { case QProcess::ProcessError::Timedout: throw ScriptException(ScriptException::Reason::InterpreterTimeout);