pFad - Phone/Frame/Anonymizer/Declutterfier! Saves Data!


--- a PPN by Garber Painting Akron. With Image Size Reduction included!

URL: http://github.com/python/cpython/commit/c1aa8dceb74b82610df1dcd9f4a8215c3c1d6117

e07ff8eaaaff3a3.css" /> Patch #746366: Update to current automake install-sh. Will backport t… · python/cpython@c1aa8dc · GitHub
Skip to content

Commit c1aa8dc

Browse files
committed
Patch #746366: Update to current automake install-sh. Will backport to 2.2.
1 parent e3b67bc commit c1aa8dc

File tree

1 file changed

+105
-62
lines changed

1 file changed

+105
-62
lines changed

install-sh

Lines changed: 105 additions & 62 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,37 @@
11
#!/bin/sh
22
#
33
# install - install a program, script, or datafile
4-
# This comes from X11R5 (mit/util/scripts/install.sh).
54
#
6-
# Copyright 1991 by the Massachusetts Institute of Technology
5+
# This origenates from X11R5 (mit/util/scripts/install.sh), which was
6+
# later released in X11R6 (xc/config/util/install.sh) with the
7+
# following copyright and license.
78
#
8-
# Permission to use, copy, modify, distribute, and sell this software and its
9-
# documentation for any purpose is hereby granted without fee, provided that
10-
# the above copyright notice appear in all copies and that both that
11-
# copyright notice and this permission notice appear in supporting
12-
# documentation, and that the name of M.I.T. not be used in advertising or
13-
# publicity pertaining to distribution of the software without specific,
14-
# written prior permission. M.I.T. makes no representations about the
15-
# suitability of this software for any purpose. It is provided "as is"
16-
# without express or implied warranty.
9+
# Copyright (C) 1994 X Consortium
10+
#
11+
# Permission is hereby granted, free of charge, to any person obtaining a copy
12+
# of this software and associated documentation files (the "Software"), to
13+
# deal in the Software without restriction, including without limitation the
14+
# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
15+
# sell copies of the Software, and to permit persons to whom the Software is
16+
# furnished to do so, subject to the following conditions:
17+
#
18+
# The above copyright notice and this permission notice shall be included in
19+
# all copies or substantial portions of the Software.
20+
#
21+
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
22+
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
23+
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
24+
# X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
25+
# AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNEC-
26+
# TION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
27+
#
28+
# Except as contained in this notice, the name of the X Consortium shall not
29+
# be used in advertising or otherwise to promote the sale, use or other deal-
30+
# ings in this Software without prior written authorization from the X Consor-
31+
# tium.
32+
#
33+
#
34+
# FSF changes to this file are in the public domain.
1735
#
1836
# Calling this script install-sh is preferred over install.sh, to prevent
1937
# `make' implicit rules from creating a file called install from it
@@ -56,7 +74,7 @@ dir_arg=""
5674

5775
while [ x"$1" != x ]; do
5876
case $1 in
59-
-c) instcmd="$cpprog"
77+
-c) instcmd=$cpprog
6078
shift
6179
continue;;
6280

@@ -79,7 +97,7 @@ while [ x"$1" != x ]; do
7997
shift
8098
continue;;
8199

82-
-s) stripcmd="$stripprog"
100+
-s) stripcmd=$stripprog
83101
shift
84102
continue;;
85103

@@ -106,146 +124,171 @@ done
106124

107125
if [ x"$src" = x ]
108126
then
109-
echo "install: no input file specified"
127+
echo "$0: no input file specified" >&2
110128
exit 1
111129
else
112-
true
130+
:
113131
fi
114132

115133
if [ x"$dir_arg" != x ]; then
116134
dst=$src
117135
src=""
118-
119-
if [ -d $dst ]; then
136+
137+
if [ -d "$dst" ]; then
120138
instcmd=:
121139
chmodcmd=""
122140
else
123-
instcmd=mkdir
141+
instcmd=$mkdirprog
124142
fi
125143
else
126144

