Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit deefb0b5 authored by Guillaume Chelfi's avatar Guillaume Chelfi Committed by Luca Stefani
Browse files

Fix zsh compatibility issue in build/envsetup.sh

Arrays are zero indexed in bash and one indexed in zsh by default. This
leads to an off-by-one issue in the `godir` and `choosevariant` commands: when
prompted to chose an option, in order to pick option "n" you have to input
"n+1".

In those two specific instances, by using "substring expansion" instead of
array indexing, one can get consistent behaviour between bash and zsh
(equivalent to zero indexing).

Test: manual -
 # godir
 $ zsh
 $ source build/envsetup.sh
 $ godir SurfaceFlinger # There should be many options
 # Pick 1, check that you end up in the right location
 $ godir SurfaceFlinger.cpp # There should be only one possibility
 # make sure you end up in the right location
 # repeat with bash (to ensure compatibility is not broken)

 # choosevariant
 $ zsh
 $ source build/envsetup.h
 $ choosevariant # pick whatever variant you want
 $ printconfig # make sure the variant matches your choice
 # repeat with bash (to ensure compatibility is not broken)

Change-Id: I998d8fb48b708066b6db28a2129a2b09785fb0b1
parent 0a55dc72
Loading
Loading
Loading
Loading
+3 −3
Original line number Original line Diff line number Diff line
@@ -532,7 +532,7 @@ function choosevariant()
            export TARGET_BUILD_VARIANT=$default_value
            export TARGET_BUILD_VARIANT=$default_value
        elif (echo -n $ANSWER | grep -q -e "^[0-9][0-9]*$") ; then
        elif (echo -n $ANSWER | grep -q -e "^[0-9][0-9]*$") ; then
            if [ "$ANSWER" -le "${#VARIANT_CHOICES[@]}" ] ; then
            if [ "$ANSWER" -le "${#VARIANT_CHOICES[@]}" ] ; then
                export TARGET_BUILD_VARIANT=${VARIANT_CHOICES[$(($ANSWER-1))]}
                export TARGET_BUILD_VARIANT=${VARIANT_CHOICES[@]:$(($ANSWER-1)):1}
            fi
            fi
        else
        else
            if check_variant $ANSWER
            if check_variant $ANSWER
@@ -1324,10 +1324,10 @@ function godir () {
                echo "Invalid choice"
                echo "Invalid choice"
                continue
                continue
            fi
            fi
            pathname=${lines[$(($choice-1))]}
            pathname=${lines[@]:$(($choice-1)):1}
        done
        done
    else
    else
        pathname=${lines[0]}
        pathname=${lines[@]:0:1}
    fi
    fi
    \cd $T/$pathname
    \cd $T/$pathname
}
}