annotate install-sh @ 4566:6403c94de50d legacy-trunk

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