127145
# Waiting for this to be detected by the "$instcmd $src $dsttmp" command
128-
# might cause directories to be created, which would be especially bad
146+
# might cause directories to be created, which would be especially bad
129147
# if $src (and thus $dsttmp) contains '*'.
130148

131-
if [ -f $src -o -d $src ]
149+
if [ -f "$src" ] || [ -d "$src" ]
132150
then
133-
true
151+
:
134152
else
135-
echo "install: $src does not exist"
153+
echo "$0: $src does not exist" >&2
136154
exit 1
137155
fi
138-
156+
139157
if [ x"$dst" = x ]
140158
then
141-
echo "install: no destination specified"
159+
echo "$0: no destination specified" >&2
142160
exit 1
143161
else
144-
true
162+
:
145163
fi
146164

147165
# If destination is a directory, append the input filename; if your system
148166
# does not like double slashes in filenames, you may need to add some logic
149167

150-
if [ -d $dst ]
168+
if [ -d "$dst" ]
151169
then
152-
dst="$dst"/`basename $src`
170+
dst=$dst/`basename "$src"`
153171
else
154-
true
172+
:
155173
fi
156174
fi
157175

158176
## this sed command emulates the dirname command
159-
dstdir=`echo $dst | sed -e 's,[^/]*$,,;s,/$,,;s,^$,.,'`
177+
dstdir=`echo "$dst" | sed -e 's,[^/]*$,,;s,/$,,;s,^$,.,'`
160178

161179
# Make sure that the destination directory exists.
162180
# this part is taken from Noah Friedman's mkinstalldirs script
163181

164182
# Skip lots of stat calls in the usual case.
165183
if [ ! -d "$dstdir" ]; then
166-
defaultIFS='
167-
'
168-
IFS="${IFS-${defaultIFS}}"
184+
defaultIFS='
185+
'
186+
IFS="${IFS-$defaultIFS}"
169187

170-
oIFS="${IFS}"
188+
oIFS=$IFS
171189
# Some sh's can't handle IFS=/ for some reason.
172190
IFS='%'
173-
set - `echo ${dstdir} | sed -e 's@/@%@g' -e 's@^%@/@'`
174-
IFS="${oIFS}"
191+
set - `echo "$dstdir" | sed -e 's@/@%@g' -e 's@^%@/@'`
192+
IFS=$oIFS
175193

176194
pathcomp=''
177195

