use `readlink -f` if it works
authorMike Frysinger <vapier@gentoo.org>
Mon, 24 Sep 2012 00:16:54 +0000 (20:16 -0400)
committerMike Frysinger <vapier@gentoo.org>
Mon, 24 Sep 2012 00:16:54 +0000 (20:16 -0400)
Rather than always re-implementing `readlink -f` in shell, probe the host
tool first to see if it works.

Signed-off-by: Mike Frysinger <vapier@gentoo.org>
bin/misc-functions.sh

index ac08bd9482db800f8d17dbddcfb971d5e891c69e..c8b7cc8b0a448c5f095a2798134abaf85d5ba6c9 100755 (executable)
@@ -43,7 +43,20 @@ install_symlink_html_docs() {
 }
 
 # replacement for "readlink -f" or "realpath"
+READLINK_F_WORKS=""
 canonicalize() {
+       if [[ -z ${READLINK_F_WORKS} ]] ; then
+               if [[ $(readlink -f -- /../ 2>/dev/null) == "/" ]] ; then
+                       READLINK_F_WORKS=true
+               else
+                       READLINK_F_WORKS=false
+               fi
+       fi
+       if ${READLINK_F_WORKS} ; then
+               readlink -f -- "$@"
+               return
+       fi
+
        local f=$1 b n=10 wd=$(pwd)
        while (( n-- > 0 )); do
                while [[ ${f: -1} = / && ${#f} -gt 1 ]]; do