Index: sdk/bin/dart |
diff --git a/sdk/bin/dart b/sdk/bin/dart |
index 22abed8b5e623c3425c39b9798a3754f58c309c8..675963f746cab46906ff24938d59bf6f07a8023a 100755 |
--- a/sdk/bin/dart |
+++ b/sdk/bin/dart |
@@ -3,20 +3,31 @@ |
# for details. All rights reserved. Use of this source code is governed by a |
# BSD-style license that can be found in the LICENSE file. |
-# Setting CUR_DIR this way is ugly, but is needed to handle the case where |
-# sdk/bin has been symlinked to. On MacOS, readlink doesn't work with this case. |
-CUR_DIR="$(cd "${0%/*}" ; pwd -P)" |
+function follow_links() { |
+ file="$1" |
+ while [ -h "$file" ]; do |
+ # On Mac OS, readlink -f doesn't work. |
+ file="$(readlink "$file")" |
+ done |
+ echo "$file" |
+} |
+ |
+# Unlike $0, $BASH_SOURCE points to the absolute path of this file. |
+PROG_NAME="$(follow_links "$BASH_SOURCE")" |
+ |
+# Handle the case where dart-sdk/bin has been symlinked to. |
+CUR_DIR="$(cd "${PROG_NAME%/*}" ; pwd -P)" |
if [ -z "$DART_CONFIGURATION" ]; |
then |
DART_CONFIGURATION="ReleaseIA32" |
fi |
-if [[ `uname` == 'Darwin' ]]; |
+if [[ `uname` == 'Darwin' ]]; |
then |
BIN_DIR="$CUR_DIR"/../../xcodebuild/$DART_CONFIGURATION |
else |
BIN_DIR="$CUR_DIR"/../../out/$DART_CONFIGURATION |
-fi |
+fi |
exec "$BIN_DIR"/dart "$@" |