From 4f618c54d080d77c4e1ea0d2c2a183e8988c442f Mon Sep 17 00:00:00 2001 From: Mark Wooding Date: Sat, 15 Jun 2013 00:07:56 +0100 Subject: [PATCH] rsync-backup.in: Handle backslashes correctly in command output. --- rsync-backup.in | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/rsync-backup.in b/rsync-backup.in index ec876ed..0ee1150 100644 --- a/rsync-backup.in +++ b/rsync-backup.in @@ -78,6 +78,15 @@ maybe () { 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. @@ -94,8 +103,8 @@ run () { { { { ( 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