From 521aa1e2e6d1ef35e0051d4cc76f4b2c91577212 Mon Sep 17 00:00:00 2001 From: Khalid Zubair Date: Thu, 11 Feb 2016 14:34:12 -0800 Subject: envesetup: mmm/mmma: fix for zsh Fix broken argument handling due to differnt word-splitting behavior in zsh [1]. Zsh arrays should be explicitly defined. - [1] http://zsh.sourceforge.net/FAQ/zshfaq03.html Change-Id: Ic299c1952384001e374c64caebbb23e9792fddf2 --- envsetup.sh | 20 ++++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) (limited to 'envsetup.sh') diff --git a/envsetup.sh b/envsetup.sh index eeb6534..3384211 100644 --- a/envsetup.sh +++ b/envsetup.sh @@ -902,8 +902,15 @@ function mmm() local ARGS= local DIR TO_CHOP local GET_INSTALL_PATH= - local DASH_ARGS=$(echo "$@" | awk -v RS=" " -v ORS=" " '/^-.*$/') - local DIRS=$(echo "$@" | awk -v RS=" " -v ORS=" " '/^[^-].*$/') + + if [ "$(__detect_shell)" == "zsh" ]; then + set -lA DASH_ARGS $(echo "$@" | awk -v RS=" " -v ORS=" " '/^-.*$/') + set -lA DIRS $(echo "$@" | awk -v RS=" " -v ORS=" " '/^[^-].*$/') + else + local DASH_ARGS=$(echo "$@" | awk -v RS=" " -v ORS=" " '/^-.*$/') + local DIRS=$(echo "$@" | awk -v RS=" " -v ORS=" " '/^[^-].*$/') + fi + for DIR in $DIRS ; do MODULES=`echo $DIR | sed -n -e 's/.*:\(.*$\)/\1/p' | sed 's/,/ /'` if [ "$MODULES" = "" ]; then @@ -966,8 +973,13 @@ function mmma() local T=$(gettop) local DRV=$(getdriver $T) if [ "$T" ]; then - local DASH_ARGS=$(echo "$@" | awk -v RS=" " -v ORS=" " '/^-.*$/') - local DIRS=$(echo "$@" | awk -v RS=" " -v ORS=" " '/^[^-].*$/') + if [ "$(__detect_shell)" == "zsh" ]; then + set -lA DASH_ARGS $(echo "$@" | awk -v RS=" " -v ORS=" " '/^-.*$/') + set -lA DIRS $(echo "$@" | awk -v RS=" " -v ORS=" " '/^[^-].*$/') + else + local DASH_ARGS=$(echo "$@" | awk -v RS=" " -v ORS=" " '/^-.*$/') + local DIRS=$(echo "$@" | awk -v RS=" " -v ORS=" " '/^[^-].*$/') + fi local MY_PWD=`PWD= /bin/pwd` if [ "$MY_PWD" = "$T" ]; then MY_PWD= -- cgit v1.1