Roxen.git / install-sh

version» Context lines:

Roxen.git/install-sh:1: - cp $@ + #! /bin/sh + # + # install - install a program, script, or datafile + # This comes from X11R5. + # + # 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. + # +  +  + # 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 +  true + fi +  + if [ x"$dir_arg" != x ]; then +  dst=$src +  src="" +  +  if [ -d $dst ]; then +  instcmd=: +  else +  instcmd=mkdir +  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 +  true +  else +  echo "install: $src does not exist" +  exit 1 +  fi +  +  if [ x"$dst" = x ] +  then +  echo "install: no destination specified" +  exit 1 +  else +  true +  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 +  true +  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 +  true +  fi +  +  pathcomp="${pathcomp}/" + done + fi +  + if [ x"$dir_arg" != x ] + then +  $doit $instcmd $dst && +  +  if [ x"$chowncmd" != x ]; then $doit $chowncmd $dst; else true ; fi && +  if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd $dst; else true ; fi && +  if [ x"$stripcmd" != x ]; then $doit $stripcmd $dst; else true ; fi && +  if [ x"$chmodcmd" != x ]; then $doit $chmodcmd $dst; else true ; 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 +  true +  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 true;fi && +  if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd $dsttmp; else true;fi && +  if [ x"$stripcmd" != x ]; then $doit $stripcmd $dsttmp; else true;fi && +  if [ x"$chmodcmd" != x ]; then $doit $chmodcmd $dsttmp; else true;fi && +  + # Now rename the file to the real destination. +  +  $doit $rmcmd -f $dstdir/$dstfile && +  $doit $mvcmd $dsttmp $dstdir/$dstfile +  + fi && +  +  + exit 0 +    Newline at end of file added.