#!/bin/sh
#    relpath
#	by Frank Barrus (December, 1996)
#	prints the relative path between two directories
#	rewritten in January, 1998 to use awk (fixing a bug, and
#		making it faster)

set -e

# technically, this could be optimized to not do this step 
# if both paths are already relative to the current or root 
# directory
dest=`cd $1; /bin/pwd`/
src=`cd $2; /bin/pwd`/

if [ -z "$AWK" ]; then AWK=nawk; fi

$AWK -v src=$src -v dest=$dest '
BEGIN {
	while(index(dest, src) == 0) {
		relprefix=relprefix"../"
		sub("[^/]*/$", "", src)
	}
	while(src != dest) {
		match(dest, "[^/]*/$")
		relpath=substr(dest, RSTART, RLENGTH) relpath
		dest=substr(dest, 1, RSTART-1)
	}
	r = relprefix relpath
	sub("//", "/", r)
	print r
}
'
exit 0


# The old (somewhat broken) way follows...

relpath=""
relprefix=""
while [ x`(echo $dest | grep $src)` = x ] ; do
	relprefix="$relprefix../"
	src=`dirname $src`
done

while [ $src != $dest ] ; do
	relpath=`basename $dest`"/$relpath"
	dest=`dirname $dest`
done

relpath="$relprefix$relpath"

if [ "$relpath" = "" ] ; then
	relpath=.
fi

echo "$relpath"
