]>
Commit | Line | Data |
---|---|---|
183c73b0 TT |
1 | #!/bin/sh |
2 | # | |
3 | # install-symlink source destination destdir | |
4 | # | |
5 | ||
6 | SYMLINKS=symlinks | |
7 | LN_S="@LN_S@" | |
8 | RM="@RM@" | |
9 | FORCE_RELATIVE=NO | |
10 | FORCE_ABSOLUTE=NO | |
11 | ||
12 | while echo $1 | grep -q -- ^- ; | |
13 | do | |
14 | case $1 in | |
15 | --relative) | |
16 | FORCE_RELATIVE=YES | |
17 | ;; | |
18 | --absolute) | |
19 | FORCE_ABSOLUTE=YES | |
20 | ;; | |
21 | --debian) | |
22 | FORCE_ABSOLUTE=NO | |
23 | FORCE_RELATIVE=NO | |
24 | ;; | |
25 | --symlinks=*) | |
26 | SYMLINKS=$(echo $1 | sed -e 's/--symlinks=//') | |
27 | ;; | |
28 | *) | |
29 | echo "Unknown option $1" | |
30 | exit 1 | |
31 | ;; | |
32 | esac | |
33 | shift; | |
34 | done | |
35 | ||
36 | ||
37 | FIX_SYMLINK="$SYMLINKS -c" | |
38 | ||
39 | SRC="$1" | |
40 | DEST="$2" | |
41 | DESTDIR="$3" | |
42 | ||
43 | if ! echo $SRC | grep -q ^/ ; then | |
44 | echo $SRC: Source pathname must be absolute | |
45 | exit 1 | |
46 | fi | |
47 | ||
48 | if ! echo $DEST | grep -q ^/ ; then | |
49 | echo $DEST: Destination pathname must be absolute | |
50 | exit 1 | |
51 | fi | |
52 | ||
53 | if ! test -e "$DESTDIR$SRC" ; then | |
54 | echo $DESTDIR$SRC: file or directory does not exist | |
55 | exit 1 | |
56 | fi | |
57 | ||
58 | $RM -f "$DESTDIR$DEST" | |
59 | ||
60 | if test "$LN_S" != "ln -s" ; then | |
61 | $LN_S "$DESTDIR$SRC" "$DESTDIR$DEST" | |
62 | exit 0 | |
63 | fi | |
64 | ||
65 | if test $(dirname "$SRC") = $(dirname "$DEST") ; then | |
66 | $LN_S "$(basename "$SRC")" "$DESTDIR$DEST" | |
67 | exit 0 | |
68 | fi | |
69 | ||
70 | TOP_SRC=$(echo $SRC | awk -F/ '{print $2}') | |
71 | TOP_DEST=$(echo $DEST | awk -F/ '{print $2}') | |
72 | ||
73 | if test $FORCE_RELATIVE = YES ; then | |
74 | TOP_SRC=FORCE | |
75 | TOP_DEST=FORCE | |
76 | fi | |
77 | ||
78 | if test $FORCE_ABSOLUTE = YES ; then | |
79 | TOP_SRC=FORCE | |
80 | TOP_DEST=FORCE_ABSOLUTE | |
81 | fi | |
82 | ||
83 | if test $TOP_SRC != $TOP_DEST ; then | |
84 | $LN_S "$SRC" "$DESTDIR$DEST" | |
85 | else | |
86 | $LN_S "$DESTDIR$SRC" "$DESTDIR$DEST" | |
87 | $FIX_SYMLINK "$DESTDIR$DEST" | |
88 | fi | |
89 |