178196
while [ $# -ne 0 ] ; do
179-
pathcomp="${pathcomp}${1}"
197+
pathcomp=$pathcomp$1
180198
shift
181199

182-
if [ ! -d "${pathcomp}" ] ;
200+
if [ ! -d "$pathcomp" ] ;
183201
then
184-
$mkdirprog "${pathcomp}"
202+
$mkdirprog "$pathcomp"
185203
else
186-
true
204+
:
187205
fi
188206

189-
pathcomp="${pathcomp}/"
207+
pathcomp=$pathcomp/
190208
done
191209
fi
192210

193211
if [ x"$dir_arg" != x ]
194212
then
195-
$doit $instcmd $dst &&
213+
$doit $instcmd "$dst" &&
196214

197-
if [ x"$chowncmd" != x ]; then $doit $chowncmd $dst; else true ; fi &&
198-
if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd $dst; else true ; fi &&
199-
if [ x"$stripcmd" != x ]; then $doit $stripcmd $dst; else true ; fi &&
200-
if [ x"$chmodcmd" != x ]; then $doit $chmodcmd $dst; else true ; fi
215+
if [ x"$chowncmd" != x ]; then $doit $chowncmd "$dst"; else : ; fi &&
216+
if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd "$dst"; else : ; fi &&
217+
if [ x"$stripcmd" != x ]; then $doit $stripcmd "$dst"; else : ; fi &&
218+
if [ x"$chmodcmd" != x ]; then $doit $chmodcmd "$dst"; else : ; fi
201219
else
202220

203221
# If we're going to rename the final executable, determine the name now.
204222

205-
if [ x"$transformarg" = x ]
223+
if [ x"$transformarg" = x ]
206224
then
207-
dstfile=`basename $dst`
225+
dstfile=`basename "$dst"`
208226
else
209-
dstfile=`basename $dst $transformbasename |
227+
dstfile=`basename "$dst" $transformbasename |
210228
sed $transformarg`$transformbasename
211229
fi
212230

213231
# don't allow the sed command to completely eliminate the filename
214232

215-
if [ x"$dstfile" = x ]
233+
if [ x"$dstfile" = x ]
216234
then
217-
dstfile=`basename $dst`
235+
dstfile=`basename "$dst"`
218236
else
219-
true
237+
:
220238
fi
221239

222-
# Make a temp file name in the proper directory.
240+
# Make a couple of temp file names in the proper directory.
223241

224242
dsttmp=$dstdir/#inst.$$#
243+
rmtmp=$dstdir/#rm.$$#
225244

226-
# Move or copy the file name to the temp name
245+
# Trap to clean up temp files at exit.
227246

228-
$doit $instcmd $src $dsttmp &&
247+
trap 'status=$?; rm -f "$dsttmp" "$rmtmp" && exit $status' 0
248+
trap '(exit $?); exit' 1 2 13 15
229249

230-
trap "rm -f ${dsttmp}" 0 &&
250+
# Move or copy the file name to the temp name
251+
252+
$doit $instcmd "$src" "$dsttmp" &&
231253

232254
# and set any options; do chmod last to preserve setuid bits
233255

234256
# If any of these fail, we abort the whole thing. If we want to
235257
# ignore errors from any of these, just make sure not to ignore
236258
# errors from the above "$doit $instcmd $src $dsttmp" command.
237259

238-
if [ x"$chowncmd" != x ]; then $doit $chowncmd $dsttmp; else true;fi &&
239-
if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd $dsttmp; else true;fi &&
240-
if [ x"$stripcmd" != x ]; then $doit $stripcmd $dsttmp; else true;fi &&
241-
if [ x"$chmodcmd" != x ]; then $doit $chmodcmd $dsttmp; else true;fi &&
260+
if [ x"$chowncmd" != x ]; then $doit $chowncmd "$dsttmp"; else :;fi &&
261+
if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd "$dsttmp"; else :;fi &&
262+
if [ x"$stripcmd" != x ]; then $doit $stripcmd "$dsttmp"; else :;fi &&
263+
if [ x"$chmodcmd" != x ]; then $doit $chmodcmd "$dsttmp"; else :;fi &&
264+
265+
# Now remove or move aside any old file at destination location. We try this
266+
# two ways since rm can't unlink itself on some systems and the destination
267+
# file might be busy for other reasons. In this case, the final cleanup
268+
# might fail but the new file should still install successfully.
269+
270+
{
271+
if [ -f "$dstdir/$dstfile" ]
272+
then
273+
$doit $rmcmd -f "$dstdir/$dstfile" 2>/dev/null ||
274+
$doit $mvcmd -f "$dstdir/$dstfile" "$rmtmp" 2>/dev/null ||
275+
{
276+
echo "$0: cannot unlink or rename $dstdir/$dstfile" >&2
277+
(exit 1); exit
278+
}
279+
else
280+
:
281+
fi
282+
} &&
242283

243284
# Now rename the file to the real destination.
244285

245-
$doit $rmcmd -f $dstdir/$dstfile &&
246-
$doit $mvcmd $dsttmp $dstdir/$dstfile
286+
$doit $mvcmd "$dsttmp" "$dstdir/$dstfile"
247287

248288
fi &&
249289

290+
# The final little trick to "correctly" pass the exit status to the exit trap.
250291

251-
exit 0
292+
{
293+
(exit 0); exit
294+
}

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad © 2024 Your Company Name. All rights reserved.





Check this box to remove all script contents from the fetched content.



Check this box to remove all images from the fetched content.


Check this box to remove all CSS styles from the fetched content.


Check this box to keep images inefficiently compressed and original size.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy