Index: sdk/bin/dartanalyzer |
diff --git a/sdk/bin/dartanalyzer b/sdk/bin/dartanalyzer |
index 8a6a072ca990649348c1bd8c5a5317540a8eafc6..740332f2ebee679a2a32022793a4664d082d36b3 100755 |
--- a/sdk/bin/dartanalyzer |
+++ b/sdk/bin/dartanalyzer |
@@ -5,10 +5,21 @@ |
set -e |
-# Setting SCRIPT_DIR this way is ugly, but is needed to handle the case where |
-# dart-sdk/bin has been symlinked to. On MacOS, readlink doesn't work |
-# with this case. |
-SCRIPT_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. |
+SCRIPT_DIR="$(cd "${PROG_NAME%/*}" ; pwd -P)" |
+ |
DART_ANALYZER_HOME="$(cd "${SCRIPT_DIR%/*}" ; pwd -P)" |
FOUND_BATCH=0 |