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