## stage of a pipeline, where we actually wanted the status of the first. So
## we write that to another pipe (fd 5) and pick it out using command
## substitution.
+copy () { while IFS= read -r line; do printf "%s %s\n" "$1" "$line"; done; }
rc=$(
{ { { { set +e; $lbuf "$cmd" "$@" 3>&- 4>&- 5>&-; 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 -u >&3; } 5>&1 </dev/null
)