fix symlink handling (generally and on OS X) in run-sbcl.sh
authorChristophe Rhodes <c.rhodes@gold.ac.uk>
Mon, 21 Oct 2013 11:41:35 +0000 (12:41 +0100)
committerChristophe Rhodes <c.rhodes@gold.ac.uk>
Mon, 21 Oct 2013 11:41:35 +0000 (12:41 +0100)
Patch from Stelian Ionescu, lp#1242643

NEWS
run-sbcl.sh

diff --git a/NEWS b/NEWS
index 92ee4d3..1b808d6 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -26,6 +26,8 @@ changes relative to sbcl-1.1.12:
     on sbcl-help)
   * bug fix: signal errors in required cases of slot-definition initialization
     protocol.  (lp#309072)
+  * bug fix: run-sbcl.sh works better in the presence of symlinks on OS X.
+    (thanks to Stelian Ionescu, lp#1242643)
 
 changes in sbcl-1.1.12 relative to sbcl-1.1.11:
   * enhancement: Add sb-bsd-sockets:socket-shutdown, for calling
index 44aaf68..3788bd9 100755 (executable)
 
 set -e
 
-BASE=`dirname "$0"`
-if (readlink -f "${BASE}") >/dev/null 2>&1; then
-    BASE=`readlink -f ${BASE}`
-else
-    opwd=`pwd`
-    cd "${BASE}"
-    BASE=`pwd`
-    cd "${opwd}"
-fi
-if [ "$OSTYPE" = "cygwin" ]
-then
-    BASE=`cygpath -w "$BASE"`
-fi
+this="$0"
+
+# OSX 10.8 readlink doesn't have -f
+while [ -h "$this" ]; do
+    # [ -h should guarantee that readlink output will be non-null
+    link=`readlink -n "$this"`
+    # if absolute path
+    if expr "$link" : '^/.*' > /dev/null; then
+        this="$link"
+    else
+        this=`dirname "$this"`/"$link"
+    fi
+done
+BASE=`dirname "$this"`
+
 CORE_DEFINED=no
 
-for arg in $*; do
-    case $arg in
+for arg in "$@"; do
+    case "$arg" in
         --core)
           CORE_DEFINED=yes
           ;;