| 1 | #!/bin/sh | 
|---|
| 2 |  | 
|---|
| 3 | # | 
|---|
| 4 | # install - install a program, script, or datafile | 
|---|
| 5 | # This comes from X11R5; it is not part of GNU. | 
|---|
| 6 | # | 
|---|
| 7 | # $XConsortium: install.sh,v 1.2 89/12/18 14:47:22 jim Exp $ | 
|---|
| 8 | # | 
|---|
| 9 | # This script is compatible with the BSD install script, but was written | 
|---|
| 10 | # from scratch. | 
|---|
| 11 | # | 
|---|
| 12 |  | 
|---|
| 13 |  | 
|---|
| 14 | # set DOITPROG to echo to test this script | 
|---|
| 15 |  | 
|---|
| 16 | # Don't use :- since 4.3BSD and earlier shells don't like it. | 
|---|
| 17 | doit="${DOITPROG-}" | 
|---|
| 18 |  | 
|---|
| 19 |  | 
|---|
| 20 | # put in absolute paths if you don't have them in your path; or use env. vars. | 
|---|
| 21 |  | 
|---|
| 22 | mvprog="${MVPROG-mv}" | 
|---|
| 23 | cpprog="${CPPROG-cp}" | 
|---|
| 24 | chmodprog="${CHMODPROG-chmod}" | 
|---|
| 25 | chownprog="${CHOWNPROG-chown}" | 
|---|
| 26 | chgrpprog="${CHGRPPROG-chgrp}" | 
|---|
| 27 | stripprog="${STRIPPROG-strip}" | 
|---|
| 28 | rmprog="${RMPROG-rm}" | 
|---|
| 29 |  | 
|---|
| 30 | instcmd="$mvprog" | 
|---|
| 31 | chmodcmd="" | 
|---|
| 32 | chowncmd="" | 
|---|
| 33 | chgrpcmd="" | 
|---|
| 34 | stripcmd="" | 
|---|
| 35 | rmcmd="$rmprog -f" | 
|---|
| 36 | mvcmd="$mvprog" | 
|---|
| 37 | src="" | 
|---|
| 38 | dst="" | 
|---|
| 39 |  | 
|---|
| 40 | while [ x"$1" != x ]; do | 
|---|
| 41 |     case $1 in | 
|---|
| 42 |         -c) instcmd="$cpprog" | 
|---|
| 43 |             shift | 
|---|
| 44 |             continue;; | 
|---|
| 45 |  | 
|---|
| 46 |         -m) chmodcmd="$chmodprog $2" | 
|---|
| 47 |             shift | 
|---|
| 48 |             shift | 
|---|
| 49 |             continue;; | 
|---|
| 50 |  | 
|---|
| 51 |         -o) chowncmd="$chownprog $2" | 
|---|
| 52 |             shift | 
|---|
| 53 |             shift | 
|---|
| 54 |             continue;; | 
|---|
| 55 |  | 
|---|
| 56 |         -g) chgrpcmd="$chgrpprog $2" | 
|---|
| 57 |             shift | 
|---|
| 58 |             shift | 
|---|
| 59 |             continue;; | 
|---|
| 60 |  | 
|---|
| 61 |         -s) stripcmd="$stripprog" | 
|---|
| 62 |             shift | 
|---|
| 63 |             continue;; | 
|---|
| 64 |  | 
|---|
| 65 |         -S) stripcmd="$stripprog $2" | 
|---|
| 66 |             shift | 
|---|
| 67 |             shift | 
|---|
| 68 |             continue;; | 
|---|
| 69 |  | 
|---|
| 70 |         *)  if [ x"$src" = x ] | 
|---|
| 71 |             then | 
|---|
| 72 |                 src=$1 | 
|---|
| 73 |             else | 
|---|
| 74 |                 dst=$1 | 
|---|
| 75 |             fi | 
|---|
| 76 |             shift | 
|---|
| 77 |             continue;; | 
|---|
| 78 |     esac | 
|---|
| 79 | done | 
|---|
| 80 |  | 
|---|
| 81 | if [ x"$src" = x ] | 
|---|
| 82 | then | 
|---|
| 83 |         echo "install:  no input file specified" | 
|---|
| 84 |         exit 1 | 
|---|
| 85 | fi | 
|---|
| 86 |  | 
|---|
| 87 | if [ x"$dst" = x ] | 
|---|
| 88 | then | 
|---|
| 89 |         echo "install:  no destination specified" | 
|---|
| 90 |         exit 1 | 
|---|
| 91 | fi | 
|---|
| 92 |  | 
|---|
| 93 |  | 
|---|
| 94 | # If destination is a directory, append the input filename; if your system | 
|---|
| 95 | # does not like double slashes in filenames, you may need to add some logic | 
|---|
| 96 |  | 
|---|
| 97 | if [ -d "$dst" ] | 
|---|
| 98 | then | 
|---|
| 99 |         dst="$dst/`basename "$src"`" | 
|---|
| 100 | fi | 
|---|
| 101 |  | 
|---|
| 102 | # Make a temp file name in the proper directory. | 
|---|
| 103 |  | 
|---|
| 104 | dstdir="`dirname "$dst"`" | 
|---|
| 105 | dsttmp="$dstdir"/#inst.$$# | 
|---|
| 106 |  | 
|---|
| 107 | # Move or copy the file name to the temp name | 
|---|
| 108 |  | 
|---|
| 109 | $doit $instcmd "$src" "$dsttmp" | 
|---|
| 110 |  | 
|---|
| 111 | # and set any options; do chmod last to preserve setuid bits | 
|---|
| 112 |  | 
|---|
| 113 | if [ x"$chowncmd" != x ]; then $doit $chowncmd "$dsttmp"; fi | 
|---|
| 114 | if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd "$dsttmp"; fi | 
|---|
| 115 | if [ x"$stripcmd" != x ]; then $doit $stripcmd "$dsttmp"; fi | 
|---|
| 116 | if [ x"$chmodcmd" != x ]; then $doit $chmodcmd "$dsttmp"; fi | 
|---|
| 117 |  | 
|---|
| 118 | # Now rename the file to the real destination. | 
|---|
| 119 |  | 
|---|
| 120 | $doit $rmcmd "$dst" | 
|---|
| 121 | $doit $mvcmd "$dsttmp" "$dst" | 
|---|
| 122 |  | 
|---|
| 123 |  | 
|---|
| 124 | exit 0 | 
|---|