diff options
author | Junio C Hamano <gitster@pobox.com> | 2007-11-07 23:04:38 -0800 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2007-11-07 23:10:10 -0800 |
commit | cbea86fd149f5d4aabdff06f87bc766d414b160e (patch) | |
tree | 6c7f9d938b1b76aa5789c2b90839461ef62059de /git-sh-setup.sh | |
parent | dfdd7e6686833ab3c0d9af412809a5455b9573de (diff) | |
download | git-cbea86fd149f5d4aabdff06f87bc766d414b160e.tar.gz |
git-sh-setup: fix parseopt `eval` string underquoting
The 'automagic parseopt' support corrupted non option parameters
that had IFS characters in them. The worst case is when it had
a non option parameter like this:
$1=" * some string"
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'git-sh-setup.sh')
-rwxr-xr-x | git-sh-setup.sh | 11 |
1 files changed, 6 insertions, 5 deletions
diff --git a/git-sh-setup.sh b/git-sh-setup.sh index e1cf885983..f1c4839a9f 100755 --- a/git-sh-setup.sh +++ b/git-sh-setup.sh @@ -21,11 +21,12 @@ if test -n "$OPTIONS_SPEC"; then exec "$0" -h } - parseopt_extra= - [ -n "$OPTIONS_KEEPDASHDASH" ] && - parseopt_extra="$parseopt_extra --keep-dashdash" - - eval `echo "$OPTIONS_SPEC" | git rev-parse --parseopt $parseopt_extra -- "$@" || echo exit $?` + [ -n "$OPTIONS_KEEPDASHDASH" ] && parseopt_extra="--keep-dashdash" + parsed=$( + echo "$OPTIONS_SPEC" | + git rev-parse --parseopt $parseopt_extra -- "$@" + ) && + eval "$parsed" || exit else usage() { die "Usage: $0 $USAGE" |