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);