diff options
author | Anas Nashif <anas.nashif@intel.com> | 2012-10-30 15:47:44 -0700 |
---|---|---|
committer | Anas Nashif <anas.nashif@intel.com> | 2012-10-30 15:47:44 -0700 |
commit | 4c8dd44ec57d63e728bda99034c043b8941419df (patch) | |
tree | 5531f93b7c293790552944e6981a1745baaf7226 /install-sh | |
download | cups-4c8dd44ec57d63e728bda99034c043b8941419df.tar.gz cups-4c8dd44ec57d63e728bda99034c043b8941419df.tar.bz2 cups-4c8dd44ec57d63e728bda99034c043b8941419df.zip |
Imported Upstream version 1.5.3upstream/1.5.3
Diffstat (limited to 'install-sh')
-rwxr-xr-x | install-sh | 234 |
1 files changed, 234 insertions, 0 deletions
diff --git a/install-sh b/install-sh new file mode 100755 index 0000000..baa6e08 --- /dev/null +++ b/install-sh @@ -0,0 +1,234 @@ +#!/bin/sh +# +# "$Id: install-sh 10317 2012-03-01 00:05:55Z mike $" +# +# Install a program, script, or datafile. +# +# Copyright 2008-2012 by Apple Inc. +# +# This script is not compatible with BSD (or any other) install program, as it +# allows owner and group changes to fail with a warning and makes sure that the +# destination directory permissions are as specified - BSD install and the +# original X11 install script did not change permissions of existing +# directories. It also does not support the transform options since CUPS does +# not use them... +# +# Original script 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. + +# set DOITPROG to echo to test this script +# Don't use :- since 4.3BSD and earlier shells don't like it. +doit="${DOITPROG-}" + +# Force umask to 022... +umask 022 + +# 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}" +gzipprog="${GZIPPROG-gzip}" + +transformbasename="" +transform_arg="" +instcmd="$mvprog" +chmodcmd="$chmodprog 0755" +chowncmd="" +chgrpcmd="" +stripcmd="" +rmcmd="$rmprog -f" +mvcmd="$mvprog" +src="" +dst="" +dir_arg="" + +function gzipcp { + # gzipcp from to + $gzipprog -9 <"$1" >"$2" +} + +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 + ;; + + -z) + instcmd="gzipcp" + shift + continue + ;; + + *) + if [ x"$src" = x ]; then + src="$1" + else + dst="$1" + fi + shift + continue + ;; + esac +done + +if [ x"$src" = x ]; then + echo "install-sh: No input file specified" + exit 1 +fi + +if [ x"$dir_arg" != x ]; then + dst="$src" + src="" + + if [ -d "$dst" ]; then + instcmd=: + 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" -a ! -d "$src" ]; then + echo "install: $src does not exist" + 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 [ -d "$dst" ]; then + dst="$dst/`basename $src`" + 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 $doit $mkdirprog "${pathcomp}"; fi + + pathcomp="${pathcomp}/" + done +fi + +if [ x"$dir_arg" != x ]; then + # Make a directory... + $doit $instcmd $dst || exit 1 + + # Allow chown/chgrp to fail, but log a warning + if [ x"$chowncmd" != x ]; then $doit $chowncmd $dst || echo "warning: Unable to change owner of $dst!"; fi + if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd $dst || echo "warning: Unable to change group of $dst!"; fi + if [ x"$chmodcmd" != x ]; then $doit $chmodcmd $dst || exit 1; fi +else + # Install a file... + dstfile="`basename $dst`" + + # Check the destination file - for libraries just use the "-x" option + # to strip... + case "$dstfile" in + *.a | *.dylib | *.sl | *.sl.* | *.so | *.so.*) + stripopt="-x" + ;; + *) + stripopt="" + ;; + esac + + # 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 || exit 1 + + # Update permissions and strip as needed, then move to the final name. + # If the chmod, strip, rm, or mv commands fail, remove the installed + # file... + if [ x"$stripcmd" != x ]; then $doit $stripcmd $stripopt "$dsttmp" || echo "warning: Unable to strip $dst!"; fi + if [ x"$chowncmd" != x ]; then $doit $chowncmd "$dsttmp" || echo "warning: Unable to change owner of $dst!"; fi + if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd "$dsttmp" || echo "warning: Unable to change group of $dst!"; fi + + trap "rm -f ${dsttmp}" 0 && + if [ x"$chmodcmd" != x ]; then $doit $chmodcmd "$dsttmp"; fi && + $doit $rmcmd -f "$dstdir/$dstfile" && + $doit $mvcmd "$dsttmp" "$dstdir/$dstfile" +fi + +exit 0 |