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
  
  
  

Reply via email to