David Kastrup <dak@xxxxxxx> writes: >> diff --git a/git-sh-setup.sh b/git-sh-setup.sh >> index 7a964ad..97258d5 100644 >> --- a/git-sh-setup.sh >> +++ b/git-sh-setup.sh >> @@ -53,7 +53,7 @@ die () { >> die_with_status () { >> status=$1 >> shift >> - echo >&2 "$*" >> + printf >&2 "%s\n" "$*" >> exit "$status" >> } >> >> It does not sound crazy as the shell function "say" right below uses the >> same printf "%s\n" "$*", > > Sounds reasonable, though I don't know off-hand (not having the source > here) whether using "say" inside of die_with_status The definition of say is: say () { if test -z "$GIT_QUIET" then printf '%s\n' "$*" fi } I don't think we want to disable die's output even when the caller requested to be quiet. Currently, my patch is: >From 7962ac8d8f2cbc556f669fd97487f9d70edc4ea1 Mon Sep 17 00:00:00 2001 From: Matthieu Moy <Matthieu.Moy@xxxxxxx> Date: Tue, 6 Aug 2013 19:13:03 +0200 Subject: [PATCH] die_with_status: use "printf '%s\n'", not "echo" At least GNU echo interprets backslashes in its arguments. This triggered at least one bug: the error message of "rebase -i" was turning \t in commit messages into actual tabulations. There may be others. Using "printf '%s\n'" instead avoids this bad behavior, and is the form used by the "say" function. Noticed-by: David Kastrup <dak@xxxxxxx> Signed-off-by: Matthieu Moy <Matthieu.Moy@xxxxxxx> --- git-sh-setup.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/git-sh-setup.sh b/git-sh-setup.sh index 7a964ad..e15be51 100644 --- a/git-sh-setup.sh +++ b/git-sh-setup.sh @@ -53,7 +53,7 @@ die () { die_with_status () { status=$1 shift - echo >&2 "$*" + printf >&2 '%s\n' "$*" exit "$status" } -- 1.8.3.3.797.gb72c616 I'll resend properly for inclusion if no one objects. -- Matthieu Moy http://www-verimag.imag.fr/~moy/ -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html