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

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

Issue 9701040: Revert 126715 - Update the tcmalloc vendor branch to r144 (gperftools 2.0). (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: 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')
Property Changes:
Deleted: svn:executable
- *
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=2006-12-25.00 4 scriptversion=2005-05-14.22
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. 42 # from scratch. It can only install one file at a time, a restriction
43 43 # shared with many OS's install programs.
44 nl='
45 '
46 IFS=" ""» $nl"
47 44
48 # set DOITPROG to echo to test this script 45 # set DOITPROG to echo to test this script
49 46
50 # Don't use :- since 4.3BSD and earlier shells don't like it. 47 # Don't use :- since 4.3BSD and earlier shells don't like it.
51 doit=${DOITPROG-} 48 doit="${DOITPROG-}"
52 if test -z "$doit"; then
53 doit_exec=exec
54 else
55 doit_exec=$doit
56 fi
57 49
58 # Put in absolute file names if you don't have them in your path; 50 # put in absolute paths if you don't have them in your path; or use env. vars.
59 # or use environment vars.
60 51
61 chgrpprog=${CHGRPPROG-chgrp} 52 mvprog="${MVPROG-mv}"
62 chmodprog=${CHMODPROG-chmod} 53 cpprog="${CPPROG-cp}"
63 chownprog=${CHOWNPROG-chown} 54 chmodprog="${CHMODPROG-chmod}"
64 cmpprog=${CMPPROG-cmp} 55 chownprog="${CHOWNPROG-chown}"
65 cpprog=${CPPROG-cp} 56 chgrpprog="${CHGRPPROG-chgrp}"
66 mkdirprog=${MKDIRPROG-mkdir} 57 stripprog="${STRIPPROG-strip}"
67 mvprog=${MVPROG-mv} 58 rmprog="${RMPROG-rm}"
68 rmprog=${RMPROG-rm} 59 mkdirprog="${MKDIRPROG-mkdir}"
69 stripprog=${STRIPPROG-strip}
70 60
71 posix_glob='?' 61 chmodcmd="$chmodprog 0755"
72 initialize_posix_glob=' 62 chowncmd=
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= 63 chgrpcmd=
88 chmodcmd=$chmodprog 64 stripcmd=
89 chowncmd=
90 mvcmd=$mvprog
91 rmcmd="$rmprog -f" 65 rmcmd="$rmprog -f"
92 stripcmd= 66 mvcmd="$mvprog"
93
94 src= 67 src=
95 dst= 68 dst=
96 dir_arg= 69 dir_arg=
97 dst_arg= 70 dstarg=
98
99 copy_on_change=false
100 no_target_directory= 71 no_target_directory=
101 72
102 usage="\ 73 usage="Usage: $0 [OPTION]... [-T] SRCFILE DSTFILE
103 Usage: $0 [OPTION]... [-T] SRCFILE DSTFILE
104 or: $0 [OPTION]... SRCFILES... DIRECTORY 74 or: $0 [OPTION]... SRCFILES... DIRECTORY
105 or: $0 [OPTION]... -t DIRECTORY SRCFILES... 75 or: $0 [OPTION]... -t DIRECTORY SRCFILES...
106 or: $0 [OPTION]... -d DIRECTORIES... 76 or: $0 [OPTION]... -d DIRECTORIES...
107 77
108 In the 1st form, copy SRCFILE to DSTFILE. 78 In the 1st form, copy SRCFILE to DSTFILE.
109 In the 2nd and 3rd, copy all SRCFILES to DIRECTORY. 79 In the 2nd and 3rd, copy all SRCFILES to DIRECTORY.
110 In the 4th, create DIRECTORIES. 80 In the 4th, create DIRECTORIES.
111 81
112 Options: 82 Options:
113 --help display this help and exit. 83 -c (ignored)
114 --version display version info and exit. 84 -d create directories instead of installing files.
115 85 -g GROUP $chgrpprog installed files to GROUP.
116 -c (ignored) 86 -m MODE $chmodprog installed files to MODE.
117 -C install only if different (preserve the last data modification t ime) 87 -o USER $chownprog installed files to USER.
118 -d create directories instead of installing files. 88 -s $stripprog installed files.
119 -g GROUP $chgrpprog installed files to GROUP. 89 -t DIRECTORY install into DIRECTORY.
120 -m MODE $chmodprog installed files to MODE. 90 -T report an error if DSTFILE is a directory.
121 -o USER $chownprog installed files to USER. 91 --help display this help and exit.
122 -s $stripprog installed files. 92 --version display version info and exit.
123 -t DIRECTORY install into DIRECTORY.
124 -T report an error if DSTFILE is a directory.
125 93
126 Environment variables override the default commands: 94 Environment variables override the default commands:
127 CHGRPPROG CHMODPROG CHOWNPROG CMPPROG CPPROG MKDIRPROG MVPROG 95 CHGRPPROG CHMODPROG CHOWNPROG CPPROG MKDIRPROG MVPROG RMPROG STRIPPROG
128 RMPROG STRIPPROG
129 " 96 "
130 97
131 while test $# -ne 0; do 98 while test -n "$1"; do
132 case $1 in 99 case $1 in
133 -c) ;; 100 -c) shift
101 continue;;
134 102
135 -C) copy_on_change=true;; 103 -d) dir_arg=true
136 104 shift
137 -d) dir_arg=true;; 105 continue;;
138 106
139 -g) chgrpcmd="$chgrpprog $2" 107 -g) chgrpcmd="$chgrpprog $2"
140 » shift;; 108 shift
109 shift
110 continue;;
141 111
142 --help) echo "$usage"; exit $?;; 112 --help) echo "$usage"; exit $?;;
143 113
144 -m) mode=$2 114 -m) chmodcmd="$chmodprog $2"
145 » case $mode in 115 shift
146 » *' '* | *'» '* | *' 116 shift
147 '*» | *'*'* | *'?'* | *'['*) 117 continue;;
148 » echo "$0: invalid mode: $mode" >&2
149 » exit 1;;
150 » esac
151 » shift;;
152 118
153 -o) chowncmd="$chownprog $2" 119 -o) chowncmd="$chownprog $2"
154 » shift;; 120 shift
121 shift
122 continue;;
155 123
156 -s) stripcmd=$stripprog;; 124 -s) stripcmd=$stripprog
125 shift
126 continue;;
157 127
158 -t) dst_arg=$2 128 -t) dstarg=$2
159 » shift;; 129 » shift
130 » shift
131 » continue;;
160 132
161 -T) no_target_directory=true;; 133 -T) no_target_directory=true
134 » shift
135 » continue;;
162 136
163 --version) echo "$0 $scriptversion"; exit $?;; 137 --version) echo "$0 $scriptversion"; exit $?;;
164 138
165 --)»shift 139 *) # When -d is used, all remaining arguments are directories to create.
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
166 break;; 153 break;;
167
168 -*) echo "$0: invalid option: $1" >&2
169 exit 1;;
170
171 *) break;;
172 esac 154 esac
173 shift
174 done 155 done
175 156
176 if test $# -ne 0 && test -z "$dir_arg$dst_arg"; then 157 if test -z "$1"; 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
193 if test -z "$dir_arg"; then 158 if test -z "$dir_arg"; then
194 echo "$0: no input file specified." >&2 159 echo "$0: no input file specified." >&2
195 exit 1 160 exit 1
196 fi 161 fi
197 # It's OK to call `install-sh -d' without argument. 162 # It's OK to call `install-sh -d' without argument.
198 # This can happen when creating conditional directories. 163 # This can happen when creating conditional directories.
199 exit 0 164 exit 0
200 fi 165 fi
201 166
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
229 for src 167 for src
230 do 168 do
231 # Protect names starting with `-'. 169 # Protect names starting with `-'.
232 case $src in 170 case $src in
233 -*) src=./$src;; 171 -*) src=./$src ;;
234 esac 172 esac
235 173
236 if test -n "$dir_arg"; then 174 if test -n "$dir_arg"; then
237 dst=$src 175 dst=$src
238 dstdir=$dst 176 src=
239 test -d "$dstdir" 177
240 dstdir_status=$? 178 if test -d "$dst"; then
179 mkdircmd=:
180 chmodcmd=
181 else
182 mkdircmd=$mkdirprog
183 fi
241 else 184 else
242
243 # Waiting for this to be detected by the "$cpprog $src $dsttmp" command 185 # Waiting for this to be detected by the "$cpprog $src $dsttmp" command
244 # might cause directories to be created, which would be especially bad 186 # might cause directories to be created, which would be especially bad
245 # if $src (and thus $dsttmp) contains '*'. 187 # if $src (and thus $dsttmp) contains '*'.
246 if test ! -f "$src" && test ! -d "$src"; then 188 if test ! -f "$src" && test ! -d "$src"; then
247 echo "$0: $src does not exist." >&2 189 echo "$0: $src does not exist." >&2
248 exit 1 190 exit 1
249 fi 191 fi
250 192
251 if test -z "$dst_arg"; then 193 if test -z "$dstarg"; then
252 echo "$0: no destination specified." >&2 194 echo "$0: no destination specified." >&2
253 exit 1 195 exit 1
254 fi 196 fi
255 197
256 dst=$dst_arg 198 dst=$dstarg
257 # Protect names starting with `-'. 199 # Protect names starting with `-'.
258 case $dst in 200 case $dst in
259 -*) dst=./$dst;; 201 -*) dst=./$dst ;;
260 esac 202 esac
261 203
262 # If destination is a directory, append the input filename; won't work 204 # If destination is a directory, append the input filename; won't work
263 # if double slashes aren't ignored. 205 # if double slashes aren't ignored.
264 if test -d "$dst"; then 206 if test -d "$dst"; then
265 if test -n "$no_target_directory"; then 207 if test -n "$no_target_directory"; then
266 » echo "$0: $dst_arg: Is a directory" >&2 208 » echo "$0: $dstarg: Is a directory" >&2
267 exit 1 209 exit 1
268 fi 210 fi
269 dstdir=$dst 211 dst=$dst/`basename "$src"`
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=$?
302 fi 212 fi
303 fi 213 fi
304 214
305 obsolete_mkdir_used=false 215 # This sed command emulates the dirname command.
216 dstdir=`echo "$dst" | sed -e 's,/*$,,;s,[^/]*$,,;s,/*$,,;s,^$,.,'`
306 217
307 if test $dstdir_status != 0; then 218 # Make sure that the destination directory exists.
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;;
317 219
318 » *[0-7]) 220 # Skip lots of stat calls in the usual case.
319 » mkdir_umask=`expr $umask + 22 \ 221 if test ! -d "$dstdir"; then
320 » - $umask % 100 % 40 + $umask % 20 \ 222 defaultIFS='
321 » - $umask % 10 % 4 + $umask % 2 223 » '
322 » `;; 224 IFS="${IFS-$defaultIFS}"
323 » *) mkdir_umask=$umask,go-w;;
324 » esac
325 225
326 » # With -d, create the new directory with the user-specified mode. 226 oIFS=$IFS
327 » # Otherwise, rely on $mkdir_umask. 227 # Some sh's can't handle IFS=/ for some reason.
328 » if test -n "$dir_arg"; then 228 IFS='%'
329 » mkdir_mode=-m$mode 229 set x `echo "$dstdir" | sed -e 's@/@%@g' -e 's@^%@/@'`
330 » else 230 shift
331 » mkdir_mode= 231 IFS=$oIFS
332 » fi
333 232
334 » posix_mkdir=false 233 pathcomp=
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
343 234
344 » if (umask $mkdir_umask && 235 while test $# -ne 0 ; do
345 » » exec $mkdirprog $mkdir_mode -p -- "$tmpdir/d") >/dev/null 2>&1 236 pathcomp=$pathcomp$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
398 shift 237 shift
399 $posix_glob set +f 238 if test ! -d "$pathcomp"; then
400 IFS=$oIFS 239 $mkdirprog "$pathcomp"
401 240 » # mkdir can fail with a `File exist' error in case several
402 prefixes= 241 » # install-sh are creating the directory concurrently. This
403 242 » # is OK.
404 for d 243 » test -d "$pathcomp" || exit
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
434 fi 244 fi
435 fi 245 pathcomp=$pathcomp/
246 done
436 fi 247 fi
437 248
438 if test -n "$dir_arg"; then 249 if test -n "$dir_arg"; then
439 { test -z "$chowncmd" || $doit $chowncmd "$dst"; } && 250 $doit $mkdircmd "$dst" \
440 { test -z "$chgrpcmd" || $doit $chgrpcmd "$dst"; } && 251 && { test -z "$chowncmd" || $doit $chowncmd "$dst"; } \
441 { test "$obsolete_mkdir_used$chowncmd$chgrpcmd" = false || 252 && { test -z "$chgrpcmd" || $doit $chgrpcmd "$dst"; } \
442 test -z "$chmodcmd" || $doit $chmodcmd $mode "$dst"; } || exit 1 253 && { test -z "$stripcmd" || $doit $stripcmd "$dst"; } \
254 && { test -z "$chmodcmd" || $doit $chmodcmd "$dst"; }
255
443 else 256 else
257 dstfile=`basename "$dst"`
444 258
445 # Make a couple of temp file names in the proper directory. 259 # Make a couple of temp file names in the proper directory.
446 dsttmp=$dstdir/_inst.$$_ 260 dsttmp=$dstdir/_inst.$$_
447 rmtmp=$dstdir/_rm.$$_ 261 rmtmp=$dstdir/_rm.$$_
448 262
449 # Trap to clean up those temp files at exit. 263 # Trap to clean up those temp files at exit.
450 trap 'ret=$?; rm -f "$dsttmp" "$rmtmp" && exit $ret' 0 264 trap 'ret=$?; rm -f "$dsttmp" "$rmtmp" && exit $ret' 0
265 trap '(exit $?); exit' 1 2 13 15
451 266
452 # Copy the file name to the temp name. 267 # Copy the file name to the temp name.
453 (umask $cp_umask && $doit_exec $cpprog "$src" "$dsttmp") && 268 $doit $cpprog "$src" "$dsttmp" &&
454 269
455 # and set any options; do chmod last to preserve setuid bits. 270 # and set any options; do chmod last to preserve setuid bits.
456 # 271 #
457 # If any of these fail, we abort the whole thing. If we want to 272 # If any of these fail, we abort the whole thing. If we want to
458 # ignore errors from any of these, just make sure not to ignore 273 # ignore errors from any of these, just make sure not to ignore
459 # errors from the above "$doit $cpprog $src $dsttmp" command. 274 # errors from the above "$doit $cpprog $src $dsttmp" command.
460 # 275 #
461 { test -z "$chowncmd" || $doit $chowncmd "$dsttmp"; } && 276 { test -z "$chowncmd" || $doit $chowncmd "$dsttmp"; } \
462 { test -z "$chgrpcmd" || $doit $chgrpcmd "$dsttmp"; } && 277 && { test -z "$chgrpcmd" || $doit $chgrpcmd "$dsttmp"; } \
463 { test -z "$stripcmd" || $doit $stripcmd "$dsttmp"; } && 278 && { test -z "$stripcmd" || $doit $stripcmd "$dsttmp"; } \
464 { test -z "$chmodcmd" || $doit $chmodcmd $mode "$dsttmp"; } && 279 && { test -z "$chmodcmd" || $doit $chmodcmd "$dsttmp"; } &&
465 280
466 # If -C, don't bother to copy if it wouldn't change the file. 281 # Now rename the file to the real destination.
467 if $copy_on_change && 282 { $doit $mvcmd -f "$dsttmp" "$dstdir/$dstfile" 2>/dev/null \
468 old=`LC_ALL=C ls -dlL "$dst"» 2>/dev/null` && 283 || {
469 new=`LC_ALL=C ls -dlL "$dsttmp"» 2>/dev/null` && 284 » # The rename failed, perhaps because mv can't rename something else
285 » # to itself, or perhaps because mv is so ancient that it does not
286 » # support -f.
470 287
471 eval "$initialize_posix_glob" && 288 » # Now remove or move aside any old file at destination location.
472 $posix_glob set -f && 289 » # We try this two ways since rm can't unlink itself on some
473 set X $old && old=:$2:$4:$5:$6 && 290 » # systems and the destination file might be busy for other
474 set X $new && new=:$2:$4:$5:$6 && 291 » # reasons. In this case, the final cleanup might fail but the new
475 $posix_glob set +f && 292 » # file should still install successfully.
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 » } &&
476 305
477 test "$old" = "$new" && 306 » # Now rename the file to the real destination.
478 $cmpprog "$dst" "$dsttmp" >/dev/null 2>&1 307 » $doit $mvcmd "$dsttmp" "$dstdir/$dstfile"
479 then 308 » }
480 rm -f "$dsttmp" 309 }
481 else 310 fi || { (exit 1); exit 1; }
482 # Rename the file to the real destination. 311 done
483 $doit $mvcmd -f "$dsttmp" "$dst" 2>/dev/null ||
484 312
485 # The rename failed, perhaps because mv can't rename something else 313 # The final little trick to "correctly" pass the exit status to the exit trap.
486 # to itself, or perhaps because mv is so ancient that it does not 314 {
487 # support -f. 315 (exit 0); exit 0
488 { 316 }
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
512 done
513 317
514 # Local variables: 318 # Local variables:
515 # eval: (add-hook 'write-file-hooks 'time-stamp) 319 # eval: (add-hook 'write-file-hooks 'time-stamp)
516 # time-stamp-start: "scriptversion=" 320 # time-stamp-start: "scriptversion="
517 # time-stamp-format: "%:y-%02m-%02d.%02H" 321 # time-stamp-format: "%:y-%02m-%02d.%02H"
518 # time-stamp-end: "$" 322 # time-stamp-end: "$"
519 # End: 323 # 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