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

Side by Side Diff: install-sh

Issue 2364793002: Revert "Uprev libmtp to 1.1.12" (Closed) Base URL: https://chromium.googlesource.com/chromium/deps/libmtp@master
Patch Set: Created 4 years, 3 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
« no previous file with comments | « examples/tracks.c ('k') | libmtp.gyp » ('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=2013-12-25.23; # UTC 4 scriptversion=2011-01-19.21; # UTC
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 13 matching lines...) Expand all
28 # 28 #
29 # Except as contained in this notice, the name of the X Consortium shall not 29 # Except as contained in this notice, the name of the X Consortium shall not
30 # be used in advertising or otherwise to promote the sale, use or other deal- 30 # be used in advertising or otherwise to promote the sale, use or other deal-
31 # ings in this Software without prior written authorization from the X Consor- 31 # ings in this Software without prior written authorization from the X Consor-
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.
43 43
44 tab=' '
45 nl=' 44 nl='
46 ' 45 '
47 IFS=" $tab$nl" 46 IFS=" ""» $nl"
48 47
49 # Set DOITPROG to "echo" to test this script. 48 # set DOITPROG to echo to test this script
50 49
50 # Don't use :- since 4.3BSD and earlier shells don't like it.
51 doit=${DOITPROG-} 51 doit=${DOITPROG-}
52 doit_exec=${doit:-exec} 52 if test -z "$doit"; then
53 doit_exec=exec
54 else
55 doit_exec=$doit
56 fi
53 57
54 # Put in absolute file names if you don't have them in your path; 58 # Put in absolute file names if you don't have them in your path;
55 # or use environment vars. 59 # or use environment vars.
56 60
57 chgrpprog=${CHGRPPROG-chgrp} 61 chgrpprog=${CHGRPPROG-chgrp}
58 chmodprog=${CHMODPROG-chmod} 62 chmodprog=${CHMODPROG-chmod}
59 chownprog=${CHOWNPROG-chown} 63 chownprog=${CHOWNPROG-chown}
60 cmpprog=${CMPPROG-cmp} 64 cmpprog=${CMPPROG-cmp}
61 cpprog=${CPPROG-cp} 65 cpprog=${CPPROG-cp}
62 mkdirprog=${MKDIRPROG-mkdir} 66 mkdirprog=${MKDIRPROG-mkdir}
63 mvprog=${MVPROG-mv} 67 mvprog=${MVPROG-mv}
64 rmprog=${RMPROG-rm} 68 rmprog=${RMPROG-rm}
65 stripprog=${STRIPPROG-strip} 69 stripprog=${STRIPPROG-strip}
66 70
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
67 posix_mkdir= 82 posix_mkdir=
68 83
69 # Desired mode of installed file. 84 # Desired mode of installed file.
70 mode=0755 85 mode=0755
71 86
72 chgrpcmd= 87 chgrpcmd=
73 chmodcmd=$chmodprog 88 chmodcmd=$chmodprog
74 chowncmd= 89 chowncmd=
75 mvcmd=$mvprog 90 mvcmd=$mvprog
76 rmcmd="$rmprog -f" 91 rmcmd="$rmprog -f"
77 stripcmd= 92 stripcmd=
78 93
79 src= 94 src=
80 dst= 95 dst=
81 dir_arg= 96 dir_arg=
82 dst_arg= 97 dst_arg=
83 98
84 copy_on_change=false 99 copy_on_change=false
85 is_target_a_directory=possibly 100 no_target_directory=
86 101
87 usage="\ 102 usage="\
88 Usage: $0 [OPTION]... [-T] SRCFILE DSTFILE 103 Usage: $0 [OPTION]... [-T] SRCFILE DSTFILE
89 or: $0 [OPTION]... SRCFILES... DIRECTORY 104 or: $0 [OPTION]... SRCFILES... DIRECTORY
90 or: $0 [OPTION]... -t DIRECTORY SRCFILES... 105 or: $0 [OPTION]... -t DIRECTORY SRCFILES...
91 or: $0 [OPTION]... -d DIRECTORIES... 106 or: $0 [OPTION]... -d DIRECTORIES...
92 107
93 In the 1st form, copy SRCFILE to DSTFILE. 108 In the 1st form, copy SRCFILE to DSTFILE.
94 In the 2nd and 3rd, copy all SRCFILES to DIRECTORY. 109 In the 2nd and 3rd, copy all SRCFILES to DIRECTORY.
95 In the 4th, create DIRECTORIES. 110 In the 4th, create DIRECTORIES.
(...skipping 19 matching lines...) Expand all
115 130
116 while test $# -ne 0; do 131 while test $# -ne 0; do
117 case $1 in 132 case $1 in
118 -c) ;; 133 -c) ;;
119 134
120 -C) copy_on_change=true;; 135 -C) copy_on_change=true;;
121 136
122 -d) dir_arg=true;; 137 -d) dir_arg=true;;
123 138
124 -g) chgrpcmd="$chgrpprog $2" 139 -g) chgrpcmd="$chgrpprog $2"
125 shift;; 140 » shift;;
126 141
127 --help) echo "$usage"; exit $?;; 142 --help) echo "$usage"; exit $?;;
128 143
129 -m) mode=$2 144 -m) mode=$2
130 case $mode in 145 » case $mode in
131 *' '* | *"$tab"* | *"$nl"* | *'*'* | *'?'* | *'['*) 146 » *' '* | *'» '* | *'
132 echo "$0: invalid mode: $mode" >&2 147 '*» | *'*'* | *'?'* | *'['*)
133 exit 1;; 148 » echo "$0: invalid mode: $mode" >&2
134 esac 149 » exit 1;;
135 shift;; 150 » esac
151 » shift;;
136 152
137 -o) chowncmd="$chownprog $2" 153 -o) chowncmd="$chownprog $2"
138 shift;; 154 » shift;;
139 155
140 -s) stripcmd=$stripprog;; 156 -s) stripcmd=$stripprog;;
141 157
142 -t) 158 -t) dst_arg=$2
143 is_target_a_directory=always 159 » # Protect names problematic for `test' and other utilities.
144 dst_arg=$2 160 » case $dst_arg in
145 # Protect names problematic for 'test' and other utilities. 161 » -* | [=\(\)!]) dst_arg=./$dst_arg;;
146 case $dst_arg in 162 » esac
147 -* | [=\(\)!]) dst_arg=./$dst_arg;; 163 » shift;;
148 esac
149 shift;;
150 164
151 -T) is_target_a_directory=never;; 165 -T) no_target_directory=true;;
152 166
153 --version) echo "$0 $scriptversion"; exit $?;; 167 --version) echo "$0 $scriptversion"; exit $?;;
154 168
155 --) shift 169 --)»shift
156 break;; 170 » break;;
157 171
158 -*) echo "$0: invalid option: $1" >&2 172 -*)»echo "$0: invalid option: $1" >&2
159 exit 1;; 173 » exit 1;;
160 174
161 *) break;; 175 *) break;;
162 esac 176 esac
163 shift 177 shift
164 done 178 done
165 179
166 # We allow the use of options -d and -T together, by making -d
167 # take the precedence; this is for compatibility with GNU install.
168
169 if test -n "$dir_arg"; then
170 if test -n "$dst_arg"; then
171 echo "$0: target directory not allowed when installing a directory." >&2
172 exit 1
173 fi
174 fi
175
176 if test $# -ne 0 && test -z "$dir_arg$dst_arg"; then 180 if test $# -ne 0 && test -z "$dir_arg$dst_arg"; then
177 # When -d is used, all remaining arguments are directories to create. 181 # When -d is used, all remaining arguments are directories to create.
178 # When -t is used, the destination is already specified. 182 # When -t is used, the destination is already specified.
179 # Otherwise, the last argument is the destination. Remove it from $@. 183 # Otherwise, the last argument is the destination. Remove it from $@.
180 for arg 184 for arg
181 do 185 do
182 if test -n "$dst_arg"; then 186 if test -n "$dst_arg"; then
183 # $@ is not empty: it contains at least $arg. 187 # $@ is not empty: it contains at least $arg.
184 set fnord "$@" "$dst_arg" 188 set fnord "$@" "$dst_arg"
185 shift # fnord 189 shift # fnord
186 fi 190 fi
187 shift # arg 191 shift # arg
188 dst_arg=$arg 192 dst_arg=$arg
189 # Protect names problematic for 'test' and other utilities. 193 # Protect names problematic for `test' and other utilities.
190 case $dst_arg in 194 case $dst_arg in
191 -* | [=\(\)!]) dst_arg=./$dst_arg;; 195 -* | [=\(\)!]) dst_arg=./$dst_arg;;
192 esac 196 esac
193 done 197 done
194 fi 198 fi
195 199
196 if test $# -eq 0; then 200 if test $# -eq 0; then
197 if test -z "$dir_arg"; then 201 if test -z "$dir_arg"; then
198 echo "$0: no input file specified." >&2 202 echo "$0: no input file specified." >&2
199 exit 1 203 exit 1
200 fi 204 fi
201 # It's OK to call 'install-sh -d' without argument. 205 # It's OK to call `install-sh -d' without argument.
202 # This can happen when creating conditional directories. 206 # This can happen when creating conditional directories.
203 exit 0 207 exit 0
204 fi 208 fi
205 209
206 if test -z "$dir_arg"; then 210 if test -z "$dir_arg"; then
207 if test $# -gt 1 || test "$is_target_a_directory" = always; then
208 if test ! -d "$dst_arg"; then
209 echo "$0: $dst_arg: Is not a directory." >&2
210 exit 1
211 fi
212 fi
213 fi
214
215 if test -z "$dir_arg"; then
216 do_exit='(exit $ret); exit $ret' 211 do_exit='(exit $ret); exit $ret'
217 trap "ret=129; $do_exit" 1 212 trap "ret=129; $do_exit" 1
218 trap "ret=130; $do_exit" 2 213 trap "ret=130; $do_exit" 2
219 trap "ret=141; $do_exit" 13 214 trap "ret=141; $do_exit" 13
220 trap "ret=143; $do_exit" 15 215 trap "ret=143; $do_exit" 15
221 216
222 # Set umask so as not to create temps with too-generous modes. 217 # Set umask so as not to create temps with too-generous modes.
223 # However, 'strip' requires both read and write access to temps. 218 # However, 'strip' requires both read and write access to temps.
224 case $mode in 219 case $mode in
225 # Optimize common cases. 220 # Optimize common cases.
226 *644) cp_umask=133;; 221 *644) cp_umask=133;;
227 *755) cp_umask=22;; 222 *755) cp_umask=22;;
228 223
229 *[0-7]) 224 *[0-7])
230 if test -z "$stripcmd"; then 225 if test -z "$stripcmd"; then
231 u_plus_rw= 226 » u_plus_rw=
232 else 227 else
233 u_plus_rw='% 200' 228 » u_plus_rw='% 200'
234 fi 229 fi
235 cp_umask=`expr '(' 777 - $mode % 1000 ')' $u_plus_rw`;; 230 cp_umask=`expr '(' 777 - $mode % 1000 ')' $u_plus_rw`;;
236 *) 231 *)
237 if test -z "$stripcmd"; then 232 if test -z "$stripcmd"; then
238 u_plus_rw= 233 » u_plus_rw=
239 else 234 else
240 u_plus_rw=,u+rw 235 » u_plus_rw=,u+rw
241 fi 236 fi
242 cp_umask=$mode$u_plus_rw;; 237 cp_umask=$mode$u_plus_rw;;
243 esac 238 esac
244 fi 239 fi
245 240
246 for src 241 for src
247 do 242 do
248 # Protect names problematic for 'test' and other utilities. 243 # Protect names problematic for `test' and other utilities.
249 case $src in 244 case $src in
250 -* | [=\(\)!]) src=./$src;; 245 -* | [=\(\)!]) src=./$src;;
251 esac 246 esac
252 247
253 if test -n "$dir_arg"; then 248 if test -n "$dir_arg"; then
254 dst=$src 249 dst=$src
255 dstdir=$dst 250 dstdir=$dst
256 test -d "$dstdir" 251 test -d "$dstdir"
257 dstdir_status=$? 252 dstdir_status=$?
258 else 253 else
259 254
260 # Waiting for this to be detected by the "$cpprog $src $dsttmp" command 255 # Waiting for this to be detected by the "$cpprog $src $dsttmp" command
261 # might cause directories to be created, which would be especially bad 256 # might cause directories to be created, which would be especially bad
262 # if $src (and thus $dsttmp) contains '*'. 257 # if $src (and thus $dsttmp) contains '*'.
263 if test ! -f "$src" && test ! -d "$src"; then 258 if test ! -f "$src" && test ! -d "$src"; then
264 echo "$0: $src does not exist." >&2 259 echo "$0: $src does not exist." >&2
265 exit 1 260 exit 1
266 fi 261 fi
267 262
268 if test -z "$dst_arg"; then 263 if test -z "$dst_arg"; then
269 echo "$0: no destination specified." >&2 264 echo "$0: no destination specified." >&2
270 exit 1 265 exit 1
271 fi 266 fi
272 dst=$dst_arg 267 dst=$dst_arg
273 268
274 # If destination is a directory, append the input filename; won't work 269 # If destination is a directory, append the input filename; won't work
275 # if double slashes aren't ignored. 270 # if double slashes aren't ignored.
276 if test -d "$dst"; then 271 if test -d "$dst"; then
277 if test "$is_target_a_directory" = never; then 272 if test -n "$no_target_directory"; then
278 echo "$0: $dst_arg: Is a directory" >&2 273 » echo "$0: $dst_arg: Is a directory" >&2
279 exit 1 274 » exit 1
280 fi 275 fi
281 dstdir=$dst 276 dstdir=$dst
282 dst=$dstdir/`basename "$src"` 277 dst=$dstdir/`basename "$src"`
283 dstdir_status=0 278 dstdir_status=0
284 else 279 else
285 dstdir=`dirname "$dst"` 280 # Prefer dirname, but fall back on a substitute if dirname fails.
281 dstdir=`
282 » (dirname "$dst") 2>/dev/null ||
283 » expr X"$dst" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
284 » X"$dst" : 'X\(//\)[^/]' \| \
285 » X"$dst" : 'X\(//\)$' \| \
286 » X"$dst" : 'X\(/\)' \| . 2>/dev/null ||
287 » echo X"$dst" |
288 » sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
289 » » s//\1/
290 » » q
291 » » }
292 » » /^X\(\/\/\)[^/].*/{
293 » » s//\1/
294 » » q
295 » » }
296 » » /^X\(\/\/\)$/{
297 » » s//\1/
298 » » q
299 » » }
300 » » /^X\(\/\).*/{
301 » » s//\1/
302 » » q
303 » » }
304 » » s/.*/./; q'
305 `
306
286 test -d "$dstdir" 307 test -d "$dstdir"
287 dstdir_status=$? 308 dstdir_status=$?
288 fi 309 fi
289 fi 310 fi
290 311
291 obsolete_mkdir_used=false 312 obsolete_mkdir_used=false
292 313
293 if test $dstdir_status != 0; then 314 if test $dstdir_status != 0; then
294 case $posix_mkdir in 315 case $posix_mkdir in
295 '') 316 '')
296 # Create intermediate dirs using mode 755 as modified by the umask. 317 » # Create intermediate dirs using mode 755 as modified by the umask.
297 # This is like FreeBSD 'install' as of 1997-10-28. 318 » # This is like FreeBSD 'install' as of 1997-10-28.
298 umask=`umask` 319 » umask=`umask`
299 case $stripcmd.$umask in 320 » case $stripcmd.$umask in
300 # Optimize common cases. 321 » # Optimize common cases.
301 *[2367][2367]) mkdir_umask=$umask;; 322 » *[2367][2367]) mkdir_umask=$umask;;
302 .*0[02][02] | .[02][02] | .[02]) mkdir_umask=22;; 323 » .*0[02][02] | .[02][02] | .[02]) mkdir_umask=22;;
303 324
304 *[0-7]) 325 » *[0-7])
305 mkdir_umask=`expr $umask + 22 \ 326 » mkdir_umask=`expr $umask + 22 \
306 - $umask % 100 % 40 + $umask % 20 \ 327 » - $umask % 100 % 40 + $umask % 20 \
307 - $umask % 10 % 4 + $umask % 2 328 » - $umask % 10 % 4 + $umask % 2
308 `;; 329 » `;;
309 *) mkdir_umask=$umask,go-w;; 330 » *) mkdir_umask=$umask,go-w;;
310 esac 331 » esac
311 332
312 # With -d, create the new directory with the user-specified mode. 333 » # With -d, create the new directory with the user-specified mode.
313 # Otherwise, rely on $mkdir_umask. 334 » # Otherwise, rely on $mkdir_umask.
314 if test -n "$dir_arg"; then 335 » if test -n "$dir_arg"; then
315 mkdir_mode=-m$mode 336 » mkdir_mode=-m$mode
316 else 337 » else
317 mkdir_mode= 338 » mkdir_mode=
318 fi 339 » fi
319 340
320 posix_mkdir=false 341 » posix_mkdir=false
321 case $umask in 342 » case $umask in
322 *[123567][0-7][0-7]) 343 » *[123567][0-7][0-7])
323 # POSIX mkdir -p sets u+wx bits regardless of umask, which 344 » # POSIX mkdir -p sets u+wx bits regardless of umask, which
324 # is incompatible with FreeBSD 'install' when (umask & 300) != 0. 345 » # is incompatible with FreeBSD 'install' when (umask & 300) != 0.
325 ;; 346 » ;;
326 *) 347 » *)
327 tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$ 348 » tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$
328 trap 'ret=$?; rmdir "$tmpdir/d" "$tmpdir" 2>/dev/null; exit $ret' 0 349 » trap 'ret=$?; rmdir "$tmpdir/d" "$tmpdir" 2>/dev/null; exit $ret' 0
329 350
330 if (umask $mkdir_umask && 351 » if (umask $mkdir_umask &&
331 exec $mkdirprog $mkdir_mode -p -- "$tmpdir/d") >/dev/null 2>&1 352 » » exec $mkdirprog $mkdir_mode -p -- "$tmpdir/d") >/dev/null 2>&1
332 then 353 » then
333 if test -z "$dir_arg" || { 354 » if test -z "$dir_arg" || {
334 # Check for POSIX incompatibilities with -m. 355 » » # Check for POSIX incompatibilities with -m.
335 # HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or 356 » » # HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or
336 # other-writable bit of parent directory when it shouldn't. 357 » » # other-writeable bit of parent directory when it shouldn't.
337 # FreeBSD 6.1 mkdir -m -p sets mode of existing directory. 358 » » # FreeBSD 6.1 mkdir -m -p sets mode of existing directory.
338 ls_ld_tmpdir=`ls -ld "$tmpdir"` 359 » » ls_ld_tmpdir=`ls -ld "$tmpdir"`
339 case $ls_ld_tmpdir in 360 » » case $ls_ld_tmpdir in
340 d????-?r-*) different_mode=700;; 361 » » d????-?r-*) different_mode=700;;
341 d????-?--*) different_mode=755;; 362 » » d????-?--*) different_mode=755;;
342 *) false;; 363 » » *) false;;
343 esac && 364 » » esac &&
344 $mkdirprog -m$different_mode -p -- "$tmpdir" && { 365 » » $mkdirprog -m$different_mode -p -- "$tmpdir" && {
345 ls_ld_tmpdir_1=`ls -ld "$tmpdir"` 366 » » ls_ld_tmpdir_1=`ls -ld "$tmpdir"`
346 test "$ls_ld_tmpdir" = "$ls_ld_tmpdir_1" 367 » » test "$ls_ld_tmpdir" = "$ls_ld_tmpdir_1"
347 } 368 » » }
348 } 369 » » }
349 then posix_mkdir=: 370 » then posix_mkdir=:
350 fi 371 » fi
351 rmdir "$tmpdir/d" "$tmpdir" 372 » rmdir "$tmpdir/d" "$tmpdir"
352 else 373 » else
353 # Remove any dirs left behind by ancient mkdir implementations. 374 » # Remove any dirs left behind by ancient mkdir implementations.
354 rmdir ./$mkdir_mode ./-p ./-- 2>/dev/null 375 » rmdir ./$mkdir_mode ./-p ./-- 2>/dev/null
355 fi 376 » fi
356 trap '' 0;; 377 » trap '' 0;;
357 esac;; 378 » esac;;
358 esac 379 esac
359 380
360 if 381 if
361 $posix_mkdir && ( 382 $posix_mkdir && (
362 umask $mkdir_umask && 383 » umask $mkdir_umask &&
363 $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir" 384 » $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir"
364 ) 385 )
365 then : 386 then :
366 else 387 else
367 388
368 # The umask is ridiculous, or mkdir does not conform to POSIX, 389 # The umask is ridiculous, or mkdir does not conform to POSIX,
369 # or it failed possibly due to a race condition. Create the 390 # or it failed possibly due to a race condition. Create the
370 # directory the slow way, step by step, checking for races as we go. 391 # directory the slow way, step by step, checking for races as we go.
371 392
372 case $dstdir in 393 case $dstdir in
373 /*) prefix='/';; 394 » /*) prefix='/';;
374 [-=\(\)!]*) prefix='./';; 395 » [-=\(\)!]*) prefix='./';;
375 *) prefix='';; 396 » *) prefix='';;
376 esac 397 esac
377 398
399 eval "$initialize_posix_glob"
400
378 oIFS=$IFS 401 oIFS=$IFS
379 IFS=/ 402 IFS=/
380 set -f 403 $posix_glob set -f
381 set fnord $dstdir 404 set fnord $dstdir
382 shift 405 shift
383 set +f 406 $posix_glob set +f
384 IFS=$oIFS 407 IFS=$oIFS
385 408
386 prefixes= 409 prefixes=
387 410
388 for d 411 for d
389 do 412 do
390 test X"$d" = X && continue 413 » test X"$d" = X && continue
391 414
392 prefix=$prefix$d 415 » prefix=$prefix$d
393 if test -d "$prefix"; then 416 » if test -d "$prefix"; then
394 prefixes= 417 » prefixes=
395 else 418 » else
396 if $posix_mkdir; then 419 » if $posix_mkdir; then
397 (umask=$mkdir_umask && 420 » (umask=$mkdir_umask &&
398 $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir") && break 421 » $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir") && break
399 # Don't fail if two instances are running concurrently. 422 » # Don't fail if two instances are running concurrently.
400 test -d "$prefix" || exit 1 423 » test -d "$prefix" || exit 1
401 else 424 » else
402 case $prefix in 425 » case $prefix in
403 *\'*) qprefix=`echo "$prefix" | sed "s/'/'\\\\\\\\''/g"`;; 426 » *\'*) qprefix=`echo "$prefix" | sed "s/'/'\\\\\\\\''/g"`;;
404 *) qprefix=$prefix;; 427 » *) qprefix=$prefix;;
405 esac 428 » esac
406 prefixes="$prefixes '$qprefix'" 429 » prefixes="$prefixes '$qprefix'"
407 fi 430 » fi
408 fi 431 » fi
409 prefix=$prefix/ 432 » prefix=$prefix/
410 done 433 done
411 434
412 if test -n "$prefixes"; then 435 if test -n "$prefixes"; then
413 # Don't fail if two instances are running concurrently. 436 » # Don't fail if two instances are running concurrently.
414 (umask $mkdir_umask && 437 » (umask $mkdir_umask &&
415 eval "\$doit_exec \$mkdirprog $prefixes") || 438 » eval "\$doit_exec \$mkdirprog $prefixes") ||
416 test -d "$dstdir" || exit 1 439 » test -d "$dstdir" || exit 1
417 obsolete_mkdir_used=true 440 » obsolete_mkdir_used=true
418 fi 441 fi
419 fi 442 fi
420 fi 443 fi
421 444
422 if test -n "$dir_arg"; then 445 if test -n "$dir_arg"; then
423 { test -z "$chowncmd" || $doit $chowncmd "$dst"; } && 446 { test -z "$chowncmd" || $doit $chowncmd "$dst"; } &&
424 { test -z "$chgrpcmd" || $doit $chgrpcmd "$dst"; } && 447 { test -z "$chgrpcmd" || $doit $chgrpcmd "$dst"; } &&
425 { test "$obsolete_mkdir_used$chowncmd$chgrpcmd" = false || 448 { test "$obsolete_mkdir_used$chowncmd$chgrpcmd" = false ||
426 test -z "$chmodcmd" || $doit $chmodcmd $mode "$dst"; } || exit 1 449 test -z "$chmodcmd" || $doit $chmodcmd $mode "$dst"; } || exit 1
427 else 450 else
(...skipping 14 matching lines...) Expand all
442 # ignore errors from any of these, just make sure not to ignore 465 # ignore errors from any of these, just make sure not to ignore
443 # errors from the above "$doit $cpprog $src $dsttmp" command. 466 # errors from the above "$doit $cpprog $src $dsttmp" command.
444 # 467 #
445 { test -z "$chowncmd" || $doit $chowncmd "$dsttmp"; } && 468 { test -z "$chowncmd" || $doit $chowncmd "$dsttmp"; } &&
446 { test -z "$chgrpcmd" || $doit $chgrpcmd "$dsttmp"; } && 469 { test -z "$chgrpcmd" || $doit $chgrpcmd "$dsttmp"; } &&
447 { test -z "$stripcmd" || $doit $stripcmd "$dsttmp"; } && 470 { test -z "$stripcmd" || $doit $stripcmd "$dsttmp"; } &&
448 { test -z "$chmodcmd" || $doit $chmodcmd $mode "$dsttmp"; } && 471 { test -z "$chmodcmd" || $doit $chmodcmd $mode "$dsttmp"; } &&
449 472
450 # If -C, don't bother to copy if it wouldn't change the file. 473 # If -C, don't bother to copy if it wouldn't change the file.
451 if $copy_on_change && 474 if $copy_on_change &&
452 old=`LC_ALL=C ls -dlL "$dst" 2>/dev/null` && 475 old=`LC_ALL=C ls -dlL "$dst"» 2>/dev/null` &&
453 new=`LC_ALL=C ls -dlL "$dsttmp" 2>/dev/null` && 476 new=`LC_ALL=C ls -dlL "$dsttmp"» 2>/dev/null` &&
454 set -f && 477
478 eval "$initialize_posix_glob" &&
479 $posix_glob set -f &&
455 set X $old && old=:$2:$4:$5:$6 && 480 set X $old && old=:$2:$4:$5:$6 &&
456 set X $new && new=:$2:$4:$5:$6 && 481 set X $new && new=:$2:$4:$5:$6 &&
457 set +f && 482 $posix_glob set +f &&
483
458 test "$old" = "$new" && 484 test "$old" = "$new" &&
459 $cmpprog "$dst" "$dsttmp" >/dev/null 2>&1 485 $cmpprog "$dst" "$dsttmp" >/dev/null 2>&1
460 then 486 then
461 rm -f "$dsttmp" 487 rm -f "$dsttmp"
462 else 488 else
463 # Rename the file to the real destination. 489 # Rename the file to the real destination.
464 $doit $mvcmd -f "$dsttmp" "$dst" 2>/dev/null || 490 $doit $mvcmd -f "$dsttmp" "$dst" 2>/dev/null ||
465 491
466 # The rename failed, perhaps because mv can't rename something else 492 # The rename failed, perhaps because mv can't rename something else
467 # to itself, or perhaps because mv is so ancient that it does not 493 # to itself, or perhaps because mv is so ancient that it does not
468 # support -f. 494 # support -f.
469 { 495 {
470 # Now remove or move aside any old file at destination location. 496 » # Now remove or move aside any old file at destination location.
471 # We try this two ways since rm can't unlink itself on some 497 » # We try this two ways since rm can't unlink itself on some
472 # systems and the destination file might be busy for other 498 » # systems and the destination file might be busy for other
473 # reasons. In this case, the final cleanup might fail but the new 499 » # reasons. In this case, the final cleanup might fail but the new
474 # file should still install successfully. 500 » # file should still install successfully.
475 { 501 » {
476 test ! -f "$dst" || 502 » test ! -f "$dst" ||
477 $doit $rmcmd -f "$dst" 2>/dev/null || 503 » $doit $rmcmd -f "$dst" 2>/dev/null ||
478 { $doit $mvcmd -f "$dst" "$rmtmp" 2>/dev/null && 504 » { $doit $mvcmd -f "$dst" "$rmtmp" 2>/dev/null &&
479 { $doit $rmcmd -f "$rmtmp" 2>/dev/null; :; } 505 » { $doit $rmcmd -f "$rmtmp" 2>/dev/null; :; }
480 } || 506 » } ||
481 { echo "$0: cannot unlink or rename $dst" >&2 507 » { echo "$0: cannot unlink or rename $dst" >&2
482 (exit 1); exit 1 508 » (exit 1); exit 1
483 } 509 » }
484 } && 510 » } &&
485 511
486 # Now rename the file to the real destination. 512 » # Now rename the file to the real destination.
487 $doit $mvcmd "$dsttmp" "$dst" 513 » $doit $mvcmd "$dsttmp" "$dst"
488 } 514 }
489 fi || exit 1 515 fi || exit 1
490 516
491 trap '' 0 517 trap '' 0
492 fi 518 fi
493 done 519 done
494 520
495 # Local variables: 521 # Local variables:
496 # eval: (add-hook 'write-file-hooks 'time-stamp) 522 # eval: (add-hook 'write-file-hooks 'time-stamp)
497 # time-stamp-start: "scriptversion=" 523 # time-stamp-start: "scriptversion="
498 # time-stamp-format: "%:y-%02m-%02d.%02H" 524 # time-stamp-format: "%:y-%02m-%02d.%02H"
499 # time-stamp-time-zone: "UTC" 525 # time-stamp-time-zone: "UTC"
500 # time-stamp-end: "; # UTC" 526 # time-stamp-end: "; # UTC"
501 # End: 527 # End:
OLDNEW
« no previous file with comments | « examples/tracks.c ('k') | libmtp.gyp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698