Index: sdk/bin/dartdoc |
diff --git a/sdk/bin/dartdoc b/sdk/bin/dartdoc |
index 3f223678f655240fa886e78badda0250211bdfb8..bdb7b953c2ff1136956362a6a852f761efcac256 100755 |
--- a/sdk/bin/dartdoc |
+++ b/sdk/bin/dartdoc |
@@ -3,10 +3,19 @@ |
# 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 BIN_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. |
-BIN_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 "$(cd "$(dirname $file)"; pwd -P)/$(basename "$file")" |
+} |
+ |
+# Unlike $0, $BASH_SOURCE points to the absolute path of this file. Follow |
+# symlinks to handle the case where dart-sdk/bin or dart-sdk/bin/pub have been |
+# linked to. |
+BIN_DIR="$(dirname "$(follow_links "$BASH_SOURCE")")" |
unset COLORS |
if test -t 1; then |