relocatable-script: remove unused code
[gnulib.git] / build-aux / relocatable.sh.in
1 # The functions in this file provide support for relocatability of
2 # shell scripts.  They should be included near the beginning of each
3 # shell script in a relocatable program, by adding @relocatable_sh@
4 # and causing the script to be expanded with AC_CONFIG_FILES.  A
5 # small amount of additional code must be added and adapted to the
6 # package by hand; see doc/relocatable-maint.texi (in Gnulib) for
7 # details.
8 #
9 # Copyright (C) 2003-2014 Free Software Foundation, Inc.
10 #
11 # This program is free software: you can redistribute it and/or modify
12 # it under the terms of the GNU General Public License as published by
13 # the Free Software Foundation; either version 3 of the License, or
14 # (at your option) any later version.
15 #
16 # This program is distributed in the hope that it will be useful,
17 # but WITHOUT ANY WARRANTY; without even the implied warranty of
18 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
19 # GNU General Public License for more details.
20 #
21 # You should have received a copy of the GNU General Public License
22 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
23 #
24
25 # Support for relocatability.
26 func_find_curr_installdir ()
27 {
28   # Determine curr_installdir, even taking into account symlinks.
29   curr_executable="$0"
30   case "$curr_executable" in
31     */* | *\\*) ;;
32     *) # Need to look in the PATH.
33       if test "${PATH_SEPARATOR+set}" != set; then
34         # Determine PATH_SEPARATOR by trying to find /bin/sh in a PATH which
35         # contains only /bin. Note that ksh looks also at the FPATH variable,
36         # so we have to set that as well for the test.
37         PATH_SEPARATOR=:
38         (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 \
39           && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 \
40                  || PATH_SEPARATOR=';'
41              }
42       fi
43       save_IFS="$IFS"; IFS="$PATH_SEPARATOR"
44       for dir in $PATH; do
45         IFS="$save_IFS"
46         test -z "$dir" && dir=.
47         for exec_ext in ''; do
48           if test -f "$dir/$curr_executable$exec_ext"; then
49             curr_executable="$dir/$curr_executable$exec_ext"
50             break 2
51           fi
52         done
53       done
54       IFS="$save_IFS"
55       ;;
56   esac
57   # Make absolute.
58   case "$curr_executable" in
59     /* | ?:/* | ?:\\*) ;;
60     *) curr_executable=`pwd`/"$curr_executable" ;;
61   esac
62   # Resolve symlinks.
63   sed_dirname='s,/[^/]*$,,'
64   sed_linkdest='s,^.* -> \(.*\),\1,p'
65   while : ; do
66     lsline=`LC_ALL=C ls -l "$curr_executable"`
67     case "$lsline" in
68       *" -> "*)
69         linkdest=`echo "$lsline" | sed -n -e "$sed_linkdest"`
70         case "$linkdest" in
71           /* | ?:/* | ?:\\*) curr_executable="$linkdest" ;;
72           *) curr_executable=`echo "$curr_executable" | sed -e "$sed_dirname"`/"$linkdest" ;;
73         esac ;;
74       *) break ;;
75     esac
76   done
77   curr_installdir=`echo "$curr_executable" | sed -e 's,/[^/]*$,,'`
78   # Canonicalize.
79   curr_installdir=`cd "$curr_installdir" && pwd`
80 }
81 func_find_prefixes ()
82 {
83   # Compute the original/current installation prefixes by stripping the
84   # trailing directories off the original/current installation directories.
85   orig_installprefix="$orig_installdir"
86   curr_installprefix="$curr_installdir"
87   while true; do
88     orig_last=`echo "$orig_installprefix" | sed -n -e 's,^.*/\([^/]*\)$,\1,p'`
89     curr_last=`echo "$curr_installprefix" | sed -n -e 's,^.*/\([^/]*\)$,\1,p'`
90     if test -z "$orig_last" || test -z "$curr_last"; then
91       break
92     fi
93     if test "$orig_last" != "$curr_last"; then
94       break
95     fi
96     orig_installprefix=`echo "$orig_installprefix" | sed -e 's,/[^/]*$,,'`
97     curr_installprefix=`echo "$curr_installprefix" | sed -e 's,/[^/]*$,,'`
98   done
99 }