esac
}
+copy () {
+ prefix=$1
+ ## Copy lines from stdin to stdout, adding PREFIX.
+
+ while IFS= read -r line; do
+ printf "%s %s\n" "$prefix" "$line"
+ done
+}
+
run () {
tag=$1 cmd=$2; shift 2
## Run CMD, logging its output in a pleasing manner.
{ { { ( set +e
"$cmd" "$@" 3>&- 4>&- 5>&- 9>&-
echo $? >&5; ) |
- while IFS= read line; do echo "| $line"; done >&4; } 2>&1 |
- while IFS= read line; do echo "* $line"; done >&4; } 4>&1 |
+ copy "|" >&4; } 2>&1 |
+ copy "*" >&4; } 4>&1 |
cat >&9; } 5>&1 </dev/null
)
case $rc in