--- /dev/null
+#!/bin/sh\r
+# install - install a program, script, or datafile\r
+\r
+scriptversion=2005-05-14.22\r
+\r
+# This originates from X11R5 (mit/util/scripts/install.sh), which was\r
+# later released in X11R6 (xc/config/util/install.sh) with the\r
+# following copyright and license.\r
+#\r
+# Copyright (C) 1994 X Consortium\r
+#\r
+# Permission is hereby granted, free of charge, to any person obtaining a copy\r
+# of this software and associated documentation files (the "Software"), to\r
+# deal in the Software without restriction, including without limitation the\r
+# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\r
+# sell copies of the Software, and to permit persons to whom the Software is\r
+# furnished to do so, subject to the following conditions:\r
+#\r
+# The above copyright notice and this permission notice shall be included in\r
+# all copies or substantial portions of the Software.\r
+#\r
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\r
+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\r
+# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\r
+# X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN\r
+# AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNEC-\r
+# TION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\r
+#\r
+# Except as contained in this notice, the name of the X Consortium shall not\r
+# be used in advertising or otherwise to promote the sale, use or other deal-\r
+# ings in this Software without prior written authorization from the X Consor-\r
+# tium.\r
+#\r
+#\r
+# FSF changes to this file are in the public domain.\r
+#\r
+# Calling this script install-sh is preferred over install.sh, to prevent\r
+# `make' implicit rules from creating a file called install from it\r
+# when there is no Makefile.\r
+#\r
+# This script is compatible with the BSD install script, but was written\r
+# from scratch. It can only install one file at a time, a restriction\r
+# shared with many OS's install programs.\r
+\r
+# set DOITPROG to echo to test this script\r
+\r
+# Don't use :- since 4.3BSD and earlier shells don't like it.\r
+doit="${DOITPROG-}"\r
+\r
+# put in absolute paths if you don't have them in your path; or use env. vars.\r
+\r
+mvprog="${MVPROG-mv}"\r
+cpprog="${CPPROG-cp}"\r
+chmodprog="${CHMODPROG-chmod}"\r
+chownprog="${CHOWNPROG-chown}"\r
+chgrpprog="${CHGRPPROG-chgrp}"\r
+stripprog="${STRIPPROG-strip}"\r
+rmprog="${RMPROG-rm}"\r
+mkdirprog="${MKDIRPROG-mkdir}"\r
+\r
+chmodcmd="$chmodprog 0755"\r
+chowncmd=\r
+chgrpcmd=\r
+stripcmd=\r
+rmcmd="$rmprog -f"\r
+mvcmd="$mvprog"\r
+src=\r
+dst=\r
+dir_arg=\r
+dstarg=\r
+no_target_directory=\r
+\r
+usage="Usage: $0 [OPTION]... [-T] SRCFILE DSTFILE\r
+ or: $0 [OPTION]... SRCFILES... DIRECTORY\r
+ or: $0 [OPTION]... -t DIRECTORY SRCFILES...\r
+ or: $0 [OPTION]... -d DIRECTORIES...\r
+\r
+In the 1st form, copy SRCFILE to DSTFILE.\r
+In the 2nd and 3rd, copy all SRCFILES to DIRECTORY.\r
+In the 4th, create DIRECTORIES.\r
+\r
+Options:\r
+-c (ignored)\r
+-d create directories instead of installing files.\r
+-g GROUP $chgrpprog installed files to GROUP.\r
+-m MODE $chmodprog installed files to MODE.\r
+-o USER $chownprog installed files to USER.\r
+-s $stripprog installed files.\r
+-t DIRECTORY install into DIRECTORY.\r
+-T report an error if DSTFILE is a directory.\r
+--help display this help and exit.\r
+--version display version info and exit.\r
+\r
+Environment variables override the default commands:\r
+ CHGRPPROG CHMODPROG CHOWNPROG CPPROG MKDIRPROG MVPROG RMPROG STRIPPROG\r
+"\r
+\r
+while test -n "$1"; do\r
+ case $1 in\r
+ -c) shift\r
+ continue;;\r
+\r
+ -d) dir_arg=true\r
+ shift\r
+ continue;;\r
+\r
+ -g) chgrpcmd="$chgrpprog $2"\r
+ shift\r
+ shift\r
+ continue;;\r
+\r
+ --help) echo "$usage"; exit $?;;\r
+\r
+ -m) chmodcmd="$chmodprog $2"\r
+ shift\r
+ shift\r
+ continue;;\r
+\r
+ -o) chowncmd="$chownprog $2"\r
+ shift\r
+ shift\r
+ continue;;\r
+\r
+ -s) stripcmd=$stripprog\r
+ shift\r
+ continue;;\r
+\r
+ -t) dstarg=$2\r
+ shift\r
+ shift\r
+ continue;;\r
+\r
+ -T) no_target_directory=true\r
+ shift\r
+ continue;;\r
+\r
+ --version) echo "$0 $scriptversion"; exit $?;;\r
+\r
+ *) # When -d is used, all remaining arguments are directories to create.\r
+ # When -t is used, the destination is already specified.\r
+ test -n "$dir_arg$dstarg" && break\r
+ # Otherwise, the last argument is the destination. Remove it from $@.\r
+ for arg\r
+ do\r
+ if test -n "$dstarg"; then\r
+ # $@ is not empty: it contains at least $arg.\r
+ set fnord "$@" "$dstarg"\r
+ shift # fnord\r
+ fi\r
+ shift # arg\r
+ dstarg=$arg\r
+ done\r
+ break;;\r
+ esac\r
+done\r
+\r
+if test -z "$1"; then\r
+ if test -z "$dir_arg"; then\r
+ echo "$0: no input file specified." >&2\r
+ exit 1\r
+ fi\r
+ # It's OK to call `install-sh -d' without argument.\r
+ # This can happen when creating conditional directories.\r
+ exit 0\r
+fi\r
+\r
+for src\r
+do\r
+ # Protect names starting with `-'.\r
+ case $src in\r
+ -*) src=./$src ;;\r
+ esac\r
+\r
+ if test -n "$dir_arg"; then\r
+ dst=$src\r
+ src=\r
+\r
+ if test -d "$dst"; then\r
+ mkdircmd=:\r
+ chmodcmd=\r
+ else\r
+ mkdircmd=$mkdirprog\r
+ fi\r
+ else\r
+ # Waiting for this to be detected by the "$cpprog $src $dsttmp" command\r
+ # might cause directories to be created, which would be especially bad\r
+ # if $src (and thus $dsttmp) contains '*'.\r
+ if test ! -f "$src" && test ! -d "$src"; then\r
+ echo "$0: $src does not exist." >&2\r
+ exit 1\r
+ fi\r
+\r
+ if test -z "$dstarg"; then\r
+ echo "$0: no destination specified." >&2\r
+ exit 1\r
+ fi\r
+\r
+ dst=$dstarg\r
+ # Protect names starting with `-'.\r
+ case $dst in\r
+ -*) dst=./$dst ;;\r
+ esac\r
+\r
+ # If destination is a directory, append the input filename; won't work\r
+ # if double slashes aren't ignored.\r
+ if test -d "$dst"; then\r
+ if test -n "$no_target_directory"; then\r
+ echo "$0: $dstarg: Is a directory" >&2\r
+ exit 1\r
+ fi\r
+ dst=$dst/`basename "$src"`\r
+ fi\r
+ fi\r
+\r
+ # This sed command emulates the dirname command.\r
+ dstdir=`echo "$dst" | sed -e 's,/*$,,;s,[^/]*$,,;s,/*$,,;s,^$,.,'`\r
+\r
+ # Make sure that the destination directory exists.\r
+\r
+ # Skip lots of stat calls in the usual case.\r
+ if test ! -d "$dstdir"; then\r
+ defaultIFS='\r
+ '\r
+ IFS="${IFS-$defaultIFS}"\r
+\r
+ oIFS=$IFS\r
+ # Some sh's can't handle IFS=/ for some reason.\r
+ IFS='%'\r
+ set x `echo "$dstdir" | sed -e 's@/@%@g' -e 's@^%@/@'`\r
+ shift\r
+ IFS=$oIFS\r
+\r
+ pathcomp=\r
+\r
+ while test $# -ne 0 ; do\r
+ pathcomp=$pathcomp$1\r
+ shift\r
+ if test ! -d "$pathcomp"; then\r
+ $mkdirprog "$pathcomp"\r
+ # mkdir can fail with a `File exist' error in case several\r
+ # install-sh are creating the directory concurrently. This\r
+ # is OK.\r
+ test -d "$pathcomp" || exit\r
+ fi\r
+ pathcomp=$pathcomp/\r
+ done\r
+ fi\r
+\r
+ if test -n "$dir_arg"; then\r
+ $doit $mkdircmd "$dst" \\r
+ && { test -z "$chowncmd" || $doit $chowncmd "$dst"; } \\r
+ && { test -z "$chgrpcmd" || $doit $chgrpcmd "$dst"; } \\r
+ && { test -z "$stripcmd" || $doit $stripcmd "$dst"; } \\r
+ && { test -z "$chmodcmd" || $doit $chmodcmd "$dst"; }\r
+\r
+ else\r
+ dstfile=`basename "$dst"`\r
+\r
+ # Make a couple of temp file names in the proper directory.\r
+ dsttmp=$dstdir/_inst.$$_\r
+ rmtmp=$dstdir/_rm.$$_\r
+\r
+ # Trap to clean up those temp files at exit.\r
+ trap 'ret=$?; rm -f "$dsttmp" "$rmtmp" && exit $ret' 0\r
+ trap '(exit $?); exit' 1 2 13 15\r
+\r
+ # Copy the file name to the temp name.\r
+ $doit $cpprog "$src" "$dsttmp" &&\r
+\r
+ # and set any options; do chmod last to preserve setuid bits.\r
+ #\r
+ # If any of these fail, we abort the whole thing. If we want to\r
+ # ignore errors from any of these, just make sure not to ignore\r
+ # errors from the above "$doit $cpprog $src $dsttmp" command.\r
+ #\r
+ { test -z "$chowncmd" || $doit $chowncmd "$dsttmp"; } \\r
+ && { test -z "$chgrpcmd" || $doit $chgrpcmd "$dsttmp"; } \\r
+ && { test -z "$stripcmd" || $doit $stripcmd "$dsttmp"; } \\r
+ && { test -z "$chmodcmd" || $doit $chmodcmd "$dsttmp"; } &&\r
+\r
+ # Now rename the file to the real destination.\r
+ { $doit $mvcmd -f "$dsttmp" "$dstdir/$dstfile" 2>/dev/null \\r
+ || {\r
+ # The rename failed, perhaps because mv can't rename something else\r
+ # to itself, or perhaps because mv is so ancient that it does not\r
+ # support -f.\r
+\r
+ # Now remove or move aside any old file at destination location.\r
+ # We try this two ways since rm can't unlink itself on some\r
+ # systems and the destination file might be busy for other\r
+ # reasons. In this case, the final cleanup might fail but the new\r
+ # file should still install successfully.\r
+ {\r
+ if test -f "$dstdir/$dstfile"; then\r
+ $doit $rmcmd -f "$dstdir/$dstfile" 2>/dev/null \\r
+ || $doit $mvcmd -f "$dstdir/$dstfile" "$rmtmp" 2>/dev/null \\r
+ || {\r
+ echo "$0: cannot unlink or rename $dstdir/$dstfile" >&2\r
+ (exit 1); exit 1\r
+ }\r
+ else\r
+ :\r
+ fi\r
+ } &&\r
+\r
+ # Now rename the file to the real destination.\r
+ $doit $mvcmd "$dsttmp" "$dstdir/$dstfile"\r
+ }\r
+ }\r
+ fi || { (exit 1); exit 1; }\r
+done\r
+\r
+# The final little trick to "correctly" pass the exit status to the exit trap.\r
+{\r
+ (exit 0); exit 0\r
+}\r
+\r
+# Local variables:\r
+# eval: (add-hook 'write-file-hooks 'time-stamp)\r
+# time-stamp-start: "scriptversion="\r
+# time-stamp-format: "%:y-%02m-%02d.%02H"\r
+# time-stamp-end: "$"\r
+# End:\r