From: Jim Meyering Date: Tue, 14 Jun 2011 13:37:48 +0000 (+0200) Subject: tests: use printf, not echo in init.sh's warn_ function X-Git-Tag: v8.13~115 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=7f8d9892fb4ce29821fc824defaa6e0d32740feb;p=platform%2Fupstream%2Fcoreutils.git tests: use printf, not echo in init.sh's warn_ function * tests/init.sh (warn_): Use printf, not echo. The latter would misbehave when given strings containing a backslash or starting with e.g., -n. James Youngman suggested setting IFS. --- diff --git a/tests/init.sh b/tests/init.sh index 4a52626..5f06b5e 100644 --- a/tests/init.sh +++ b/tests/init.sh @@ -74,7 +74,17 @@ Exit () { set +e; (exit $1); exit $1; } # the reason for skip/failure to console, rather than to the .log files. : ${stderr_fileno_=2} -warn_ () { echo "$@" 1>&$stderr_fileno_; } +# Call w2_ only via warn_, since correct expansion of "$*" depends on +# IFS starting with ' '. +w2_ () { printf '%s\n' "$*" 1>&$stderr_fileno_ ; } +warn_ () +{ + # If IFS does not start with ' ', set it and emit the warning in a subshell. + case $IFS in + ' '*) w2_ "$@";; + *) (IFS=' '; w2_ "$@");; + esac +} fail_ () { warn_ "$ME_: failed test: $@"; Exit 1; } skip_ () { warn_ "$ME_: skipped test: $@"; Exit 77; } fatal_ () { warn_ "$ME_: hard error: $@"; Exit 99; }