OSDN Git Service

Merge tag 'android-7.1.2_r39' into nougat-x86
[android-x86/external-e2fsprogs.git] / util / install-symlink.in
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