41 lines
1.2 KiB
Bash
41 lines
1.2 KiB
Bash
# $Id: shlib 14 2007-02-18 19:43:41Z sfsetse $
|
|
# vim:et:ft=sh:sts=2:sw=2
|
|
#
|
|
# Copyright 2011 Kate Ward. All Rights Reserved.
|
|
# Released under the LGPL (GNU Lesser General Public License).
|
|
#
|
|
# Author: kate.ward@forestent.com (Kate Ward)
|
|
#
|
|
# Library of shell functions.
|
|
|
|
# Convert a relative path into it's absolute equivalent.
|
|
#
|
|
# This function will automatically prepend the current working directory if the
|
|
# path is not already absolute. It then removes all parent references (../) to
|
|
# reconstruct the proper absolute path.
|
|
#
|
|
# Args:
|
|
# shlib_path_: string: relative path
|
|
# Outputs:
|
|
# string: absolute path
|
|
shlib_relToAbsPath()
|
|
{
|
|
shlib_path_=$1
|
|
|
|
# prepend current directory to relative paths
|
|
echo "${shlib_path_}" |grep '^/' >/dev/null 2>&1 \
|
|
|| shlib_path_="`pwd`/${shlib_path_}"
|
|
|
|
# clean up the path. if all seds supported true regular expressions, then
|
|
# this is what it would be:
|
|
shlib_old_=${shlib_path_}
|
|
while true; do
|
|
shlib_new_=`echo "${shlib_old_}" |sed 's/[^/]*\/\.\.\/*//g;s/\/\.\//\//'`
|
|
[ "${shlib_old_}" = "${shlib_new_}" ] && break
|
|
shlib_old_=${shlib_new_}
|
|
done
|
|
echo "${shlib_new_}"
|
|
|
|
unset shlib_path_ shlib_old_ shlib_new_
|
|
}
|