summaryrefslogtreecommitdiff
path: root/lib/install-sh
diff options
context:
space:
mode:
authorRalf Wildenhues <Ralf.Wildenhues@gmx.de>2011-01-19 21:50:02 +0100
committerRalf Wildenhues <Ralf.Wildenhues@gmx.de>2011-01-19 22:46:15 +0100
commit15a6e56f4a8f9e262631419dbfc46483c0b69428 (patch)
tree77b57d97d50b4c23593b04bfcea4f01c16a09447 /lib/install-sh
parent10315b6dc8fe65f86a901ee9692271b2e8e4f541 (diff)
downloadautomake-15a6e56f4a8f9e262631419dbfc46483c0b69428.tar.gz
install-sh: avoid Tru64 sh `test' operator precedence issues.
* lib/install-sh: Protect file names and directory components that consist of `=', `(', `)', or `!'. Move protection as early as possible, to avoid errors such as with Tru64 sh `test -z ='. * tests/instsh2.test: Extend test to cover more possibilities. Fixes 1.12 instspc-equal-install.test failure on Tru64/OSF 5.1. Signed-off-by: Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
Diffstat (limited to 'lib/install-sh')
-rwxr-xr-xlib/install-sh23
1 files changed, 13 insertions, 10 deletions
diff --git a/lib/install-sh b/lib/install-sh
index 3f83ce9b5..a9244eb07 100755
--- a/lib/install-sh
+++ b/lib/install-sh
@@ -1,7 +1,7 @@
#!/bin/sh
# install - install a program, script, or datafile
-scriptversion=2010-02-06.18; # UTC
+scriptversion=2011-01-19.21; # UTC
# This originates from X11R5 (mit/util/scripts/install.sh), which was
# later released in X11R6 (xc/config/util/install.sh) with the
@@ -156,6 +156,10 @@ while test $# -ne 0; do
-s) stripcmd=$stripprog;;
-t) dst_arg=$2
+ # Protect names problematic for `test' and other utilities.
+ case $dst_arg in
+ -* | [=\(\)!]) dst_arg=./$dst_arg;;
+ esac
shift;;
-T) no_target_directory=true;;
@@ -186,6 +190,10 @@ if test $# -ne 0 && test -z "$dir_arg$dst_arg"; then
fi
shift # arg
dst_arg=$arg
+ # Protect names problematic for `test' and other utilities.
+ case $dst_arg in
+ -* | [=\(\)!]) dst_arg=./$dst_arg;;
+ esac
done
fi
@@ -232,9 +240,9 @@ fi
for src
do
- # Protect names starting with `-'.
+ # Protect names problematic for `test' and other utilities.
case $src in
- -*) src=./$src;;
+ -* | [=\(\)!]) src=./$src;;
esac
if test -n "$dir_arg"; then
@@ -256,12 +264,7 @@ do
echo "$0: no destination specified." >&2
exit 1
fi
-
dst=$dst_arg
- # Protect names starting with `-'.
- case $dst in
- -*) dst=./$dst;;
- esac
# If destination is a directory, append the input filename; won't work
# if double slashes aren't ignored.
@@ -389,7 +392,7 @@ do
case $dstdir in
/*) prefix='/';;
- -*) prefix='./';;
+ [-=\(\)!]*) prefix='./';;
*) prefix='';;
esac
@@ -407,7 +410,7 @@ do
for d
do
- test -z "$d" && continue
+ test X"$d" = X && continue
prefix=$prefix$d
if test -d "$prefix"; then