You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by pi...@apache.org on 2001/09/17 01:56:34 UTC

cvs commit: jakarta-tomcat-connectors/webapp/support install.sh

pier        01/09/16 16:56:34

  Modified:    webapp/support install.sh
  Log:
  Updating install.sh from latest AutoConf release
  
  Revision  Changes    Path
  1.2       +221 -82   jakarta-tomcat-connectors/webapp/support/install.sh
  
  Index: install.sh
  ===================================================================
  RCS file: /home/cvs/jakarta-tomcat-connectors/webapp/support/install.sh,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- install.sh	2001/09/15 21:41:24	1.1
  +++ install.sh	2001/09/16 23:56:34	1.2
  @@ -1,21 +1,37 @@
   #!/bin/sh
  -##
  -##  install.sh -- install a program, script or datafile
  -##
  -##  Based on `install-sh' from the X Consortium's X11R5 distribution
  -##  as of 89/12/18 which is freely available.
  -##  Cleaned up for Apache's Autoconf-style Interface (APACI)
  -##  by Ralf S. Engelschall <rs...@apache.org>
  -##
   #
  -# This script falls under the Apache License.
  -# See http://www.apache.org/docs/LICENSE
  -
  -
  +# install - install a program, script, or datafile
  +# This comes from X11R5 (mit/util/scripts/install.sh).
  +#
  +# Copyright 1991 by the Massachusetts Institute of Technology
   #
  -#   put in absolute paths if you don't have them in your path; 
  -#   or use env. vars.
  +# Permission to use, copy, modify, distribute, and sell this software and its
  +# documentation for any purpose is hereby granted without fee, provided that
  +# the above copyright notice appear in all copies and that both that
  +# copyright notice and this permission notice appear in supporting
  +# documentation, and that the name of M.I.T. not be used in advertising or
  +# publicity pertaining to distribution of the software without specific,
  +# written prior permission.  M.I.T. makes no representations about the
  +# suitability of this software for any purpose.  It is provided "as is"
  +# without express or implied warranty.
   #
  +# Calling this script install-sh is preferred over install.sh, to prevent
  +# `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
  +# from scratch.  It can only install one file at a time, a restriction
  +# shared with many OS's install programs.
  +
  +
  +# set DOITPROG to echo to test this script
  +
  +# Don't use :- since 4.3BSD and earlier shells don't like it.
  +doit="${DOITPROG-}"
  +
  +
  +# put in absolute paths if you don't have them in your path; or use env. vars.
  +
   mvprog="${MVPROG-mv}"
   cpprog="${CPPROG-cp}"
   chmodprog="${CHMODPROG-chmod}"
  @@ -23,90 +39,213 @@
   chgrpprog="${CHGRPPROG-chgrp}"
   stripprog="${STRIPPROG-strip}"
   rmprog="${RMPROG-rm}"
  +mkdirprog="${MKDIRPROG-mkdir}"
   
  -#
  -#   parse argument line
  -#
  +transformbasename=""
  +transform_arg=""
   instcmd="$mvprog"
  -chmodcmd=""
  +chmodcmd="$chmodprog 0755"
   chowncmd=""
   chgrpcmd=""
   stripcmd=""
   rmcmd="$rmprog -f"
   mvcmd="$mvprog"
  -ext=""
   src=""
   dst=""
  -while [ "x$1" != "x" ]; do
  +dir_arg=""
  +
  +while [ x"$1" != x ]; do
       case $1 in
  -        -c) instcmd="$cpprog"
  -            shift; continue
  -            ;;
  -        -m) chmodcmd="$chmodprog $2"
  -            shift; shift; continue
  -            ;;
  -        -o) chowncmd="$chownprog $2"
  -            shift; shift; continue
  -            ;;
  -        -g) chgrpcmd="$chgrpprog $2"
  -            shift; shift; continue
  -            ;;
  -        -s) stripcmd="$stripprog"
  -            shift; continue
  -            ;;
  -        -S) stripcmd="$stripprog $2"
  -            shift; shift; continue
  -            ;;
  -        -e) ext="$2"
  -            shift; shift; continue
  -            ;;
  -        *)  if [ "x$src" = "x" ]; then
  -                src=$1
  -            else
  -                dst=$1
  -            fi
  -            shift; continue
  -            ;;
  +	-c) instcmd="$cpprog"
  +	    shift
  +	    continue;;
  +
  +	-d) dir_arg=true
  +	    shift
  +	    continue;;
  +
  +	-m) chmodcmd="$chmodprog $2"
  +	    shift
  +	    shift
  +	    continue;;
  +
  +	-o) chowncmd="$chownprog $2"
  +	    shift
  +	    shift
  +	    continue;;
  +
  +	-g) chgrpcmd="$chgrpprog $2"
  +	    shift
  +	    shift
  +	    continue;;
  +
  +	-s) stripcmd="$stripprog"
  +	    shift
  +	    continue;;
  +
  +	-t=*) transformarg=`echo $1 | sed 's/-t=//'`
  +	    shift
  +	    continue;;
  +
  +	-b=*) transformbasename=`echo $1 | sed 's/-b=//'`
  +	    shift
  +	    continue;;
  +
  +	*)  if [ x"$src" = x ]
  +	    then
  +		src=$1
  +	    else
  +		# this colon is to work around a 386BSD /bin/sh bug
  +		:
  +		dst=$1
  +	    fi
  +	    shift
  +	    continue;;
       esac
   done
  -if [ "x$src" = "x" ]; then
  -     echo "install.sh: no input file specified"
  -     exit 1
  +
  +if [ x"$src" = x ]
  +then
  +	echo "install:	no input file specified"
  +	exit 1
  +else
  +	:
   fi
  -if [ "x$dst" = "x" ]; then
  -     echo "install.sh: no destination specified"
  -     exit 1
  +
  +if [ x"$dir_arg" != x ]; then
  +	dst=$src
  +	src=""
  +	
  +	if [ -d $dst ]; then
  +		instcmd=:
  +		chmodcmd=""
  +	else
  +		instcmd=$mkdirprog
  +	fi
  +else
  +
  +# Waiting for this to be detected by the "$instcmd $src $dsttmp" command
  +# might cause directories to be created, which would be especially bad 
  +# if $src (and thus $dsttmp) contains '*'.
  +
  +	if [ -f $src -o -d $src ]
  +	then
  +		:
  +	else
  +		echo "install:  $src does not exist"
  +		exit 1
  +	fi
  +	
  +	if [ x"$dst" = x ]
  +	then
  +		echo "install:	no destination specified"
  +		exit 1
  +	else
  +		:
  +	fi
  +
  +# If destination is a directory, append the input filename; if your system
  +# does not like double slashes in filenames, you may need to add some logic
  +
  +	if [ -d $dst ]
  +	then
  +		dst="$dst"/`basename $src`
  +	else
  +		:
  +	fi
   fi
   
  -#
  -#  If destination is a directory, append the input filename; if
  -#  your system does not like double slashes in filenames, you may
  -#  need to add some logic
  -#
  -if [ -d $dst ]; then
  -    dst="$dst/`basename $src`"
  +## this sed command emulates the dirname command
  +dstdir=`echo $dst | sed -e 's,[^/]*$,,;s,/$,,;s,^$,.,'`
  +
  +# Make sure that the destination directory exists.
  +#  this part is taken from Noah Friedman's mkinstalldirs script
  +
  +# Skip lots of stat calls in the usual case.
  +if [ ! -d "$dstdir" ]; then
  +defaultIFS='
  +	'
  +IFS="${IFS-${defaultIFS}}"
  +
  +oIFS="${IFS}"
  +# Some sh's can't handle IFS=/ for some reason.
  +IFS='%'
  +set - `echo ${dstdir} | sed -e 's@/@%@g' -e 's@^%@/@'`
  +IFS="${oIFS}"
  +
  +pathcomp=''
  +
  +while [ $# -ne 0 ] ; do
  +	pathcomp="${pathcomp}${1}"
  +	shift
  +
  +	if [ ! -d "${pathcomp}" ] ;
  +        then
  +		$mkdirprog "${pathcomp}"
  +	else
  +		:
  +	fi
  +
  +	pathcomp="${pathcomp}/"
  +done
   fi
   
  -#  Add a possible extension (such as ".exe") to src and dst
  -src="$src$ext"
  -dst="$dst$ext"
  -
  -#  Make a temp file name in the proper directory.
  -dstdir=`dirname $dst`
  -dsttmp=$dstdir/#inst.$$#
  -
  -#  Move or copy the file name to the temp name
  -$instcmd $src $dsttmp
  -
  -#  And set any options; do chmod last to preserve setuid bits
  -if [ "x$chowncmd" != "x" ]; then $chowncmd $dsttmp; fi
  -if [ "x$chgrpcmd" != "x" ]; then $chgrpcmd $dsttmp; fi
  -if [ "x$stripcmd" != "x" ]; then $stripcmd $dsttmp; fi
  -if [ "x$chmodcmd" != "x" ]; then $chmodcmd $dsttmp; fi
  -
  -#  Now rename the file to the real destination.
  -$rmcmd $dst
  -$mvcmd $dsttmp $dst
  +if [ x"$dir_arg" != x ]
  +then
  +	$doit $instcmd $dst &&
   
  -exit 0
  +	if [ x"$chowncmd" != x ]; then $doit $chowncmd $dst; else : ; fi &&
  +	if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd $dst; else : ; fi &&
  +	if [ x"$stripcmd" != x ]; then $doit $stripcmd $dst; else : ; fi &&
  +	if [ x"$chmodcmd" != x ]; then $doit $chmodcmd $dst; else : ; fi
  +else
  +
  +# If we're going to rename the final executable, determine the name now.
  +
  +	if [ x"$transformarg" = x ] 
  +	then
  +		dstfile=`basename $dst`
  +	else
  +		dstfile=`basename $dst $transformbasename | 
  +			sed $transformarg`$transformbasename
  +	fi
  +
  +# don't allow the sed command to completely eliminate the filename
  +
  +	if [ x"$dstfile" = x ] 
  +	then
  +		dstfile=`basename $dst`
  +	else
  +		:
  +	fi
  +
  +# Make a temp file name in the proper directory.
  +
  +	dsttmp=$dstdir/#inst.$$#
  +
  +# Move or copy the file name to the temp name
  +
  +	$doit $instcmd $src $dsttmp &&
   
  +	trap "rm -f ${dsttmp}" 0 &&
  +
  +# and set any options; do chmod last to preserve setuid bits
  +
  +# If any of these fail, we abort the whole thing.  If we want to
  +# ignore errors from any of these, just make sure not to ignore
  +# errors from the above "$doit $instcmd $src $dsttmp" command.
  +
  +	if [ x"$chowncmd" != x ]; then $doit $chowncmd $dsttmp; else :;fi &&
  +	if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd $dsttmp; else :;fi &&
  +	if [ x"$stripcmd" != x ]; then $doit $stripcmd $dsttmp; else :;fi &&
  +	if [ x"$chmodcmd" != x ]; then $doit $chmodcmd $dsttmp; else :;fi &&
  +
  +# Now rename the file to the real destination.
  +
  +	$doit $rmcmd -f $dstdir/$dstfile &&
  +	$doit $mvcmd $dsttmp $dstdir/$dstfile 
  +
  +fi &&
  +
  +
  +exit 0