| #!/bin/sh | |
| # | |
| # Licensed to the Apache Software Foundation (ASF) under one or more | |
| # contributor license agreements. See the NOTICE file distributed with | |
| # this work for additional information regarding copyright ownership. | |
| # The ASF licenses this file to You under the Apache License, Version 2.0 | |
| # (the "License"); you may not use this file except in compliance with | |
| # the License. You may obtain a copy of the License at | |
| # | |
| # http://www.apache.org/licenses/LICENSE-2.0 | |
| # | |
| # Unless required by applicable law or agreed to in writing, software | |
| # distributed under the License is distributed on an "AS IS" BASIS, | |
| # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |
| # See the License for the specific language governing permissions and | |
| # limitations under the License. | |
| # | |
| # | |
| # install.sh -- install a program, script or datafile | |
| # | |
| # Based on `install-sh' from the X Consortium's X11R5 distribution | |
| # as of 89/12/18 which is freely available. | |
| # Cleaned up for Apache's Autoconf-style Interface (APACI) | |
| # by Ralf S. Engelschall <rse apache.org> | |
| # | |
| # 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}" | |
| # | |
| # parse argument line | |
| # | |
| instcmd="$mvprog" | |
| chmodcmd="" | |
| chowncmd="" | |
| chgrpcmd="" | |
| stripcmd="" | |
| rmcmd="$rmprog -f" | |
| mvcmd="$mvprog" | |
| ext="" | |
| 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 | |
| ;; | |
| -S) stripcmd="$stripprog $2" | |
| shift; shift; continue | |
| ;; | |
| -e) ext="$2" | |
| shift; shift; continue | |
| ;; | |
| *) break | |
| ;; | |
| esac | |
| done | |
| if test $# -eq 0 ; then | |
| echo "install.sh: no input file(s) specified" | |
| exit 1 | |
| fi | |
| if test $# -eq 1 ; then | |
| echo "install.sh: no destination specified" | |
| exit 1 | |
| fi | |
| for arg in "$@" ; do | |
| dstarg="$arg" | |
| done | |
| while test $# -gt 1 ; do | |
| dst="$dstarg" | |
| src="$1" | |
| shift | |
| # | |
| # 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 | |
| # Add a possible extension (such as ".exe") to src and dst | |
| src="$src$ext" | |
| dst="$dst$ext" | |
| # 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 | |
| $instcmd $src $dsttmp | |
| # And set any options; do chmod last to preserve setuid bits | |
| if [ "x$chowncmd" != "x" ]; then $chowncmd $dsttmp; fi | |
| if [ "x$chgrpcmd" != "x" ]; then $chgrpcmd $dsttmp; fi | |
| if [ "x$stripcmd" != "x" ]; then $stripcmd $dsttmp; fi | |
| if [ "x$chmodcmd" != "x" ]; then $chmodcmd $dsttmp; fi | |
| # Now rename the file to the real destination. | |
| $rmcmd $dst | |
| $mvcmd $dsttmp $dst | |
| done | |
| exit 0 | |