]>
Commit | Line | Data |
---|---|---|
7c673cae | 1 | #!/bin/sh |
9f95a23c TL |
2 | # SPDX-License-Identifier: BSD-3-Clause |
3 | # Copyright(c) 2010-2014 Intel Corporation | |
7c673cae FG |
4 | |
5 | # | |
6 | # print the relative path of $1 from $2 directory | |
7 | # $1 and $2 MUST be absolute paths | |
8 | # | |
9 | ||
10 | if [ $# -ne 2 ]; then | |
11 | echo "Bad arguments" | |
12 | echo "Usage:" | |
13 | echo " $0 path1 path2" | |
14 | exit 1 | |
15 | fi | |
16 | ||
17 | # get the real absolute path, derefencing symlinks | |
11fdf7f2 | 18 | ABS1="$(dirname $(readlink -f $1))/$(basename $1)" |
7c673cae FG |
19 | ABS2=$(readlink -f $2) |
20 | ||
21 | # remove leading slash | |
22 | REL1=${ABS1#/} | |
23 | REL2=${ABS2#/} | |
24 | ||
25 | left1=${REL1%%/*} | |
26 | right1=${REL1#*/} | |
27 | prev_right1=$REL1 | |
28 | prev_left1= | |
29 | ||
30 | left2=${REL2%%/*} | |
31 | right2=${REL2#*/} | |
32 | prev_right2=$REL2 | |
33 | prev_left2= | |
34 | ||
35 | prefix= | |
36 | ||
37 | while [ "${right1}" != "" -a "${right2}" != "" ]; do | |
38 | ||
39 | if [ "$left1" != "$left2" ]; then | |
40 | break | |
41 | fi | |
42 | ||
43 | prev_left1=$left1 | |
44 | left1=$left1/${right1%%/*} | |
45 | prev_right1=$right1 | |
46 | right1=${prev_right1#*/} | |
47 | if [ "$right1" = "$prev_right1" ]; then | |
48 | right1="" | |
49 | fi | |
50 | ||
51 | prev_left2=$left2 | |
52 | left2=$left2/${right2%%/*} | |
53 | prev_right2=$right2 | |
54 | right2=${prev_right2#*/} | |
55 | if [ "$right2" = "$prev_right2" ]; then | |
56 | right2="" | |
57 | fi | |
58 | done | |
59 | ||
60 | if [ "${left1}" != "${left2}" ]; then | |
61 | right2=${prev_right2} | |
62 | right1=${prev_right1} | |
63 | fi | |
64 | ||
65 | while [ "${right2}" != "" ]; do | |
66 | prefix=${prefix}../ | |
67 | prev_right2=$right2 | |
68 | right2=${right2#*/} | |
69 | if [ "$right2" = "$prev_right2" ]; then | |
70 | right2="" | |
71 | fi | |
72 | done | |
73 | ||
74 | echo ${prefix}${right1} | |
75 | ||
76 | exit 0 |