From 125164fc972b3149aa65db4a839224dbf24ef8aa Mon Sep 17 00:00:00 2001
From: Hiltjo Posthuma <hiltjo@codemadness.org>
Date: Mon, 21 Mar 2022 11:47:07 +0100
Subject: sfeed_update: set exit status non-zero if any of the feeds failed

In practise this may change the meaning of the examples:

	sfeed_update && pkill -SIGHUP sfeed_curses

An alternative:

	sfeed_update; pkill -SIGHUP sfeed_curses
---
 sfeed_update   | 11 +++++++++--
 sfeed_update.1 |  1 -
 2 files changed, 9 insertions(+), 3 deletions(-)

diff --git a/sfeed_update b/sfeed_update
index b5f38bc..f2c97ae 100755
--- a/sfeed_update
+++ b/sfeed_update
@@ -41,6 +41,8 @@ log() {
 # log_error(name, s)
 log_error() {
 	printf '[%s] %-50.50s %s\n' "$(date +'%H:%M:%S')" "$1" "$2" >&2
+	# set error exit status indicator for parallel jobs.
+	rm -f "${sfeedtmpdir}/ok"
 }
 
 # fetch a feed via HTTP/HTTPS etc.
@@ -96,7 +98,7 @@ _feed() {
 
 	filename="$(printf '%s' "${name}" | tr '/' '_')"
 	sfeedfile="${sfeedpath}/${filename}"
-	tmpfeedfile="${sfeedtmpdir}/${filename}"
+	tmpfeedfile="${sfeedtmpdir}/feeds/${filename}"
 
 	# if file does not exist yet create it.
 	[ -e "${sfeedfile}" ] || touch "${sfeedfile}" 2>/dev/null
@@ -201,17 +203,22 @@ main() {
 	loadconfig "$1"
 	# fetch feeds and store in temporary directory.
 	sfeedtmpdir="$(mktemp -d '/tmp/sfeed_XXXXXX')"
+	mkdir -p "${sfeedtmpdir}/feeds"
+	touch "${sfeedtmpdir}/ok"
 	# make sure path exists.
 	mkdir -p "${sfeedpath}"
 	# fetch feeds specified in config file.
 	feeds
 	# wait till all feeds are fetched (concurrently).
 	[ ${signo} -eq 0 ] && wait
+	# check error exit status indicator for parallel jobs.
+	test -f "${sfeedtmpdir}/ok"
+	status=$?
 	# cleanup temporary files etc.
 	cleanup
 	# on signal SIGINT and SIGTERM exit with signal number + 128.
 	[ ${signo} -ne 0 ] && exit $((signo+128))
-	return 0
+	return ${status}
 }
 
 [ "${SFEED_UPDATE_INCLUDE}" = "1" ] || main "$@"
diff --git a/sfeed_update.1 b/sfeed_update.1
index aca52de..3edf551 100644
--- a/sfeed_update.1
+++ b/sfeed_update.1
@@ -62,7 +62,6 @@ stdout in the format:
 .Ed
 .Sh EXIT STATUS
 .Ex -std
-A (temporary) failure with processing a feed is not considered an error here.
 .Sh EXAMPLES
 To update your feeds and format them in various formats:
 .Bd -literal
-- 
cgit v1.2.3