chiark / gitweb /
check, rcheck: Propagate exit status better; capture lines more precisely.
[rcheck] / check
CommitLineData
f5f6d9ac
MW
1#! /bin/sh
2###
3### Run a collection of everyday health checks.
4
5set -e
6
b742457e
MW
7exec 4>&1
8rc=0
f5f6d9ac 9for check in check.d/[!#]*[!~]; do
b742457e
MW
10 nrc=$(
11 exec 5>&1
12 { { { set +e; "$check"; rc=$?; set -e
13 echo $rc >&5
14 case $rc in 0) ;; *) echo >&2 "failed (rc = $rc)" ;; esac
15 } >&3; } 2>&1 |
16 sed 's/^/E: /'
17 } 3>&1 | {
18 if IFS= read -r line; then
19 echo "## ${check##*/}"
20 echo "$line"
21 cat
22 echo
23 fi
24 } >&4
25 )
26 if [ $nrc -gt $rc ]; then rc=$nrc; fi
f5f6d9ac 27done
b742457e
MW
28
29exit $rc