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

Side by Side Diff: install-sh

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