|  | #!/bin/sh | 
|  | # This Source Code Form is subject to the terms of the Mozilla Public | 
|  | # License, v. 2.0. If a copy of the MPL was not distributed with this | 
|  | # file, You can obtain one at http://mozilla.org/MPL/2.0/. | 
|  |  | 
|  |  | 
|  | # | 
|  | # install - install a program, script, or datafile | 
|  | # This comes from X11R5; it is not part of GNU. | 
|  | # | 
|  | # $XConsortium: install.sh,v 1.2 89/12/18 14:47:22 jim Exp $ | 
|  | # | 
|  | # 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}" | 
|  |  | 
|  | instcmd="$mvprog" | 
|  | chmodcmd="" | 
|  | chowncmd="" | 
|  | chgrpcmd="" | 
|  | stripcmd="" | 
|  | rmcmd="$rmprog -f" | 
|  | mvcmd="$mvprog" | 
|  | src="" | 
|  | dst="" | 
|  |  | 
|  | 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;; | 
|  |  | 
|  | *)  if [ x"$src" = x ] | 
|  | then | 
|  | src=$1 | 
|  | else | 
|  | dst=$1 | 
|  | fi | 
|  | shift | 
|  | continue;; | 
|  | esac | 
|  | done | 
|  |  | 
|  | if [ x"$src" = x ] | 
|  | then | 
|  | echo "install:  no input file specified" | 
|  | exit 1 | 
|  | fi | 
|  |  | 
|  | if [ x"$dst" = x ] | 
|  | then | 
|  | echo "install:  no destination specified" | 
|  | exit 1 | 
|  | 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` | 
|  | fi | 
|  |  | 
|  | # 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 | 
|  |  | 
|  | $doit $instcmd $src $dsttmp | 
|  |  | 
|  | # and set any options; do chmod last to preserve setuid bits | 
|  |  | 
|  | if [ x"$chowncmd" != x ]; then $doit $chowncmd $dsttmp; fi | 
|  | if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd $dsttmp; fi | 
|  | if [ x"$stripcmd" != x ]; then $doit $stripcmd $dsttmp; fi | 
|  | if [ x"$chmodcmd" != x ]; then $doit $chmodcmd $dsttmp; fi | 
|  |  | 
|  | # Now rename the file to the real destination. | 
|  |  | 
|  | $doit $rmcmd $dst | 
|  | $doit $mvcmd $dsttmp $dst | 
|  |  | 
|  |  | 
|  | exit 0 |