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/06/26 03:33:53 UTC

cvs commit: jakarta-tomcat-4.0/service/support install.sh

pier        01/06/25 18:33:53

  Added:       service/support install.sh
  Log:
  Full UNIX service implementation checkin
  
  Revision  Changes    Path
  1.1                  jakarta-tomcat-4.0/service/support/install.sh
  
  Index: install.sh
  ===================================================================
  #!/bin/sh
  #
  # install - install a program, script, or datafile
  # This comes from X11R5 (mit/util/scripts/install.sh).
  #
  # Copyright 1991 by the Massachusetts Institute of Technology
  #
  # 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}"
  chownprog="${CHOWNPROG-chown}"
  chgrpprog="${CHGRPPROG-chgrp}"
  stripprog="${STRIPPROG-strip}"
  rmprog="${RMPROG-rm}"
  mkdirprog="${MKDIRPROG-mkdir}"
  
  transformbasename=""
  transform_arg=""
  instcmd="$mvprog"
  chmodcmd="$chmodprog 0755"
  chowncmd=""
  chgrpcmd=""
  stripcmd=""
  rmcmd="$rmprog -f"
  mvcmd="$mvprog"
  src=""
  dst=""
  dir_arg=""
  
  while [ x"$1" != x ]; do
      case $1 in
  	-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:	no input file specified"
  	exit 1
  else
  	:
  fi
  
  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
  
  ## 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
  
  if [ x"$dir_arg" != x ]
  then
  	$doit $instcmd $dst &&
  
  	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