Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(315)

Side by Side Diff: third_party/tcmalloc/vendor/install-sh

Issue 9316021: Update the tcmalloc vendor branch to r144 (gperftools 2.0). (Closed) Base URL: http://git.chromium.org/git/chromium.git@trunk
Patch Set: Reuploading Created 8 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « third_party/tcmalloc/vendor/google-perftools.sln ('k') | third_party/tcmalloc/vendor/missing » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 #!/bin/sh 1 #!/bin/sh
2 # install - install a program, script, or datafile 2 # install - install a program, script, or datafile
3 3
4 scriptversion=2005-05-14.22 4 scriptversion=2006-12-25.00
5 5
6 # This originates from X11R5 (mit/util/scripts/install.sh), which was 6 # This originates from X11R5 (mit/util/scripts/install.sh), which was
7 # later released in X11R6 (xc/config/util/install.sh) with the 7 # later released in X11R6 (xc/config/util/install.sh) with the
8 # following copyright and license. 8 # following copyright and license.
9 # 9 #
10 # Copyright (C) 1994 X Consortium 10 # Copyright (C) 1994 X Consortium
11 # 11 #
12 # Permission is hereby granted, free of charge, to any person obtaining a copy 12 # Permission is hereby granted, free of charge, to any person obtaining a copy
13 # of this software and associated documentation files (the "Software"), to 13 # of this software and associated documentation files (the "Software"), to
14 # deal in the Software without restriction, including without limitation the 14 # deal in the Software without restriction, including without limitation the
(...skipping 17 matching lines...) Expand all
32 # tium. 32 # tium.
33 # 33 #
34 # 34 #
35 # FSF changes to this file are in the public domain. 35 # FSF changes to this file are in the public domain.
36 # 36 #
37 # Calling this script install-sh is preferred over install.sh, to prevent 37 # Calling this script install-sh is preferred over install.sh, to prevent
38 # `make' implicit rules from creating a file called install from it 38 # `make' implicit rules from creating a file called install from it
39 # when there is no Makefile. 39 # when there is no Makefile.
40 # 40 #
41 # This script is compatible with the BSD install script, but was written 41 # This script is compatible with the BSD install script, but was written
42 # from scratch. It can only install one file at a time, a restriction 42 # from scratch.
43 # shared with many OS's install programs. 43
44 nl='
45 '
46 IFS=" ""» $nl"
44 47
45 # set DOITPROG to echo to test this script 48 # set DOITPROG to echo to test this script
46 49
47 # Don't use :- since 4.3BSD and earlier shells don't like it. 50 # Don't use :- since 4.3BSD and earlier shells don't like it.
48 doit="${DOITPROG-}" 51 doit=${DOITPROG-}
52 if test -z "$doit"; then
53 doit_exec=exec
54 else
55 doit_exec=$doit
56 fi
49 57
50 # put in absolute paths if you don't have them in your path; or use env. vars. 58 # Put in absolute file names if you don't have them in your path;
59 # or use environment vars.
51 60
52 mvprog="${MVPROG-mv}" 61 chgrpprog=${CHGRPPROG-chgrp}
53 cpprog="${CPPROG-cp}" 62 chmodprog=${CHMODPROG-chmod}
54 chmodprog="${CHMODPROG-chmod}" 63 chownprog=${CHOWNPROG-chown}
55 chownprog="${CHOWNPROG-chown}" 64 cmpprog=${CMPPROG-cmp}
56 chgrpprog="${CHGRPPROG-chgrp}" 65 cpprog=${CPPROG-cp}
57 stripprog="${STRIPPROG-strip}" 66 mkdirprog=${MKDIRPROG-mkdir}
58 rmprog="${RMPROG-rm}" 67 mvprog=${MVPROG-mv}
59 mkdirprog="${MKDIRPROG-mkdir}" 68 rmprog=${RMPROG-rm}
69 stripprog=${STRIPPROG-strip}
60 70
61 chmodcmd="$chmodprog 0755" 71 posix_glob='?'
72 initialize_posix_glob='
73 test "$posix_glob" != "?" || {
74 if (set -f) 2>/dev/null; then
75 posix_glob=
76 else
77 posix_glob=:
78 fi
79 }
80 '
81
82 posix_mkdir=
83
84 # Desired mode of installed file.
85 mode=0755
86
87 chgrpcmd=
88 chmodcmd=$chmodprog
62 chowncmd= 89 chowncmd=
63 chgrpcmd= 90 mvcmd=$mvprog
91 rmcmd="$rmprog -f"
64 stripcmd= 92 stripcmd=
65 rmcmd="$rmprog -f" 93
66 mvcmd="$mvprog"
67 src= 94 src=
68 dst= 95 dst=
69 dir_arg= 96 dir_arg=
70 dstarg= 97 dst_arg=
98
99 copy_on_change=false
71 no_target_directory= 100 no_target_directory=
72 101
73 usage="Usage: $0 [OPTION]... [-T] SRCFILE DSTFILE 102 usage="\
103 Usage: $0 [OPTION]... [-T] SRCFILE DSTFILE
74 or: $0 [OPTION]... SRCFILES... DIRECTORY 104 or: $0 [OPTION]... SRCFILES... DIRECTORY
75 or: $0 [OPTION]... -t DIRECTORY SRCFILES... 105 or: $0 [OPTION]... -t DIRECTORY SRCFILES...
76 or: $0 [OPTION]... -d DIRECTORIES... 106 or: $0 [OPTION]... -d DIRECTORIES...
77 107
78 In the 1st form, copy SRCFILE to DSTFILE. 108 In the 1st form, copy SRCFILE to DSTFILE.
79 In the 2nd and 3rd, copy all SRCFILES to DIRECTORY. 109 In the 2nd and 3rd, copy all SRCFILES to DIRECTORY.
80 In the 4th, create DIRECTORIES. 110 In the 4th, create DIRECTORIES.
81 111
82 Options: 112 Options:
83 -c (ignored) 113 --help display this help and exit.
84 -d create directories instead of installing files. 114 --version display version info and exit.
85 -g GROUP $chgrpprog installed files to GROUP. 115
86 -m MODE $chmodprog installed files to MODE. 116 -c (ignored)
87 -o USER $chownprog installed files to USER. 117 -C install only if different (preserve the last data modification t ime)
88 -s $stripprog installed files. 118 -d create directories instead of installing files.
89 -t DIRECTORY install into DIRECTORY. 119 -g GROUP $chgrpprog installed files to GROUP.
90 -T report an error if DSTFILE is a directory. 120 -m MODE $chmodprog installed files to MODE.
91 --help display this help and exit. 121 -o USER $chownprog installed files to USER.
92 --version display version info and exit. 122 -s $stripprog installed files.
123 -t DIRECTORY install into DIRECTORY.
124 -T report an error if DSTFILE is a directory.
93 125
94 Environment variables override the default commands: 126 Environment variables override the default commands:
95 CHGRPPROG CHMODPROG CHOWNPROG CPPROG MKDIRPROG MVPROG RMPROG STRIPPROG 127 CHGRPPROG CHMODPROG CHOWNPROG CMPPROG CPPROG MKDIRPROG MVPROG
128 RMPROG STRIPPROG
96 " 129 "
97 130
98 while test -n "$1"; do 131 while test $# -ne 0; do
99 case $1 in 132 case $1 in
100 -c) shift 133 -c) ;;
101 continue;;
102 134
103 -d) dir_arg=true 135 -C) copy_on_change=true;;
104 shift 136
105 continue;; 137 -d) dir_arg=true;;
106 138
107 -g) chgrpcmd="$chgrpprog $2" 139 -g) chgrpcmd="$chgrpprog $2"
108 shift 140 » shift;;
109 shift
110 continue;;
111 141
112 --help) echo "$usage"; exit $?;; 142 --help) echo "$usage"; exit $?;;
113 143
114 -m) chmodcmd="$chmodprog $2" 144 -m) mode=$2
115 shift 145 » case $mode in
116 shift 146 » *' '* | *'» '* | *'
117 continue;; 147 '*» | *'*'* | *'?'* | *'['*)
148 » echo "$0: invalid mode: $mode" >&2
149 » exit 1;;
150 » esac
151 » shift;;
118 152
119 -o) chowncmd="$chownprog $2" 153 -o) chowncmd="$chownprog $2"
120 shift 154 » shift;;
121 shift
122 continue;;
123 155
124 -s) stripcmd=$stripprog 156 -s) stripcmd=$stripprog;;
125 shift
126 continue;;
127 157
128 -t) dstarg=$2 158 -t) dst_arg=$2
129 » shift 159 » shift;;
130 » shift
131 » continue;;
132 160
133 -T) no_target_directory=true 161 -T) no_target_directory=true;;
134 » shift
135 » continue;;
136 162
137 --version) echo "$0 $scriptversion"; exit $?;; 163 --version) echo "$0 $scriptversion"; exit $?;;
138 164
139 *) # When -d is used, all remaining arguments are directories to create. 165 --)»shift
140 » # When -t is used, the destination is already specified.
141 » test -n "$dir_arg$dstarg" && break
142 # Otherwise, the last argument is the destination. Remove it from $@.
143 » for arg
144 » do
145 if test -n "$dstarg"; then
146 » # $@ is not empty: it contains at least $arg.
147 » set fnord "$@" "$dstarg"
148 » shift # fnord
149 » fi
150 » shift # arg
151 » dstarg=$arg
152 » done
153 break;; 166 break;;
167
168 -*) echo "$0: invalid option: $1" >&2
169 exit 1;;
170
171 *) break;;
154 esac 172 esac
173 shift
155 done 174 done
156 175
157 if test -z "$1"; then 176 if test $# -ne 0 && test -z "$dir_arg$dst_arg"; then
177 # When -d is used, all remaining arguments are directories to create.
178 # When -t is used, the destination is already specified.
179 # Otherwise, the last argument is the destination. Remove it from $@.
180 for arg
181 do
182 if test -n "$dst_arg"; then
183 # $@ is not empty: it contains at least $arg.
184 set fnord "$@" "$dst_arg"
185 shift # fnord
186 fi
187 shift # arg
188 dst_arg=$arg
189 done
190 fi
191
192 if test $# -eq 0; then
158 if test -z "$dir_arg"; then 193 if test -z "$dir_arg"; then
159 echo "$0: no input file specified." >&2 194 echo "$0: no input file specified." >&2
160 exit 1 195 exit 1
161 fi 196 fi
162 # It's OK to call `install-sh -d' without argument. 197 # It's OK to call `install-sh -d' without argument.
163 # This can happen when creating conditional directories. 198 # This can happen when creating conditional directories.
164 exit 0 199 exit 0
165 fi 200 fi
166 201
202 if test -z "$dir_arg"; then
203 trap '(exit $?); exit' 1 2 13 15
204
205 # Set umask so as not to create temps with too-generous modes.
206 # However, 'strip' requires both read and write access to temps.
207 case $mode in
208 # Optimize common cases.
209 *644) cp_umask=133;;
210 *755) cp_umask=22;;
211
212 *[0-7])
213 if test -z "$stripcmd"; then
214 u_plus_rw=
215 else
216 u_plus_rw='% 200'
217 fi
218 cp_umask=`expr '(' 777 - $mode % 1000 ')' $u_plus_rw`;;
219 *)
220 if test -z "$stripcmd"; then
221 u_plus_rw=
222 else
223 u_plus_rw=,u+rw
224 fi
225 cp_umask=$mode$u_plus_rw;;
226 esac
227 fi
228
167 for src 229 for src
168 do 230 do
169 # Protect names starting with `-'. 231 # Protect names starting with `-'.
170 case $src in 232 case $src in
171 -*) src=./$src ;; 233 -*) src=./$src;;
172 esac 234 esac
173 235
174 if test -n "$dir_arg"; then 236 if test -n "$dir_arg"; then
175 dst=$src 237 dst=$src
176 src= 238 dstdir=$dst
239 test -d "$dstdir"
240 dstdir_status=$?
241 else
177 242
178 if test -d "$dst"; then
179 mkdircmd=:
180 chmodcmd=
181 else
182 mkdircmd=$mkdirprog
183 fi
184 else
185 # Waiting for this to be detected by the "$cpprog $src $dsttmp" command 243 # Waiting for this to be detected by the "$cpprog $src $dsttmp" command
186 # might cause directories to be created, which would be especially bad 244 # might cause directories to be created, which would be especially bad
187 # if $src (and thus $dsttmp) contains '*'. 245 # if $src (and thus $dsttmp) contains '*'.
188 if test ! -f "$src" && test ! -d "$src"; then 246 if test ! -f "$src" && test ! -d "$src"; then
189 echo "$0: $src does not exist." >&2 247 echo "$0: $src does not exist." >&2
190 exit 1 248 exit 1
191 fi 249 fi
192 250
193 if test -z "$dstarg"; then 251 if test -z "$dst_arg"; then
194 echo "$0: no destination specified." >&2 252 echo "$0: no destination specified." >&2
195 exit 1 253 exit 1
196 fi 254 fi
197 255
198 dst=$dstarg 256 dst=$dst_arg
199 # Protect names starting with `-'. 257 # Protect names starting with `-'.
200 case $dst in 258 case $dst in
201 -*) dst=./$dst ;; 259 -*) dst=./$dst;;
202 esac 260 esac
203 261
204 # If destination is a directory, append the input filename; won't work 262 # If destination is a directory, append the input filename; won't work
205 # if double slashes aren't ignored. 263 # if double slashes aren't ignored.
206 if test -d "$dst"; then 264 if test -d "$dst"; then
207 if test -n "$no_target_directory"; then 265 if test -n "$no_target_directory"; then
208 » echo "$0: $dstarg: Is a directory" >&2 266 » echo "$0: $dst_arg: Is a directory" >&2
209 exit 1 267 exit 1
210 fi 268 fi
211 dst=$dst/`basename "$src"` 269 dstdir=$dst
270 dst=$dstdir/`basename "$src"`
271 dstdir_status=0
272 else
273 # Prefer dirname, but fall back on a substitute if dirname fails.
274 dstdir=`
275 » (dirname "$dst") 2>/dev/null ||
276 » expr X"$dst" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
277 » X"$dst" : 'X\(//\)[^/]' \| \
278 » X"$dst" : 'X\(//\)$' \| \
279 » X"$dst" : 'X\(/\)' \| . 2>/dev/null ||
280 » echo X"$dst" |
281 » sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
282 » » s//\1/
283 » » q
284 » » }
285 » » /^X\(\/\/\)[^/].*/{
286 » » s//\1/
287 » » q
288 » » }
289 » » /^X\(\/\/\)$/{
290 » » s//\1/
291 » » q
292 » » }
293 » » /^X\(\/\).*/{
294 » » s//\1/
295 » » q
296 » » }
297 » » s/.*/./; q'
298 `
299
300 test -d "$dstdir"
301 dstdir_status=$?
212 fi 302 fi
213 fi 303 fi
214 304
215 # This sed command emulates the dirname command. 305 obsolete_mkdir_used=false
216 dstdir=`echo "$dst" | sed -e 's,/*$,,;s,[^/]*$,,;s,/*$,,;s,^$,.,'`
217 306
218 # Make sure that the destination directory exists. 307 if test $dstdir_status != 0; then
308 case $posix_mkdir in
309 '')
310 » # Create intermediate dirs using mode 755 as modified by the umask.
311 » # This is like FreeBSD 'install' as of 1997-10-28.
312 » umask=`umask`
313 » case $stripcmd.$umask in
314 » # Optimize common cases.
315 » *[2367][2367]) mkdir_umask=$umask;;
316 » .*0[02][02] | .[02][02] | .[02]) mkdir_umask=22;;
219 317
220 # Skip lots of stat calls in the usual case. 318 » *[0-7])
221 if test ! -d "$dstdir"; then 319 » mkdir_umask=`expr $umask + 22 \
222 defaultIFS=' 320 » - $umask % 100 % 40 + $umask % 20 \
223 » ' 321 » - $umask % 10 % 4 + $umask % 2
224 IFS="${IFS-$defaultIFS}" 322 » `;;
323 » *) mkdir_umask=$umask,go-w;;
324 » esac
225 325
226 oIFS=$IFS 326 » # With -d, create the new directory with the user-specified mode.
227 # Some sh's can't handle IFS=/ for some reason. 327 » # Otherwise, rely on $mkdir_umask.
228 IFS='%' 328 » if test -n "$dir_arg"; then
229 set x `echo "$dstdir" | sed -e 's@/@%@g' -e 's@^%@/@'` 329 » mkdir_mode=-m$mode
230 shift 330 » else
231 IFS=$oIFS 331 » mkdir_mode=
332 » fi
232 333
233 pathcomp= 334 » posix_mkdir=false
335 » case $umask in
336 » *[123567][0-7][0-7])
337 » # POSIX mkdir -p sets u+wx bits regardless of umask, which
338 » # is incompatible with FreeBSD 'install' when (umask & 300) != 0.
339 » ;;
340 » *)
341 » tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$
342 » trap 'ret=$?; rmdir "$tmpdir/d" "$tmpdir" 2>/dev/null; exit $ret' 0
234 343
235 while test $# -ne 0 ; do 344 » if (umask $mkdir_umask &&
236 pathcomp=$pathcomp$1 345 » » exec $mkdirprog $mkdir_mode -p -- "$tmpdir/d") >/dev/null 2>&1
346 » then
347 » if test -z "$dir_arg" || {
348 » » # Check for POSIX incompatibilities with -m.
349 » » # HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or
350 » » # other-writeable bit of parent directory when it shouldn't.
351 » » # FreeBSD 6.1 mkdir -m -p sets mode of existing directory.
352 » » ls_ld_tmpdir=`ls -ld "$tmpdir"`
353 » » case $ls_ld_tmpdir in
354 » » d????-?r-*) different_mode=700;;
355 » » d????-?--*) different_mode=755;;
356 » » *) false;;
357 » » esac &&
358 » » $mkdirprog -m$different_mode -p -- "$tmpdir" && {
359 » » ls_ld_tmpdir_1=`ls -ld "$tmpdir"`
360 » » test "$ls_ld_tmpdir" = "$ls_ld_tmpdir_1"
361 » » }
362 » » }
363 » then posix_mkdir=:
364 » fi
365 » rmdir "$tmpdir/d" "$tmpdir"
366 » else
367 » # Remove any dirs left behind by ancient mkdir implementations.
368 » rmdir ./$mkdir_mode ./-p ./-- 2>/dev/null
369 » fi
370 » trap '' 0;;
371 » esac;;
372 esac
373
374 if
375 $posix_mkdir && (
376 » umask $mkdir_umask &&
377 » $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir"
378 )
379 then :
380 else
381
382 # The umask is ridiculous, or mkdir does not conform to POSIX,
383 # or it failed possibly due to a race condition. Create the
384 # directory the slow way, step by step, checking for races as we go.
385
386 case $dstdir in
387 » /*) prefix='/';;
388 » -*) prefix='./';;
389 » *) prefix='';;
390 esac
391
392 eval "$initialize_posix_glob"
393
394 oIFS=$IFS
395 IFS=/
396 $posix_glob set -f
397 set fnord $dstdir
237 shift 398 shift
238 if test ! -d "$pathcomp"; then 399 $posix_glob set +f
239 $mkdirprog "$pathcomp" 400 IFS=$oIFS
240 » # mkdir can fail with a `File exist' error in case several 401
241 » # install-sh are creating the directory concurrently. This 402 prefixes=
242 » # is OK. 403
243 » test -d "$pathcomp" || exit 404 for d
405 do
406 » test -z "$d" && continue
407
408 » prefix=$prefix$d
409 » if test -d "$prefix"; then
410 » prefixes=
411 » else
412 » if $posix_mkdir; then
413 » (umask=$mkdir_umask &&
414 » $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir") && break
415 » # Don't fail if two instances are running concurrently.
416 » test -d "$prefix" || exit 1
417 » else
418 » case $prefix in
419 » *\'*) qprefix=`echo "$prefix" | sed "s/'/'\\\\\\\\''/g"`;;
420 » *) qprefix=$prefix;;
421 » esac
422 » prefixes="$prefixes '$qprefix'"
423 » fi
424 » fi
425 » prefix=$prefix/
426 done
427
428 if test -n "$prefixes"; then
429 » # Don't fail if two instances are running concurrently.
430 » (umask $mkdir_umask &&
431 » eval "\$doit_exec \$mkdirprog $prefixes") ||
432 » test -d "$dstdir" || exit 1
433 » obsolete_mkdir_used=true
244 fi 434 fi
245 pathcomp=$pathcomp/ 435 fi
246 done
247 fi 436 fi
248 437
249 if test -n "$dir_arg"; then 438 if test -n "$dir_arg"; then
250 $doit $mkdircmd "$dst" \ 439 { test -z "$chowncmd" || $doit $chowncmd "$dst"; } &&
251 && { test -z "$chowncmd" || $doit $chowncmd "$dst"; } \ 440 { test -z "$chgrpcmd" || $doit $chgrpcmd "$dst"; } &&
252 && { test -z "$chgrpcmd" || $doit $chgrpcmd "$dst"; } \ 441 { test "$obsolete_mkdir_used$chowncmd$chgrpcmd" = false ||
253 && { test -z "$stripcmd" || $doit $stripcmd "$dst"; } \ 442 test -z "$chmodcmd" || $doit $chmodcmd $mode "$dst"; } || exit 1
254 && { test -z "$chmodcmd" || $doit $chmodcmd "$dst"; }
255
256 else 443 else
257 dstfile=`basename "$dst"`
258 444
259 # Make a couple of temp file names in the proper directory. 445 # Make a couple of temp file names in the proper directory.
260 dsttmp=$dstdir/_inst.$$_ 446 dsttmp=$dstdir/_inst.$$_
261 rmtmp=$dstdir/_rm.$$_ 447 rmtmp=$dstdir/_rm.$$_
262 448
263 # Trap to clean up those temp files at exit. 449 # Trap to clean up those temp files at exit.
264 trap 'ret=$?; rm -f "$dsttmp" "$rmtmp" && exit $ret' 0 450 trap 'ret=$?; rm -f "$dsttmp" "$rmtmp" && exit $ret' 0
265 trap '(exit $?); exit' 1 2 13 15
266 451
267 # Copy the file name to the temp name. 452 # Copy the file name to the temp name.
268 $doit $cpprog "$src" "$dsttmp" && 453 (umask $cp_umask && $doit_exec $cpprog "$src" "$dsttmp") &&
269 454
270 # and set any options; do chmod last to preserve setuid bits. 455 # and set any options; do chmod last to preserve setuid bits.
271 # 456 #
272 # If any of these fail, we abort the whole thing. If we want to 457 # If any of these fail, we abort the whole thing. If we want to
273 # ignore errors from any of these, just make sure not to ignore 458 # ignore errors from any of these, just make sure not to ignore
274 # errors from the above "$doit $cpprog $src $dsttmp" command. 459 # errors from the above "$doit $cpprog $src $dsttmp" command.
275 # 460 #
276 { test -z "$chowncmd" || $doit $chowncmd "$dsttmp"; } \ 461 { test -z "$chowncmd" || $doit $chowncmd "$dsttmp"; } &&
277 && { test -z "$chgrpcmd" || $doit $chgrpcmd "$dsttmp"; } \ 462 { test -z "$chgrpcmd" || $doit $chgrpcmd "$dsttmp"; } &&
278 && { test -z "$stripcmd" || $doit $stripcmd "$dsttmp"; } \ 463 { test -z "$stripcmd" || $doit $stripcmd "$dsttmp"; } &&
279 && { test -z "$chmodcmd" || $doit $chmodcmd "$dsttmp"; } && 464 { test -z "$chmodcmd" || $doit $chmodcmd $mode "$dsttmp"; } &&
280 465
281 # Now rename the file to the real destination. 466 # If -C, don't bother to copy if it wouldn't change the file.
282 { $doit $mvcmd -f "$dsttmp" "$dstdir/$dstfile" 2>/dev/null \ 467 if $copy_on_change &&
283 || { 468 old=`LC_ALL=C ls -dlL "$dst"» 2>/dev/null` &&
284 » # The rename failed, perhaps because mv can't rename something else 469 new=`LC_ALL=C ls -dlL "$dsttmp"» 2>/dev/null` &&
285 » # to itself, or perhaps because mv is so ancient that it does not
286 » # support -f.
287 470
288 » # Now remove or move aside any old file at destination location. 471 eval "$initialize_posix_glob" &&
289 » # We try this two ways since rm can't unlink itself on some 472 $posix_glob set -f &&
290 » # systems and the destination file might be busy for other 473 set X $old && old=:$2:$4:$5:$6 &&
291 » # reasons. In this case, the final cleanup might fail but the new 474 set X $new && new=:$2:$4:$5:$6 &&
292 » # file should still install successfully. 475 $posix_glob set +f &&
293 » {
294 » if test -f "$dstdir/$dstfile"; then
295 » $doit $rmcmd -f "$dstdir/$dstfile" 2>/dev/null \
296 » || $doit $mvcmd -f "$dstdir/$dstfile" "$rmtmp" 2>/dev/null \
297 » || {
298 » » echo "$0: cannot unlink or rename $dstdir/$dstfile" >&2
299 » » (exit 1); exit 1
300 » }
301 » else
302 » :
303 » fi
304 » } &&
305 476
306 » # Now rename the file to the real destination. 477 test "$old" = "$new" &&
307 » $doit $mvcmd "$dsttmp" "$dstdir/$dstfile" 478 $cmpprog "$dst" "$dsttmp" >/dev/null 2>&1
308 » } 479 then
309 } 480 rm -f "$dsttmp"
310 fi || { (exit 1); exit 1; } 481 else
482 # Rename the file to the real destination.
483 $doit $mvcmd -f "$dsttmp" "$dst" 2>/dev/null ||
484
485 # The rename failed, perhaps because mv can't rename something else
486 # to itself, or perhaps because mv is so ancient that it does not
487 # support -f.
488 {
489 » # Now remove or move aside any old file at destination location.
490 » # We try this two ways since rm can't unlink itself on some
491 » # systems and the destination file might be busy for other
492 » # reasons. In this case, the final cleanup might fail but the new
493 » # file should still install successfully.
494 » {
495 » test ! -f "$dst" ||
496 » $doit $rmcmd -f "$dst" 2>/dev/null ||
497 » { $doit $mvcmd -f "$dst" "$rmtmp" 2>/dev/null &&
498 » { $doit $rmcmd -f "$rmtmp" 2>/dev/null; :; }
499 » } ||
500 » { echo "$0: cannot unlink or rename $dst" >&2
501 » (exit 1); exit 1
502 » }
503 » } &&
504
505 » # Now rename the file to the real destination.
506 » $doit $mvcmd "$dsttmp" "$dst"
507 }
508 fi || exit 1
509
510 trap '' 0
511 fi
311 done 512 done
312 513
313 # The final little trick to "correctly" pass the exit status to the exit trap.
314 {
315 (exit 0); exit 0
316 }
317
318 # Local variables: 514 # Local variables:
319 # eval: (add-hook 'write-file-hooks 'time-stamp) 515 # eval: (add-hook 'write-file-hooks 'time-stamp)
320 # time-stamp-start: "scriptversion=" 516 # time-stamp-start: "scriptversion="
321 # time-stamp-format: "%:y-%02m-%02d.%02H" 517 # time-stamp-format: "%:y-%02m-%02d.%02H"
322 # time-stamp-end: "$" 518 # time-stamp-end: "$"
323 # End: 519 # End:
OLDNEW
« no previous file with comments | « third_party/tcmalloc/vendor/google-perftools.sln ('k') | third_party/tcmalloc/vendor/missing » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698