aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xbin/muffle15
1 files changed, 5 insertions, 10 deletions
diff --git a/bin/muffle b/bin/muffle
index 0feed18..5cf0bdd 100755
--- a/bin/muffle
+++ b/bin/muffle
@@ -81,18 +81,13 @@ timed() {
echo 0 > "$STATUS_F"
{
- { "$@" || echo $? > "$STATUS_F"; } | timed | pre out > "$OUT"
-} 2>&1 | timed | pre err > "$ERR"
+ { "$@" || echo $? > "$STATUS_F"; } | pre -n out | timed > "$OUT"
+} 2>&1 | pre -n err | timed > "$ERR"
STATUS="$(cat "$STATUS_F")"
if [ "$INVERT" = false -a "$STATUS" != 0 ] || [ "$INVERT" = true -a "$STATUS" = 0 ]; then
- cat "$OUT" "$ERR" |
- sort -k2 | while read -r line; do
- if [ "$(printf '%s\n' "$line" | cut -d' ' -f1)" = 'out:' ]; then
- printf '%s\n' "$line" | cut -d' ' -f3- >&1
- else
- printf '%s\n' "$line" | cut -d' ' -f3- >&2
- fi
- done
+ sort -m "$OUT" "$ERR" | cut -d' ' -f2- | awk '{
+ print substr($0, length($1) + 2) > "/dev/std" $1
+ }'
exit "$STATUS"
fi