diff options
Diffstat (limited to 'install-sh')
| -rwxr-xr-x | install-sh | 35 | 
1 files changed, 21 insertions, 14 deletions
| @@ -1,7 +1,7 @@  #!/bin/sh  # install - install a program, script, or datafile -scriptversion=2009-04-28.21; # UTC +scriptversion=2011-11-20.07; # UTC  # This originates from X11R5 (mit/util/scripts/install.sh), which was  # later released in X11R6 (xc/config/util/install.sh) with the @@ -35,7 +35,7 @@ scriptversion=2009-04-28.21; # UTC  # FSF changes to this file are in the public domain.  #  # Calling this script install-sh is preferred over install.sh, to prevent -# `make' implicit rules from creating a file called install from it +# 'make' implicit rules from creating a file called install from it  # when there is no Makefile.  #  # This script is compatible with the BSD install script, but was written @@ -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 @@ -194,13 +202,17 @@ if test $# -eq 0; then      echo "$0: no input file specified." >&2      exit 1    fi -  # It's OK to call `install-sh -d' without argument. +  # It's OK to call 'install-sh -d' without argument.    # This can happen when creating conditional directories.    exit 0  fi  if test -z "$dir_arg"; then -  trap '(exit $?); exit' 1 2 13 15 +  do_exit='(exit $ret); exit $ret' +  trap "ret=129; $do_exit" 1 +  trap "ret=130; $do_exit" 2 +  trap "ret=141; $do_exit" 13 +  trap "ret=143; $do_exit" 15    # Set umask so as not to create temps with too-generous modes.    # However, 'strip' requires both read and write access to temps. @@ -228,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 @@ -252,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. @@ -347,7 +354,7 @@ do  	      if test -z "$dir_arg" || {  		   # Check for POSIX incompatibilities with -m.  		   # HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or -		   # other-writeable bit of parent directory when it shouldn't. +		   # other-writable bit of parent directory when it shouldn't.  		   # FreeBSD 6.1 mkdir -m -p sets mode of existing directory.  		   ls_ld_tmpdir=`ls -ld "$tmpdir"`  		   case $ls_ld_tmpdir in @@ -385,7 +392,7 @@ do        case $dstdir in  	/*) prefix='/';; -	-*) prefix='./';; +	[-=\(\)!]*) prefix='./';;  	*)  prefix='';;        esac @@ -403,7 +410,7 @@ do        for d        do -	test -z "$d" && continue +	test X"$d" = X && continue  	prefix=$prefix$d  	if test -d "$prefix"; then | 
