annotate install-sh @ 35160:75a8ca0bdd1d

(ansi-color-process-output): Use markers instead of positions for start and end of region. (ansi-color-apply-on-region): Rewrote code to make it more robust. Previously, occasional mistakes happend when fontifying many chunks of output (eg. ls --color=yes /dev). This happened whenever an overlay was created up to the end of the region, which coincided with the process-mark. New text would then be added within that overlay instead of after it. (ansi-color-make-extent): Overlays are created with the property `modification-hooks' set to '(ansi-color-freeze-overlay). (ansi-color-freeze-overlay): New function. When inserting text at the end of the overlay, the overlay will resize. (ansi-color-process-output): Doc change. (ansi-color-unfontify-region): Doc change. No longer installed automatically in font-lock-unfontify-region-function. (ansi-color-apply): Doc change. (ansi-color-apply-on-region): Use extents or overlays instead of text-properties. (ansi-color-make-extent): New function. (ansi-color-set-extent-face): New function. (ansi-color-process): Removed, Emacs and XEmacs both use ansi-color-process-output, now. (ansi-color-process-output): Doesn't return string anymore. It is installed in comint-output-filter-functions for both Emacs and XEmacs, now. (ansi-color-unfontify-region): Simplified code removing variables pos and start-ansi. (ansi-color-apply): Put text-property ansi-color before putting text-property face because ansi-color-unfontify-region is called immediately after the call to put-text-property. (ansi-color-context-region): Doc change. (ansi-color-filter-region): Simplified code. (ansi-color-apply-on-region): Changed start to start-marker, using a marker explicitly. Put text-property ansi-color before putting text-property face because ansi-color-unfontify-region is called immediately after the call to put-text-property. (ansi-color-faces-vector): Doc change. (ansi-color-for-comint-mode): Changed :type property to choice. (ansi-color-last-context): Removed. (ansi-color-process-output): Don't use ansi-color-last-context, as the main functions will store their context now. (ansi-color-context): Doc change. (ansi-color-filter-apply): Rewrote it based on ansi-color-apply. Uses ansi-color-context such that repeated calls will strip partial escape sequences, too. (ansi-color-apply): Simplified code. Colorize end of string if face is not null. Store context in new (FACE STRING) format, such that repeated calls will strip partial escape sequences, too. Append faces to face property using ansi-color-apply-sequence such that cumulative mode actually works. (ansi-color-context-region): New variable. (ansi-color-filter-region): Rewrote it based on ansi-color-apply-on-region. Uses ansi-color-context-region such that repeated calls will strip partial escape sequences, too. (ansi-color-apply-on-region): Simplified code. Colorize end of region if face is not null. Store context in new (FACE POS) format, such that repeated calls will strip partial escape sequences, too. Append faces to face property using ansi-color-apply-sequence such that cumulative mode actually works. (ansi-color-apply-sequence): New function. (ansi-color-get-face): When the default face is added to the list of faces, all previous settings are discarded and the list of faces is set to '(default). (ansi-color-faces-vector): Use nil for the default face, such that ansi-color-apply and ansi-color-apply-on-region will do the right thing. (ansi-color-apply): Do the right thing, ie. if ansi-color-get-face returns nil, set the list of faces back to nil instead of appending the result of ansi-color-get-face to the front of the list. (ansi-color-for-comint-mode): Doc change. (ansi-color-process): Doc change. (ansi-color-last-context): New buffer-local variable. (ansi-color-process-output): New function. It is automatically added to comint-output-filter-functions if this is XEmacs. (ansi-color-unfontify-region): New optional parameter for XEmacs compatibility. Check wether font-lock-syntactic-keywords is boundp before removing the syntax table text property, as XEmacs doesn't have it. (ansi-color-filter-region): Doc change. (ansi-color-apply-on-region): Doc change. (ansi-color-make-face): New function. Compatibility layer for XEmacs. Return temporary faces instead of cons cells for XEmacs. (ansi-color-make-color-map): Use ansi-color-make-face. (ansi-color-get-face): Avoid face text property '(nil) as results in an errow for XEmacs. (ansi-color-unfontify-region): New function. Uses text-property ansi-color in order to preserve fontification by ansi-color. When the package is loaded, a lambda expression is put onto font-lock-mode-hook. This lambda expression will check font-lock-unfontify-region-function and replace font-lock-default-unfontify-region with ansi-color-unfontify-region. (ansi-color-apply): Add text-property ansi-color in addition to text-property face. (ansi-color-apply-on-region): Add text-property ansi-color in addition to text-property face. (save-buffer-state): Copy of the macro that is also used by lazy-lock and font-lock. (ansi-color-for-comint-mode): New option. (ansi-color-for-comint-mode-on): Set ansi-color-for-comint-mode. (ansi-color-for-comint-mode-off): Ditto. (ansi-color-for-comint-mode-filter): Ditto. (ansi-color-process): New function. Uses ansi-color-for-comint-mode to decide what to do. This function is added to comint-preoutput-filter-functions when the package is loaded. (ansi-color-for-shell-mode-set): Removed. (ansi-color-for-shell-mode): Removed. (ansi-color-for-shell-mode-set): New function with the lambda expression from the ansi-color-for-shell-mode :set property. Additionally, modify shell-mode-hook to enable or disable font-lock-mode for future shell buffers. (ansi-color-for-shell-mode): The :set property calls ansi-color-for-shell-mode-set instead of a lambda expression. (ansi-color-for-shell-mode): Doc change. (ansi-color-context): New variable. (ansi-color-apply): Save context between calls.
author Gerd Moellmann <gerd@gnu.org>
date Tue, 09 Jan 2001 11:38:28 +0000
parents 35064c2e86d7
children 23a1cea22d13
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
25978
Dave Love <fx@gnu.org>
parents:
diff changeset
1 #! /bin/sh
Dave Love <fx@gnu.org>
parents:
diff changeset
2 #
Dave Love <fx@gnu.org>
parents:
diff changeset
3 # install - install a program, script, or datafile
Dave Love <fx@gnu.org>
parents:
diff changeset
4 # This comes from X11R5 (mit/util/scripts/install.sh).
Dave Love <fx@gnu.org>
parents:
diff changeset
5 #
Dave Love <fx@gnu.org>
parents:
diff changeset
6 # Copyright 1991 by the Massachusetts Institute of Technology
Dave Love <fx@gnu.org>
parents:
diff changeset
7 #
Dave Love <fx@gnu.org>
parents:
diff changeset
8 # Permission to use, copy, modify, distribute, and sell this software and its
Dave Love <fx@gnu.org>
parents:
diff changeset
9 # documentation for any purpose is hereby granted without fee, provided that
Dave Love <fx@gnu.org>
parents:
diff changeset
10 # the above copyright notice appear in all copies and that both that
Dave Love <fx@gnu.org>
parents:
diff changeset
11 # copyright notice and this permission notice appear in supporting
Dave Love <fx@gnu.org>
parents:
diff changeset
12 # documentation, and that the name of M.I.T. not be used in advertising or
Dave Love <fx@gnu.org>
parents:
diff changeset
13 # publicity pertaining to distribution of the software without specific,
Dave Love <fx@gnu.org>
parents:
diff changeset
14 # written prior permission. M.I.T. makes no representations about the
Dave Love <fx@gnu.org>
parents:
diff changeset
15 # suitability of this software for any purpose. It is provided "as is"
Dave Love <fx@gnu.org>
parents:
diff changeset
16 # without express or implied warranty.
Dave Love <fx@gnu.org>
parents:
diff changeset
17 #
Dave Love <fx@gnu.org>
parents:
diff changeset
18 # Calling this script install-sh is preferred over install.sh, to prevent
Dave Love <fx@gnu.org>
parents:
diff changeset
19 # `make' implicit rules from creating a file called install from it
Dave Love <fx@gnu.org>
parents:
diff changeset
20 # when there is no Makefile.
Dave Love <fx@gnu.org>
parents:
diff changeset
21 #
Dave Love <fx@gnu.org>
parents:
diff changeset
22 # This script is compatible with the BSD install script, but was written
Dave Love <fx@gnu.org>
parents:
diff changeset
23 # from scratch. It can only install one file at a time, a restriction
Dave Love <fx@gnu.org>
parents:
diff changeset
24 # shared with many OS's install programs.
Dave Love <fx@gnu.org>
parents:
diff changeset
25
Dave Love <fx@gnu.org>
parents:
diff changeset
26
Dave Love <fx@gnu.org>
parents:
diff changeset
27 # set DOITPROG to echo to test this script
Dave Love <fx@gnu.org>
parents:
diff changeset
28
Dave Love <fx@gnu.org>
parents:
diff changeset
29 # Don't use :- since 4.3BSD and earlier shells don't like it.
Dave Love <fx@gnu.org>
parents:
diff changeset
30 doit="${DOITPROG-}"
Dave Love <fx@gnu.org>
parents:
diff changeset
31
Dave Love <fx@gnu.org>
parents:
diff changeset
32
Dave Love <fx@gnu.org>
parents:
diff changeset
33 # put in absolute paths if you don't have them in your path; or use env. vars.
Dave Love <fx@gnu.org>
parents:
diff changeset
34
Dave Love <fx@gnu.org>
parents:
diff changeset
35 mvprog="${MVPROG-mv}"
Dave Love <fx@gnu.org>
parents:
diff changeset
36 cpprog="${CPPROG-cp}"
Dave Love <fx@gnu.org>
parents:
diff changeset
37 chmodprog="${CHMODPROG-chmod}"
Dave Love <fx@gnu.org>
parents:
diff changeset
38 chownprog="${CHOWNPROG-chown}"
Dave Love <fx@gnu.org>
parents:
diff changeset
39 chgrpprog="${CHGRPPROG-chgrp}"
Dave Love <fx@gnu.org>
parents:
diff changeset
40 stripprog="${STRIPPROG-strip}"
Dave Love <fx@gnu.org>
parents:
diff changeset
41 rmprog="${RMPROG-rm}"
Dave Love <fx@gnu.org>
parents:
diff changeset
42 mkdirprog="${MKDIRPROG-mkdir}"
Dave Love <fx@gnu.org>
parents:
diff changeset
43
Dave Love <fx@gnu.org>
parents:
diff changeset
44 transformbasename=""
Dave Love <fx@gnu.org>
parents:
diff changeset
45 transform_arg=""
Dave Love <fx@gnu.org>
parents:
diff changeset
46 instcmd="$mvprog"
Dave Love <fx@gnu.org>
parents:
diff changeset
47 chmodcmd="$chmodprog 0755"
Dave Love <fx@gnu.org>
parents:
diff changeset
48 chowncmd=""
Dave Love <fx@gnu.org>
parents:
diff changeset
49 chgrpcmd=""
Dave Love <fx@gnu.org>
parents:
diff changeset
50 stripcmd=""
Dave Love <fx@gnu.org>
parents:
diff changeset
51 rmcmd="$rmprog -f"
Dave Love <fx@gnu.org>
parents:
diff changeset
52 mvcmd="$mvprog"
Dave Love <fx@gnu.org>
parents:
diff changeset
53 src=""
Dave Love <fx@gnu.org>
parents:
diff changeset
54 dst=""
Dave Love <fx@gnu.org>
parents:
diff changeset
55 dir_arg=""
Dave Love <fx@gnu.org>
parents:
diff changeset
56
Dave Love <fx@gnu.org>
parents:
diff changeset
57 while [ x"$1" != x ]; do
Dave Love <fx@gnu.org>
parents:
diff changeset
58 case $1 in
Dave Love <fx@gnu.org>
parents:
diff changeset
59 -c) instcmd="$cpprog"
Dave Love <fx@gnu.org>
parents:
diff changeset
60 shift
Dave Love <fx@gnu.org>
parents:
diff changeset
61 continue;;
Dave Love <fx@gnu.org>
parents:
diff changeset
62
Dave Love <fx@gnu.org>
parents:
diff changeset
63 -d) dir_arg=true
Dave Love <fx@gnu.org>
parents:
diff changeset
64 shift
Dave Love <fx@gnu.org>
parents:
diff changeset
65 continue;;
Dave Love <fx@gnu.org>
parents:
diff changeset
66
Dave Love <fx@gnu.org>
parents:
diff changeset
67 -m) chmodcmd="$chmodprog $2"
Dave Love <fx@gnu.org>
parents:
diff changeset
68 shift
Dave Love <fx@gnu.org>
parents:
diff changeset
69 shift
Dave Love <fx@gnu.org>
parents:
diff changeset
70 continue;;
Dave Love <fx@gnu.org>
parents:
diff changeset
71
Dave Love <fx@gnu.org>
parents:
diff changeset
72 -o) chowncmd="$chownprog $2"
Dave Love <fx@gnu.org>
parents:
diff changeset
73 shift
Dave Love <fx@gnu.org>
parents:
diff changeset
74 shift
Dave Love <fx@gnu.org>
parents:
diff changeset
75 continue;;
Dave Love <fx@gnu.org>
parents:
diff changeset
76
Dave Love <fx@gnu.org>
parents:
diff changeset
77 -g) chgrpcmd="$chgrpprog $2"
Dave Love <fx@gnu.org>
parents:
diff changeset
78 shift
Dave Love <fx@gnu.org>
parents:
diff changeset
79 shift
Dave Love <fx@gnu.org>
parents:
diff changeset
80 continue;;
Dave Love <fx@gnu.org>
parents:
diff changeset
81
Dave Love <fx@gnu.org>
parents:
diff changeset
82 -s) stripcmd="$stripprog"
Dave Love <fx@gnu.org>
parents:
diff changeset
83 shift
Dave Love <fx@gnu.org>
parents:
diff changeset
84 continue;;
Dave Love <fx@gnu.org>
parents:
diff changeset
85
Dave Love <fx@gnu.org>
parents:
diff changeset
86 -t=*) transformarg=`echo $1 | sed 's/-t=//'`
Dave Love <fx@gnu.org>
parents:
diff changeset
87 shift
Dave Love <fx@gnu.org>
parents:
diff changeset
88 continue;;
Dave Love <fx@gnu.org>
parents:
diff changeset
89
Dave Love <fx@gnu.org>
parents:
diff changeset
90 -b=*) transformbasename=`echo $1 | sed 's/-b=//'`
Dave Love <fx@gnu.org>
parents:
diff changeset
91 shift
Dave Love <fx@gnu.org>
parents:
diff changeset
92 continue;;
Dave Love <fx@gnu.org>
parents:
diff changeset
93
Dave Love <fx@gnu.org>
parents:
diff changeset
94 *) if [ x"$src" = x ]
Dave Love <fx@gnu.org>
parents:
diff changeset
95 then
Dave Love <fx@gnu.org>
parents:
diff changeset
96 src=$1
Dave Love <fx@gnu.org>
parents:
diff changeset
97 else
Dave Love <fx@gnu.org>
parents:
diff changeset
98 # this colon is to work around a 386BSD /bin/sh bug
Dave Love <fx@gnu.org>
parents:
diff changeset
99 :
Dave Love <fx@gnu.org>
parents:
diff changeset
100 dst=$1
Dave Love <fx@gnu.org>
parents:
diff changeset
101 fi
Dave Love <fx@gnu.org>
parents:
diff changeset
102 shift
Dave Love <fx@gnu.org>
parents:
diff changeset
103 continue;;
Dave Love <fx@gnu.org>
parents:
diff changeset
104 esac
Dave Love <fx@gnu.org>
parents:
diff changeset
105 done
Dave Love <fx@gnu.org>
parents:
diff changeset
106
Dave Love <fx@gnu.org>
parents:
diff changeset
107 if [ x"$src" = x ]
Dave Love <fx@gnu.org>
parents:
diff changeset
108 then
Dave Love <fx@gnu.org>
parents:
diff changeset
109 echo "install: no input file specified"
Dave Love <fx@gnu.org>
parents:
diff changeset
110 exit 1
Dave Love <fx@gnu.org>
parents:
diff changeset
111 else
Dave Love <fx@gnu.org>
parents:
diff changeset
112 true
Dave Love <fx@gnu.org>
parents:
diff changeset
113 fi
Dave Love <fx@gnu.org>
parents:
diff changeset
114
Dave Love <fx@gnu.org>
parents:
diff changeset
115 if [ x"$dir_arg" != x ]; then
Dave Love <fx@gnu.org>
parents:
diff changeset
116 dst=$src
Dave Love <fx@gnu.org>
parents:
diff changeset
117 src=""
Dave Love <fx@gnu.org>
parents:
diff changeset
118
Dave Love <fx@gnu.org>
parents:
diff changeset
119 if [ -d $dst ]; then
Dave Love <fx@gnu.org>
parents:
diff changeset
120 instcmd=:
Dave Love <fx@gnu.org>
parents:
diff changeset
121 else
Dave Love <fx@gnu.org>
parents:
diff changeset
122 instcmd=mkdir
Dave Love <fx@gnu.org>
parents:
diff changeset
123 fi
Dave Love <fx@gnu.org>
parents:
diff changeset
124 else
Dave Love <fx@gnu.org>
parents:
diff changeset
125
Dave Love <fx@gnu.org>
parents:
diff changeset
126 # Waiting for this to be detected by the "$instcmd $src $dsttmp" command
Dave Love <fx@gnu.org>
parents:
diff changeset
127 # might cause directories to be created, which would be especially bad
Dave Love <fx@gnu.org>
parents:
diff changeset
128 # if $src (and thus $dsttmp) contains '*'.
Dave Love <fx@gnu.org>
parents:
diff changeset
129
Dave Love <fx@gnu.org>
parents:
diff changeset
130 if [ -f $src -o -d $src ]
Dave Love <fx@gnu.org>
parents:
diff changeset
131 then
Dave Love <fx@gnu.org>
parents:
diff changeset
132 true
Dave Love <fx@gnu.org>
parents:
diff changeset
133 else
Dave Love <fx@gnu.org>
parents:
diff changeset
134 echo "install: $src does not exist"
Dave Love <fx@gnu.org>
parents:
diff changeset
135 exit 1
Dave Love <fx@gnu.org>
parents:
diff changeset
136 fi
Dave Love <fx@gnu.org>
parents:
diff changeset
137
Dave Love <fx@gnu.org>
parents:
diff changeset
138 if [ x"$dst" = x ]
Dave Love <fx@gnu.org>
parents:
diff changeset
139 then
Dave Love <fx@gnu.org>
parents:
diff changeset
140 echo "install: no destination specified"
Dave Love <fx@gnu.org>
parents:
diff changeset
141 exit 1
Dave Love <fx@gnu.org>
parents:
diff changeset
142 else
Dave Love <fx@gnu.org>
parents:
diff changeset
143 true
Dave Love <fx@gnu.org>
parents:
diff changeset
144 fi
Dave Love <fx@gnu.org>
parents:
diff changeset
145
Dave Love <fx@gnu.org>
parents:
diff changeset
146 # If destination is a directory, append the input filename; if your system
Dave Love <fx@gnu.org>
parents:
diff changeset
147 # does not like double slashes in filenames, you may need to add some logic
Dave Love <fx@gnu.org>
parents:
diff changeset
148
Dave Love <fx@gnu.org>
parents:
diff changeset
149 if [ -d $dst ]
Dave Love <fx@gnu.org>
parents:
diff changeset
150 then
Dave Love <fx@gnu.org>
parents:
diff changeset
151 dst="$dst"/`basename $src`
Dave Love <fx@gnu.org>
parents:
diff changeset
152 else
Dave Love <fx@gnu.org>
parents:
diff changeset
153 true
Dave Love <fx@gnu.org>
parents:
diff changeset
154 fi
Dave Love <fx@gnu.org>
parents:
diff changeset
155 fi
Dave Love <fx@gnu.org>
parents:
diff changeset
156
Dave Love <fx@gnu.org>
parents:
diff changeset
157 ## this sed command emulates the dirname command
Dave Love <fx@gnu.org>
parents:
diff changeset
158 dstdir=`echo $dst | sed -e 's,[^/]*$,,;s,/$,,;s,^$,.,'`
Dave Love <fx@gnu.org>
parents:
diff changeset
159
Dave Love <fx@gnu.org>
parents:
diff changeset
160 # Make sure that the destination directory exists.
Dave Love <fx@gnu.org>
parents:
diff changeset
161 # this part is taken from Noah Friedman's mkinstalldirs script
Dave Love <fx@gnu.org>
parents:
diff changeset
162
Dave Love <fx@gnu.org>
parents:
diff changeset
163 # Skip lots of stat calls in the usual case.
Dave Love <fx@gnu.org>
parents:
diff changeset
164 if [ ! -d "$dstdir" ]; then
Dave Love <fx@gnu.org>
parents:
diff changeset
165 defaultIFS='
Dave Love <fx@gnu.org>
parents:
diff changeset
166 '
Dave Love <fx@gnu.org>
parents:
diff changeset
167 IFS="${IFS-${defaultIFS}}"
Dave Love <fx@gnu.org>
parents:
diff changeset
168
Dave Love <fx@gnu.org>
parents:
diff changeset
169 oIFS="${IFS}"
Dave Love <fx@gnu.org>
parents:
diff changeset
170 # Some sh's can't handle IFS=/ for some reason.
Dave Love <fx@gnu.org>
parents:
diff changeset
171 IFS='%'
Dave Love <fx@gnu.org>
parents:
diff changeset
172 set - `echo ${dstdir} | sed -e 's@/@%@g' -e 's@^%@/@'`
Dave Love <fx@gnu.org>
parents:
diff changeset
173 IFS="${oIFS}"
Dave Love <fx@gnu.org>
parents:
diff changeset
174
Dave Love <fx@gnu.org>
parents:
diff changeset
175 pathcomp=''
Dave Love <fx@gnu.org>
parents:
diff changeset
176
Dave Love <fx@gnu.org>
parents:
diff changeset
177 while [ $# -ne 0 ] ; do
Dave Love <fx@gnu.org>
parents:
diff changeset
178 pathcomp="${pathcomp}${1}"
Dave Love <fx@gnu.org>
parents:
diff changeset
179 shift
Dave Love <fx@gnu.org>
parents:
diff changeset
180
Dave Love <fx@gnu.org>
parents:
diff changeset
181 if [ ! -d "${pathcomp}" ] ;
Dave Love <fx@gnu.org>
parents:
diff changeset
182 then
Dave Love <fx@gnu.org>
parents:
diff changeset
183 $mkdirprog "${pathcomp}"
Dave Love <fx@gnu.org>
parents:
diff changeset
184 else
Dave Love <fx@gnu.org>
parents:
diff changeset
185 true
Dave Love <fx@gnu.org>
parents:
diff changeset
186 fi
Dave Love <fx@gnu.org>
parents:
diff changeset
187
Dave Love <fx@gnu.org>
parents:
diff changeset
188 pathcomp="${pathcomp}/"
Dave Love <fx@gnu.org>
parents:
diff changeset
189 done
Dave Love <fx@gnu.org>
parents:
diff changeset
190 fi
Dave Love <fx@gnu.org>
parents:
diff changeset
191
Dave Love <fx@gnu.org>
parents:
diff changeset
192 if [ x"$dir_arg" != x ]
Dave Love <fx@gnu.org>
parents:
diff changeset
193 then
Dave Love <fx@gnu.org>
parents:
diff changeset
194 $doit $instcmd $dst &&
Dave Love <fx@gnu.org>
parents:
diff changeset
195
Dave Love <fx@gnu.org>
parents:
diff changeset
196 if [ x"$chowncmd" != x ]; then $doit $chowncmd $dst; else true ; fi &&
Dave Love <fx@gnu.org>
parents:
diff changeset
197 if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd $dst; else true ; fi &&
Dave Love <fx@gnu.org>
parents:
diff changeset
198 if [ x"$stripcmd" != x ]; then $doit $stripcmd $dst; else true ; fi &&
Dave Love <fx@gnu.org>
parents:
diff changeset
199 if [ x"$chmodcmd" != x ]; then $doit $chmodcmd $dst; else true ; fi
Dave Love <fx@gnu.org>
parents:
diff changeset
200 else
Dave Love <fx@gnu.org>
parents:
diff changeset
201
Dave Love <fx@gnu.org>
parents:
diff changeset
202 # If we're going to rename the final executable, determine the name now.
Dave Love <fx@gnu.org>
parents:
diff changeset
203
Dave Love <fx@gnu.org>
parents:
diff changeset
204 if [ x"$transformarg" = x ]
Dave Love <fx@gnu.org>
parents:
diff changeset
205 then
Dave Love <fx@gnu.org>
parents:
diff changeset
206 dstfile=`basename $dst`
Dave Love <fx@gnu.org>
parents:
diff changeset
207 else
Dave Love <fx@gnu.org>
parents:
diff changeset
208 dstfile=`basename $dst $transformbasename |
Dave Love <fx@gnu.org>
parents:
diff changeset
209 sed $transformarg`$transformbasename
Dave Love <fx@gnu.org>
parents:
diff changeset
210 fi
Dave Love <fx@gnu.org>
parents:
diff changeset
211
Dave Love <fx@gnu.org>
parents:
diff changeset
212 # don't allow the sed command to completely eliminate the filename
Dave Love <fx@gnu.org>
parents:
diff changeset
213
Dave Love <fx@gnu.org>
parents:
diff changeset
214 if [ x"$dstfile" = x ]
Dave Love <fx@gnu.org>
parents:
diff changeset
215 then
Dave Love <fx@gnu.org>
parents:
diff changeset
216 dstfile=`basename $dst`
Dave Love <fx@gnu.org>
parents:
diff changeset
217 else
Dave Love <fx@gnu.org>
parents:
diff changeset
218 true
Dave Love <fx@gnu.org>
parents:
diff changeset
219 fi
Dave Love <fx@gnu.org>
parents:
diff changeset
220
Dave Love <fx@gnu.org>
parents:
diff changeset
221 # Make a temp file name in the proper directory.
Dave Love <fx@gnu.org>
parents:
diff changeset
222
Dave Love <fx@gnu.org>
parents:
diff changeset
223 dsttmp=$dstdir/#inst.$$#
Dave Love <fx@gnu.org>
parents:
diff changeset
224
Dave Love <fx@gnu.org>
parents:
diff changeset
225 # Move or copy the file name to the temp name
Dave Love <fx@gnu.org>
parents:
diff changeset
226
Dave Love <fx@gnu.org>
parents:
diff changeset
227 $doit $instcmd $src $dsttmp &&
Dave Love <fx@gnu.org>
parents:
diff changeset
228
Dave Love <fx@gnu.org>
parents:
diff changeset
229 trap "rm -f ${dsttmp}" 0 &&
Dave Love <fx@gnu.org>
parents:
diff changeset
230
Dave Love <fx@gnu.org>
parents:
diff changeset
231 # and set any options; do chmod last to preserve setuid bits
Dave Love <fx@gnu.org>
parents:
diff changeset
232
Dave Love <fx@gnu.org>
parents:
diff changeset
233 # If any of these fail, we abort the whole thing. If we want to
Dave Love <fx@gnu.org>
parents:
diff changeset
234 # ignore errors from any of these, just make sure not to ignore
Dave Love <fx@gnu.org>
parents:
diff changeset
235 # errors from the above "$doit $instcmd $src $dsttmp" command.
Dave Love <fx@gnu.org>
parents:
diff changeset
236
Dave Love <fx@gnu.org>
parents:
diff changeset
237 if [ x"$chowncmd" != x ]; then $doit $chowncmd $dsttmp; else true;fi &&
Dave Love <fx@gnu.org>
parents:
diff changeset
238 if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd $dsttmp; else true;fi &&
Dave Love <fx@gnu.org>
parents:
diff changeset
239 if [ x"$stripcmd" != x ]; then $doit $stripcmd $dsttmp; else true;fi &&
Dave Love <fx@gnu.org>
parents:
diff changeset
240 if [ x"$chmodcmd" != x ]; then $doit $chmodcmd $dsttmp; else true;fi &&
Dave Love <fx@gnu.org>
parents:
diff changeset
241
Dave Love <fx@gnu.org>
parents:
diff changeset
242 # Now rename the file to the real destination.
Dave Love <fx@gnu.org>
parents:
diff changeset
243
Dave Love <fx@gnu.org>
parents:
diff changeset
244 $doit $rmcmd -f $dstdir/$dstfile &&
Dave Love <fx@gnu.org>
parents:
diff changeset
245 $doit $mvcmd $dsttmp $dstdir/$dstfile
Dave Love <fx@gnu.org>
parents:
diff changeset
246
Dave Love <fx@gnu.org>
parents:
diff changeset
247 fi &&
Dave Love <fx@gnu.org>
parents:
diff changeset
248
Dave Love <fx@gnu.org>
parents:
diff changeset
249
Dave Love <fx@gnu.org>
parents:
diff changeset
250 exit 0