#!/bin/sh # Copyright 2010 Jon Disnard. All rights reserved. # Redistribution and use in source and binary forms, with or without modification, are # permitted provided that the following conditions are met: # 1. Redistributions of source code must retain the above copyright notice, this list of # conditions and the following disclaimer. # 2. Redistributions in binary form must reproduce the above copyright notice, this list # of conditions and the following disclaimer in the documentation and/or other materials # provided with the distribution. # THIS SOFTWARE IS PROVIDED BY Jon Disnard ``AS IS'' AND ANY EXPRESS OR IMPLIED # WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND # FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL OR # CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR # CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR # SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON # ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING # NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF # ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # The views and conclusions contained in the software and documentation are those of the # authors and should not be interpreted as representing official policies, either expressed # or implied, of Jon Disnard. OIFS=$IFS IFS='/' count=0 for I in $1; do if [ x"$I" = x".." ] || [ x"$I" = x"." ]; then P="$(pwd)/$1" else P="$1" fi break done for I in $P; do # Resolve relative path punctuation. if [ x"$I" = x"." ] || [ -z "$I" ]; then continue elif [ x"$I" = x".." ]; then FOO="${FOO%%/${FOO##*/}}" continue else FOO="${FOO}/${I}" fi # Dereference symbolic links. if [ -h "$FOO" ] && [ -x "/bin/ls" ]; then IFS=$OIFS set `/bin/ls -l "$FOO"` while shift ; do if [ "$1" = "->" ]; then FOO="$2" shift $# break fi done fi done IFS=$OIFS echo "$FOO"