41 lines
1.2 KiB
Plaintext
41 lines
1.2 KiB
Plaintext
|
# $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_
|
||
|
}
|