40 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			Bash
		
	
	
	
			
		
		
	
	
			40 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			Bash
		
	
	
	
| # vim:et:ft=sh:sts=2:sw=2
 | |
| #
 | |
| # Copyright 2008 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/[^/]*\/\.\.\/*//;s/\/\.\//\//'`
 | |
|     [ "${shlib_old_}" = "${shlib_new_}" ] && break
 | |
|     shlib_old_=${shlib_new_}
 | |
|   done
 | |
|   echo "${shlib_new_}"
 | |
| 
 | |
|   unset shlib_path_ shlib_old_ shlib_new_
 | |
| }
 |