install-symlink.in revision e0ed7404719a9ddd2ba427a80db5365c8bad18c0
1#!/bin/sh
2#
3# install-symlink source destination destdir
4#
5
6SYMLINKS=symlinks
7LN_S="@LN_S@"
8RM="@RM@"
9FORCE_RELATIVE=NO
10FORCE_ABSOLUTE=NO
11
12while echo $1 | grep -q -- ^- ;
13do
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;
34done
35
36
37FIX_SYMLINK="$SYMLINKS -c"
38
39SRC="$1"
40DEST="$2"
41DESTDIR="$3"
42
43if ! echo $SRC | grep -q ^/ ; then
44	echo $SRC: Source pathname must be absolute
45	exit 1
46fi
47
48if ! echo $DEST | grep -q ^/ ; then
49	echo $DEST: Destination pathname must be absolute
50	exit 1
51fi
52
53if ! test -e "$DESTDIR$SRC" ; then
54	echo $DESTDIR$SRC: file or directory does not exist
55	exit 1
56fi
57
58$RM -f "$DESTDIR$DEST"
59
60if test "$LN_S" != "ln -s" ; then
61	$LN_S "$DESTDIR$SRC" "$DESTDIR$DEST"
62	exit 0
63fi
64
65if test $(dirname "$SRC") = $(dirname "$DEST") ; then
66	$LN_S "$(basename "$SRC")" "$DESTDIR$DEST"
67	exit 0
68fi
69
70TOP_SRC=$(echo $SRC | awk -F/ '{print $2}')
71TOP_DEST=$(echo $DEST | awk -F/ '{print $2}')
72
73if test $FORCE_RELATIVE = YES ; then
74	TOP_SRC=FORCE
75	TOP_DEST=FORCE
76fi
77
78if test $FORCE_ABSOLUTE = YES ; then
79	TOP_SRC=FORCE
80	TOP_DEST=FORCE_ABSOLUTE
81fi
82
83if test $TOP_SRC != $TOP_DEST ; then
84	$LN_S "$SRC" "$DESTDIR$DEST"
85else
86	$LN_S "$DESTDIR$SRC" "$DESTDIR$DEST"
87	$FIX_SYMLINK "$DESTDIR$DEST"
88fi
89
90