| #!/bin/sh |
| # |
| # install-symlink source destination destdir |
| # |
| |
| SYMLINKS=symlinks |
| LN_S="@LN_S@" |
| RM="@RM@" |
| FORCE_RELATIVE=NO |
| FORCE_ABSOLUTE=NO |
| |
| while echo $1 | grep -q -- ^- ; |
| do |
| case $1 in |
| --relative) |
| FORCE_RELATIVE=YES |
| ;; |
| --absolute) |
| FORCE_ABSOLUTE=YES |
| ;; |
| --debian) |
| FORCE_ABSOLUTE=NO |
| FORCE_RELATIVE=NO |
| ;; |
| --symlinks=*) |
| SYMLINKS=$(echo $1 | sed -e 's/--symlinks=//') |
| ;; |
| *) |
| echo "Unknown option $1" |
| exit 1 |
| ;; |
| esac |
| shift; |
| done |
| |
| |
| FIX_SYMLINK="$SYMLINKS -c" |
| |
| SRC="$1" |
| DEST="$2" |
| DESTDIR="$3" |
| |
| if ! echo $SRC | grep -q ^/ ; then |
| echo $SRC: Source pathname must be absolute |
| exit 1 |
| fi |
| |
| if ! echo $DEST | grep -q ^/ ; then |
| echo $DEST: Destination pathname must be absolute |
| exit 1 |
| fi |
| |
| if ! test -e "$DESTDIR$SRC" ; then |
| echo $DESTDIR$SRC: file or directory does not exist |
| exit 1 |
| fi |
| |
| $RM -f "$DESTDIR$DEST" |
| |
| if test "$LN_S" != "ln -s" ; then |
| $LN_S "$DESTDIR$SRC" "$DESTDIR$DEST" |
| exit 0 |
| fi |
| |
| if test $(dirname "$SRC") = $(dirname "$DEST") ; then |
| $LN_S "$(basename "$SRC")" "$DESTDIR$DEST" |
| exit 0 |
| fi |
| |
| TOP_SRC=$(echo $SRC | awk -F/ '{print $2}') |
| TOP_DEST=$(echo $DEST | awk -F/ '{print $2}') |
| |
| if test $FORCE_RELATIVE = YES ; then |
| TOP_SRC=FORCE |
| TOP_DEST=FORCE |
| fi |
| |
| if test $FORCE_ABSOLUTE = YES ; then |
| TOP_SRC=FORCE |
| TOP_DEST=FORCE_ABSOLUTE |
| fi |
| |
| if test $TOP_SRC != $TOP_DEST ; then |
| $LN_S "$SRC" "$DESTDIR$DEST" |
| else |
| $LN_S "$DESTDIR$SRC" "$DESTDIR$DEST" |
| $FIX_SYMLINK "$DESTDIR$DEST" |
| fi |
| |