diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-07 15:49:25 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-07 15:49:25 +0000 |
commit | 464df1d5e5ab1322e2dd0a7796939fff1aeefa9a (patch) | |
tree | 6a403684e0978f0287d7f0ec0e5aab1fd31a59e1 /util/install-symlink.in | |
parent | Initial commit. (diff) | |
download | e2fsprogs-464df1d5e5ab1322e2dd0a7796939fff1aeefa9a.tar.xz e2fsprogs-464df1d5e5ab1322e2dd0a7796939fff1aeefa9a.zip |
Adding upstream version 1.47.0.upstream/1.47.0upstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to '')
-rw-r--r-- | util/install-symlink.in | 89 |
1 files changed, 89 insertions, 0 deletions
diff --git a/util/install-symlink.in b/util/install-symlink.in new file mode 100644 index 0000000..24341b8 --- /dev/null +++ b/util/install-symlink.in @@ -0,0 +1,89 @@ +#!/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 + |