40 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
		
		
			
		
	
	
			40 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
| 
								 | 
							
								# 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_
							 | 
						||
| 
								 | 
							
								}
							 |