forked from python/cpython
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
814842f
commit 01b68fd
Showing
1 changed file
with
119 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,119 @@ | ||
#!/bin/sh | ||
|
||
# | ||
# 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 |