install.sh revision 2d2eda71267231c2526be701fe655db125852c1f
0f081398cf0eef8cc7c66a535d450110a92dc8aefielding#!/bin/sh
ab2c1c1c83ec91415565da5a71fbc15d9685caa6fielding##
ab2c1c1c83ec91415565da5a71fbc15d9685caa6fielding## install.sh -- install a program, script or datafile
b99dbaab171d91e1b664397cc40e039d0c087c65fielding##
ab2c1c1c83ec91415565da5a71fbc15d9685caa6fielding## Based on `install-sh' from the X Consortium's X11R5 distribution
0f081398cf0eef8cc7c66a535d450110a92dc8aefielding## as of 89/12/18 which is freely available.
0f081398cf0eef8cc7c66a535d450110a92dc8aefielding## Cleaned up for Apache's Autoconf-style Interface (APACI)
0f081398cf0eef8cc7c66a535d450110a92dc8aefielding## by Ralf S. Engelschall <rse@apache.org>
0f081398cf0eef8cc7c66a535d450110a92dc8aefielding##
0f081398cf0eef8cc7c66a535d450110a92dc8aefielding#
0f081398cf0eef8cc7c66a535d450110a92dc8aefielding# This script falls under the Apache License.
ab2c1c1c83ec91415565da5a71fbc15d9685caa6fielding# See http://www.apache.org/docs/LICENSE
0f081398cf0eef8cc7c66a535d450110a92dc8aefielding
0f081398cf0eef8cc7c66a535d450110a92dc8aefielding
0f081398cf0eef8cc7c66a535d450110a92dc8aefielding#
0f081398cf0eef8cc7c66a535d450110a92dc8aefielding# put in absolute paths if you don't have them in your path;
0f081398cf0eef8cc7c66a535d450110a92dc8aefielding# or use env. vars.
0f081398cf0eef8cc7c66a535d450110a92dc8aefielding#
ab2c1c1c83ec91415565da5a71fbc15d9685caa6fieldingmvprog="${MVPROG-mv}"
ab2c1c1c83ec91415565da5a71fbc15d9685caa6fieldingcpprog="${CPPROG-cp}"
ab2c1c1c83ec91415565da5a71fbc15d9685caa6fieldingchmodprog="${CHMODPROG-chmod}"
ab2c1c1c83ec91415565da5a71fbc15d9685caa6fieldingchownprog="${CHOWNPROG-chown}"
ab2c1c1c83ec91415565da5a71fbc15d9685caa6fieldingchgrpprog="${CHGRPPROG-chgrp}"
ab2c1c1c83ec91415565da5a71fbc15d9685caa6fieldingstripprog="${STRIPPROG-strip}"
0f081398cf0eef8cc7c66a535d450110a92dc8aefieldingrmprog="${RMPROG-rm}"
ab2c1c1c83ec91415565da5a71fbc15d9685caa6fielding
ab2c1c1c83ec91415565da5a71fbc15d9685caa6fielding#
ab2c1c1c83ec91415565da5a71fbc15d9685caa6fielding# parse argument line
ab2c1c1c83ec91415565da5a71fbc15d9685caa6fielding#
0f081398cf0eef8cc7c66a535d450110a92dc8aefieldinginstcmd="$mvprog"
ab2c1c1c83ec91415565da5a71fbc15d9685caa6fieldingchmodcmd=""
ab2c1c1c83ec91415565da5a71fbc15d9685caa6fieldingchowncmd=""
64185f9824e42f21ca7b9ae6c004484215c031a7rbbchgrpcmd=""
0f081398cf0eef8cc7c66a535d450110a92dc8aefieldingstripcmd=""
ab2c1c1c83ec91415565da5a71fbc15d9685caa6fieldingrmcmd="$rmprog -f"
ab2c1c1c83ec91415565da5a71fbc15d9685caa6fieldingmvcmd="$mvprog"
ab2c1c1c83ec91415565da5a71fbc15d9685caa6fieldingext=""
ab2c1c1c83ec91415565da5a71fbc15d9685caa6fieldingsrc=""
0f081398cf0eef8cc7c66a535d450110a92dc8aefieldingdst=""
ab2c1c1c83ec91415565da5a71fbc15d9685caa6fieldingwhile [ "x$1" != "x" ]; do
ab2c1c1c83ec91415565da5a71fbc15d9685caa6fielding case $1 in
ab2c1c1c83ec91415565da5a71fbc15d9685caa6fielding -c) instcmd="$cpprog"
ab2c1c1c83ec91415565da5a71fbc15d9685caa6fielding shift; continue
ab2c1c1c83ec91415565da5a71fbc15d9685caa6fielding ;;
ab2c1c1c83ec91415565da5a71fbc15d9685caa6fielding -m) chmodcmd="$chmodprog $2"
ab2c1c1c83ec91415565da5a71fbc15d9685caa6fielding shift; shift; continue
0f081398cf0eef8cc7c66a535d450110a92dc8aefielding ;;
0f081398cf0eef8cc7c66a535d450110a92dc8aefielding -o) chowncmd="$chownprog $2"
0f081398cf0eef8cc7c66a535d450110a92dc8aefielding shift; shift; continue
ab2c1c1c83ec91415565da5a71fbc15d9685caa6fielding ;;
ab2c1c1c83ec91415565da5a71fbc15d9685caa6fielding -g) chgrpcmd="$chgrpprog $2"
ab2c1c1c83ec91415565da5a71fbc15d9685caa6fielding shift; shift; continue
0f081398cf0eef8cc7c66a535d450110a92dc8aefielding ;;
ab2c1c1c83ec91415565da5a71fbc15d9685caa6fielding -s) stripcmd="$stripprog"
ab2c1c1c83ec91415565da5a71fbc15d9685caa6fielding shift; continue
ab2c1c1c83ec91415565da5a71fbc15d9685caa6fielding ;;
0f081398cf0eef8cc7c66a535d450110a92dc8aefielding -S) stripcmd="$stripprog $2"
0f081398cf0eef8cc7c66a535d450110a92dc8aefielding shift; shift; continue
3568de757bac0b47256647504c186d17ca272f85rbb ;;
3568de757bac0b47256647504c186d17ca272f85rbb -e) ext="$2"
3568de757bac0b47256647504c186d17ca272f85rbb shift; shift; continue
3568de757bac0b47256647504c186d17ca272f85rbb ;;
3568de757bac0b47256647504c186d17ca272f85rbb *) if [ "x$src" = "x" ]; then
3568de757bac0b47256647504c186d17ca272f85rbb src=$1
3568de757bac0b47256647504c186d17ca272f85rbb else
3568de757bac0b47256647504c186d17ca272f85rbb dst=$1
3568de757bac0b47256647504c186d17ca272f85rbb fi
3568de757bac0b47256647504c186d17ca272f85rbb shift; continue
3568de757bac0b47256647504c186d17ca272f85rbb ;;
3568de757bac0b47256647504c186d17ca272f85rbb esac
3568de757bac0b47256647504c186d17ca272f85rbbdone
3568de757bac0b47256647504c186d17ca272f85rbbif [ "x$src" = "x" ]; then
3568de757bac0b47256647504c186d17ca272f85rbb echo "install.sh: no input file specified"
3568de757bac0b47256647504c186d17ca272f85rbb exit 1
3568de757bac0b47256647504c186d17ca272f85rbbfi
3568de757bac0b47256647504c186d17ca272f85rbbif [ "x$dst" = "x" ]; then
3568de757bac0b47256647504c186d17ca272f85rbb echo "install.sh: no destination specified"
3568de757bac0b47256647504c186d17ca272f85rbb exit 1
3568de757bac0b47256647504c186d17ca272f85rbbfi
3568de757bac0b47256647504c186d17ca272f85rbb
3568de757bac0b47256647504c186d17ca272f85rbb#
3568de757bac0b47256647504c186d17ca272f85rbb# If destination is a directory, append the input filename; if
3568de757bac0b47256647504c186d17ca272f85rbb# your system does not like double slashes in filenames, you may
3568de757bac0b47256647504c186d17ca272f85rbb# need to add some logic
3568de757bac0b47256647504c186d17ca272f85rbb#
3568de757bac0b47256647504c186d17ca272f85rbbif [ -d $dst ]; then
3568de757bac0b47256647504c186d17ca272f85rbb dst="$dst/`basename $src`"
3568de757bac0b47256647504c186d17ca272f85rbbfi
3568de757bac0b47256647504c186d17ca272f85rbb
3568de757bac0b47256647504c186d17ca272f85rbb# Add a possible extension (such as ".exe") to src and dst
3568de757bac0b47256647504c186d17ca272f85rbbsrc="$src$ext"
3568de757bac0b47256647504c186d17ca272f85rbbdst="$dst$ext"
3568de757bac0b47256647504c186d17ca272f85rbb
3568de757bac0b47256647504c186d17ca272f85rbb# Make a temp file name in the proper directory.
3568de757bac0b47256647504c186d17ca272f85rbbdstdir=`dirname $dst`
3568de757bac0b47256647504c186d17ca272f85rbbdsttmp=$dstdir/#inst.$$#
3568de757bac0b47256647504c186d17ca272f85rbb
3568de757bac0b47256647504c186d17ca272f85rbb# Move or copy the file name to the temp name
3568de757bac0b47256647504c186d17ca272f85rbb$instcmd $src $dsttmp
0f081398cf0eef8cc7c66a535d450110a92dc8aefielding
0f081398cf0eef8cc7c66a535d450110a92dc8aefielding# And set any options; do chmod last to preserve setuid bits
0f081398cf0eef8cc7c66a535d450110a92dc8aefieldingif [ "x$chowncmd" != "x" ]; then $chowncmd $dsttmp; fi
0f081398cf0eef8cc7c66a535d450110a92dc8aefieldingif [ "x$chgrpcmd" != "x" ]; then $chgrpcmd $dsttmp; fi
3568de757bac0b47256647504c186d17ca272f85rbbif [ "x$stripcmd" != "x" ]; then $stripcmd $dsttmp; fi
3568de757bac0b47256647504c186d17ca272f85rbbif [ "x$chmodcmd" != "x" ]; then $chmodcmd $dsttmp; fi
3568de757bac0b47256647504c186d17ca272f85rbb
3568de757bac0b47256647504c186d17ca272f85rbb# Now rename the file to the real destination.
3568de757bac0b47256647504c186d17ca272f85rbb$rmcmd $dst
db12cd62083041bf90945eeb90cc40fbd2340797trawick$mvcmd $dsttmp $dst
db12cd62083041bf90945eeb90cc40fbd2340797trawick
db12cd62083041bf90945eeb90cc40fbd2340797trawickexit 0
333eac96e4fb7d6901cb75e6ca7bb22b2ccb84cetrawick
333eac96e4fb7d6901cb75e6ca7bb22b2ccb84cetrawick