|
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 *) if [ x"$src" = x ] |
|
66 then |
|
67 src=$1 |
|
68 else |
|
69 dst=$1 |
|
70 fi |
|
71 shift |
|
72 continue;; |
|
73 esac |
|
74 done |
|
75 |
|
76 if [ x"$src" = x ] |
|
77 then |
|
78 echo "install: no input file specified" |
|
79 exit 1 |
|
80 fi |
|
81 |
|
82 if [ x"$dst" = x ] |
|
83 then |
|
84 echo "install: no destination specified" |
|
85 exit 1 |
|
86 fi |
|
87 |
|
88 |
|
89 # If destination is a directory, append the input filename; if your system |
|
90 # does not like double slashes in filenames, you may need to add some logic |
|
91 |
|
92 if [ -d $dst ] |
|
93 then |
|
94 dst="$dst"/`basename $src` |
|
95 fi |
|
96 |
|
97 # Make a temp file name in the proper directory. |
|
98 |
|
99 dstdir=`dirname $dst` |
|
100 dsttmp=$dstdir/#inst.$$# |
|
101 |
|
102 # Move or copy the file name to the temp name |
|
103 |
|
104 $doit $instcmd $src $dsttmp |
|
105 |
|
106 # and set any options; do chmod last to preserve setuid bits |
|
107 |
|
108 if [ x"$chowncmd" != x ]; then $doit $chowncmd $dsttmp; fi |
|
109 if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd $dsttmp; fi |
|
110 if [ x"$stripcmd" != x ]; then $doit $stripcmd $dsttmp; fi |
|
111 if [ x"$chmodcmd" != x ]; then $doit $chmodcmd $dsttmp; fi |
|
112 |
|
113 # Now rename the file to the real destination. |
|
114 |
|
115 $doit $rmcmd $dst |
|
116 $doit $mvcmd $dsttmp $dst |
|
117 |
|
118 |
|
119 exit 0 |