#!/bin/sh # This file is a part of Julia. License is MIT: https://julialang.org/license # both $1 and $2 are absolute paths beginning with / # returns relative path to $2/$target from $1/$source proc relpath { test $Argc -ge 1 && test $Argc -le 2 || return 1 setvar current = "${2:+"$1"}" setvar target = "${2:-"$1"}" test $target != . || setvar target = '/' setvar target = ""/${target##/}"" test $current != . || setvar current = '/' setvar current = "${current:="/"}" setvar current = ""/${current##/}"" setvar appendix = "${target##/}" setvar relative = '''' while appendix="${target#"$current"/}" [ "$current" != '/' ] && [ "$appendix" = "$target" ]; { if test $current = $appendix { setvar relative = "${relative:-.}" echo ${relative#/} return 0 } setvar current = "${current%/*}" setvar relative = ""$relative${relative:+/}.."" } setvar relative = ""$relative${relative:+${appendix:+/}}${appendix#/}"" echo $relative } relpath @ARGV