chiark / gitweb /
don't use return when being sourced
authorUwe Kleine-König <u.kleine-koenig@pengutronix.de>
Tue, 24 Mar 2009 20:46:23 +0000 (21:46 +0100)
committerUwe Kleine-König <u.kleine-koenig@pengutronix.de>
Tue, 24 Mar 2009 20:46:23 +0000 (21:46 +0100)
Fabien Thomas reports that a Bourne (not Again) sh on FreeBSD just
ignores the return and continues executing with the rest of the script.

So just wrap everything that was skipped by the return using other
shells in a big if instead.

Signed-off-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
Closes: http://bugs.debian.org/516188
tg.sh

diff --git a/tg.sh b/tg.sh
index 43d1c9f69c6ab3dc7639598568ca7ccec9411ae0..0804f733018773b89ab7890442ecd3c38ba7bef0 100644 (file)
--- a/tg.sh
+++ b/tg.sh
@@ -340,8 +340,9 @@ setup_hook "pre-commit"
 ## Dispatch
 
 # We were sourced from another script for our utility functions;
 ## Dispatch
 
 # We were sourced from another script for our utility functions;
-# this is set by hooks.
-[ -z "$tg__include" ] || return 0
+# this is set by hooks.  Skip the rest of the file.  A simple return doesn't
+# work as expected in every shell.  See http://bugs.debian.org/516188
+if [ -z "$tg__include" ]; then
 
 if [ "$1" = "-r" ]; then
        shift
 
 if [ "$1" = "-r" ]; then
        shift
@@ -374,4 +375,6 @@ help|--help|-h)
        . "@cmddir@"/tg-$cmd;;
 esac
 
        . "@cmddir@"/tg-$cmd;;
 esac
 
+fi
+
 # vim:noet
 # vim:noet