ffi-heroku-18 1.9.25

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,210 @@
1
+ /* fficonfig.h.in. Generated from configure.ac by autoheader. */
2
+
3
+ /* Define if building universal (internal helper macro) */
4
+ #undef AC_APPLE_UNIVERSAL_BUILD
5
+
6
+ /* Define to one of `_getb67', `GETB67', `getb67' for Cray-2 and Cray-YMP
7
+ systems. This function is required for `alloca.c' support on those systems.
8
+ */
9
+ #undef CRAY_STACKSEG_END
10
+
11
+ /* Define to 1 if using `alloca.c'. */
12
+ #undef C_ALLOCA
13
+
14
+ /* Define to the flags needed for the .section .eh_frame directive. */
15
+ #undef EH_FRAME_FLAGS
16
+
17
+ /* Define this if you want extra debugging. */
18
+ #undef FFI_DEBUG
19
+
20
+ /* Cannot use PROT_EXEC on this target, so, we revert to alternative means */
21
+ #undef FFI_EXEC_TRAMPOLINE_TABLE
22
+
23
+ /* Define this if you want to enable pax emulated trampolines */
24
+ #undef FFI_MMAP_EXEC_EMUTRAMP_PAX
25
+
26
+ /* Cannot use malloc on this target, so, we revert to alternative means */
27
+ #undef FFI_MMAP_EXEC_WRIT
28
+
29
+ /* Define this if you do not want support for the raw API. */
30
+ #undef FFI_NO_RAW_API
31
+
32
+ /* Define this if you do not want support for aggregate types. */
33
+ #undef FFI_NO_STRUCTS
34
+
35
+ /* Define to 1 if you have `alloca', as a function or macro. */
36
+ #undef HAVE_ALLOCA
37
+
38
+ /* Define to 1 if you have <alloca.h> and it should be used (not on Ultrix).
39
+ */
40
+ #undef HAVE_ALLOCA_H
41
+
42
+ /* Define if your assembler supports .cfi_* directives. */
43
+ #undef HAVE_AS_CFI_PSEUDO_OP
44
+
45
+ /* Define if your assembler supports .register. */
46
+ #undef HAVE_AS_REGISTER_PSEUDO_OP
47
+
48
+ /* Define if the compiler uses zarch features. */
49
+ #undef HAVE_AS_S390_ZARCH
50
+
51
+ /* Define if your assembler and linker support unaligned PC relative relocs.
52
+ */
53
+ #undef HAVE_AS_SPARC_UA_PCREL
54
+
55
+ /* Define if your assembler supports unwind section type. */
56
+ #undef HAVE_AS_X86_64_UNWIND_SECTION_TYPE
57
+
58
+ /* Define if your assembler supports PC relative relocs. */
59
+ #undef HAVE_AS_X86_PCREL
60
+
61
+ /* Define to 1 if you have the <dlfcn.h> header file. */
62
+ #undef HAVE_DLFCN_H
63
+
64
+ /* Define if __attribute__((visibility("hidden"))) is supported. */
65
+ #undef HAVE_HIDDEN_VISIBILITY_ATTRIBUTE
66
+
67
+ /* Define to 1 if you have the <inttypes.h> header file. */
68
+ #undef HAVE_INTTYPES_H
69
+
70
+ /* Define if you have the long double type and it is bigger than a double */
71
+ #undef HAVE_LONG_DOUBLE
72
+
73
+ /* Define if you support more than one size of the long double type */
74
+ #undef HAVE_LONG_DOUBLE_VARIANT
75
+
76
+ /* Define to 1 if you have the `memcpy' function. */
77
+ #undef HAVE_MEMCPY
78
+
79
+ /* Define to 1 if you have the <memory.h> header file. */
80
+ #undef HAVE_MEMORY_H
81
+
82
+ /* Define to 1 if you have the `mkostemp' function. */
83
+ #undef HAVE_MKOSTEMP
84
+
85
+ /* Define to 1 if you have the `mmap' function. */
86
+ #undef HAVE_MMAP
87
+
88
+ /* Define if mmap with MAP_ANON(YMOUS) works. */
89
+ #undef HAVE_MMAP_ANON
90
+
91
+ /* Define if mmap of /dev/zero works. */
92
+ #undef HAVE_MMAP_DEV_ZERO
93
+
94
+ /* Define if read-only mmap of a plain file works. */
95
+ #undef HAVE_MMAP_FILE
96
+
97
+ /* Define if .eh_frame sections should be read-only. */
98
+ #undef HAVE_RO_EH_FRAME
99
+
100
+ /* Define to 1 if you have the <stdint.h> header file. */
101
+ #undef HAVE_STDINT_H
102
+
103
+ /* Define to 1 if you have the <stdlib.h> header file. */
104
+ #undef HAVE_STDLIB_H
105
+
106
+ /* Define to 1 if you have the <strings.h> header file. */
107
+ #undef HAVE_STRINGS_H
108
+
109
+ /* Define to 1 if you have the <string.h> header file. */
110
+ #undef HAVE_STRING_H
111
+
112
+ /* Define to 1 if you have the <sys/mman.h> header file. */
113
+ #undef HAVE_SYS_MMAN_H
114
+
115
+ /* Define to 1 if you have the <sys/stat.h> header file. */
116
+ #undef HAVE_SYS_STAT_H
117
+
118
+ /* Define to 1 if you have the <sys/types.h> header file. */
119
+ #undef HAVE_SYS_TYPES_H
120
+
121
+ /* Define to 1 if you have the <unistd.h> header file. */
122
+ #undef HAVE_UNISTD_H
123
+
124
+ /* Define to 1 if GNU symbol versioning is used for libatomic. */
125
+ #undef LIBFFI_GNU_SYMBOL_VERSIONING
126
+
127
+ /* Define to the sub-directory where libtool stores uninstalled libraries. */
128
+ #undef LT_OBJDIR
129
+
130
+ /* Name of package */
131
+ #undef PACKAGE
132
+
133
+ /* Define to the address where bug reports for this package should be sent. */
134
+ #undef PACKAGE_BUGREPORT
135
+
136
+ /* Define to the full name of this package. */
137
+ #undef PACKAGE_NAME
138
+
139
+ /* Define to the full name and version of this package. */
140
+ #undef PACKAGE_STRING
141
+
142
+ /* Define to the one symbol short name of this package. */
143
+ #undef PACKAGE_TARNAME
144
+
145
+ /* Define to the home page for this package. */
146
+ #undef PACKAGE_URL
147
+
148
+ /* Define to the version of this package. */
149
+ #undef PACKAGE_VERSION
150
+
151
+ /* The size of `double', as computed by sizeof. */
152
+ #undef SIZEOF_DOUBLE
153
+
154
+ /* The size of `long double', as computed by sizeof. */
155
+ #undef SIZEOF_LONG_DOUBLE
156
+
157
+ /* The size of `size_t', as computed by sizeof. */
158
+ #undef SIZEOF_SIZE_T
159
+
160
+ /* If using the C implementation of alloca, define if you know the
161
+ direction of stack growth for your system; otherwise it will be
162
+ automatically deduced at runtime.
163
+ STACK_DIRECTION > 0 => grows toward higher addresses
164
+ STACK_DIRECTION < 0 => grows toward lower addresses
165
+ STACK_DIRECTION = 0 => direction of growth unknown */
166
+ #undef STACK_DIRECTION
167
+
168
+ /* Define to 1 if you have the ANSI C header files. */
169
+ #undef STDC_HEADERS
170
+
171
+ /* Define if symbols are underscored. */
172
+ #undef SYMBOL_UNDERSCORE
173
+
174
+ /* Define this if you are using Purify and want to suppress spurious messages.
175
+ */
176
+ #undef USING_PURIFY
177
+
178
+ /* Version number of package */
179
+ #undef VERSION
180
+
181
+ /* Define WORDS_BIGENDIAN to 1 if your processor stores words with the most
182
+ significant byte first (like Motorola and SPARC, unlike Intel). */
183
+ #if defined AC_APPLE_UNIVERSAL_BUILD
184
+ # if defined __BIG_ENDIAN__
185
+ # define WORDS_BIGENDIAN 1
186
+ # endif
187
+ #else
188
+ # ifndef WORDS_BIGENDIAN
189
+ # undef WORDS_BIGENDIAN
190
+ # endif
191
+ #endif
192
+
193
+ /* Define to `unsigned int' if <sys/types.h> does not define. */
194
+ #undef size_t
195
+
196
+
197
+ #ifdef HAVE_HIDDEN_VISIBILITY_ATTRIBUTE
198
+ #ifdef LIBFFI_ASM
199
+ #define FFI_HIDDEN(name) .hidden name
200
+ #else
201
+ #define FFI_HIDDEN __attribute__ ((visibility ("hidden")))
202
+ #endif
203
+ #else
204
+ #ifdef LIBFFI_ASM
205
+ #define FFI_HIDDEN(name)
206
+ #else
207
+ #define FFI_HIDDEN
208
+ #endif
209
+ #endif
210
+
@@ -0,0 +1,508 @@
1
+ #!/bin/sh
2
+ # install - install a program, script, or datafile
3
+
4
+ scriptversion=2014-09-12.12; # UTC
5
+
6
+ # This originates from X11R5 (mit/util/scripts/install.sh), which was
7
+ # later released in X11R6 (xc/config/util/install.sh) with the
8
+ # following copyright and license.
9
+ #
10
+ # Copyright (C) 1994 X Consortium
11
+ #
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
14
+ # deal in the Software without restriction, including without limitation the
15
+ # rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
16
+ # sell copies of the Software, and to permit persons to whom the Software is
17
+ # furnished to do so, subject to the following conditions:
18
+ #
19
+ # The above copyright notice and this permission notice shall be included in
20
+ # all copies or substantial portions of the Software.
21
+ #
22
+ # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
23
+ # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
24
+ # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
25
+ # X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
26
+ # AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNEC-
27
+ # TION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
28
+ #
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-
31
+ # ings in this Software without prior written authorization from the X Consor-
32
+ # tium.
33
+ #
34
+ #
35
+ # FSF changes to this file are in the public domain.
36
+ #
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
39
+ # when there is no Makefile.
40
+ #
41
+ # This script is compatible with the BSD install script, but was written
42
+ # from scratch.
43
+
44
+ tab=' '
45
+ nl='
46
+ '
47
+ IFS=" $tab$nl"
48
+
49
+ # Set DOITPROG to "echo" to test this script.
50
+
51
+ doit=${DOITPROG-}
52
+ doit_exec=${doit:-exec}
53
+
54
+ # Put in absolute file names if you don't have them in your path;
55
+ # or use environment vars.
56
+
57
+ chgrpprog=${CHGRPPROG-chgrp}
58
+ chmodprog=${CHMODPROG-chmod}
59
+ chownprog=${CHOWNPROG-chown}
60
+ cmpprog=${CMPPROG-cmp}
61
+ cpprog=${CPPROG-cp}
62
+ mkdirprog=${MKDIRPROG-mkdir}
63
+ mvprog=${MVPROG-mv}
64
+ rmprog=${RMPROG-rm}
65
+ stripprog=${STRIPPROG-strip}
66
+
67
+ posix_mkdir=
68
+
69
+ # Desired mode of installed file.
70
+ mode=0755
71
+
72
+ chgrpcmd=
73
+ chmodcmd=$chmodprog
74
+ chowncmd=
75
+ mvcmd=$mvprog
76
+ rmcmd="$rmprog -f"
77
+ stripcmd=
78
+
79
+ src=
80
+ dst=
81
+ dir_arg=
82
+ dst_arg=
83
+
84
+ copy_on_change=false
85
+ is_target_a_directory=possibly
86
+
87
+ usage="\
88
+ Usage: $0 [OPTION]... [-T] SRCFILE DSTFILE
89
+ or: $0 [OPTION]... SRCFILES... DIRECTORY
90
+ or: $0 [OPTION]... -t DIRECTORY SRCFILES...
91
+ or: $0 [OPTION]... -d DIRECTORIES...
92
+
93
+ In the 1st form, copy SRCFILE to DSTFILE.
94
+ In the 2nd and 3rd, copy all SRCFILES to DIRECTORY.
95
+ In the 4th, create DIRECTORIES.
96
+
97
+ Options:
98
+ --help display this help and exit.
99
+ --version display version info and exit.
100
+
101
+ -c (ignored)
102
+ -C install only if different (preserve the last data modification time)
103
+ -d create directories instead of installing files.
104
+ -g GROUP $chgrpprog installed files to GROUP.
105
+ -m MODE $chmodprog installed files to MODE.
106
+ -o USER $chownprog installed files to USER.
107
+ -s $stripprog installed files.
108
+ -t DIRECTORY install into DIRECTORY.
109
+ -T report an error if DSTFILE is a directory.
110
+
111
+ Environment variables override the default commands:
112
+ CHGRPPROG CHMODPROG CHOWNPROG CMPPROG CPPROG MKDIRPROG MVPROG
113
+ RMPROG STRIPPROG
114
+ "
115
+
116
+ while test $# -ne 0; do
117
+ case $1 in
118
+ -c) ;;
119
+
120
+ -C) copy_on_change=true;;
121
+
122
+ -d) dir_arg=true;;
123
+
124
+ -g) chgrpcmd="$chgrpprog $2"
125
+ shift;;
126
+
127
+ --help) echo "$usage"; exit $?;;
128
+
129
+ -m) mode=$2
130
+ case $mode in
131
+ *' '* | *"$tab"* | *"$nl"* | *'*'* | *'?'* | *'['*)
132
+ echo "$0: invalid mode: $mode" >&2
133
+ exit 1;;
134
+ esac
135
+ shift;;
136
+
137
+ -o) chowncmd="$chownprog $2"
138
+ shift;;
139
+
140
+ -s) stripcmd=$stripprog;;
141
+
142
+ -t)
143
+ is_target_a_directory=always
144
+ dst_arg=$2
145
+ # Protect names problematic for 'test' and other utilities.
146
+ case $dst_arg in
147
+ -* | [=\(\)!]) dst_arg=./$dst_arg;;
148
+ esac
149
+ shift;;
150
+
151
+ -T) is_target_a_directory=never;;
152
+
153
+ --version) echo "$0 $scriptversion"; exit $?;;
154
+
155
+ --) shift
156
+ break;;
157
+
158
+ -*) echo "$0: invalid option: $1" >&2
159
+ exit 1;;
160
+
161
+ *) break;;
162
+ esac
163
+ shift
164
+ done
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
+
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
+ # Protect names problematic for 'test' and other utilities.
190
+ case $dst_arg in
191
+ -* | [=\(\)!]) dst_arg=./$dst_arg;;
192
+ esac
193
+ done
194
+ fi
195
+
196
+ if test $# -eq 0; then
197
+ if test -z "$dir_arg"; then
198
+ echo "$0: no input file specified." >&2
199
+ exit 1
200
+ fi
201
+ # It's OK to call 'install-sh -d' without argument.
202
+ # This can happen when creating conditional directories.
203
+ exit 0
204
+ fi
205
+
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
216
+ do_exit='(exit $ret); exit $ret'
217
+ trap "ret=129; $do_exit" 1
218
+ trap "ret=130; $do_exit" 2
219
+ trap "ret=141; $do_exit" 13
220
+ trap "ret=143; $do_exit" 15
221
+
222
+ # Set umask so as not to create temps with too-generous modes.
223
+ # However, 'strip' requires both read and write access to temps.
224
+ case $mode in
225
+ # Optimize common cases.
226
+ *644) cp_umask=133;;
227
+ *755) cp_umask=22;;
228
+
229
+ *[0-7])
230
+ if test -z "$stripcmd"; then
231
+ u_plus_rw=
232
+ else
233
+ u_plus_rw='% 200'
234
+ fi
235
+ cp_umask=`expr '(' 777 - $mode % 1000 ')' $u_plus_rw`;;
236
+ *)
237
+ if test -z "$stripcmd"; then
238
+ u_plus_rw=
239
+ else
240
+ u_plus_rw=,u+rw
241
+ fi
242
+ cp_umask=$mode$u_plus_rw;;
243
+ esac
244
+ fi
245
+
246
+ for src
247
+ do
248
+ # Protect names problematic for 'test' and other utilities.
249
+ case $src in
250
+ -* | [=\(\)!]) src=./$src;;
251
+ esac
252
+
253
+ if test -n "$dir_arg"; then
254
+ dst=$src
255
+ dstdir=$dst
256
+ test -d "$dstdir"
257
+ dstdir_status=$?
258
+ else
259
+
260
+ # Waiting for this to be detected by the "$cpprog $src $dsttmp" command
261
+ # might cause directories to be created, which would be especially bad
262
+ # if $src (and thus $dsttmp) contains '*'.
263
+ if test ! -f "$src" && test ! -d "$src"; then
264
+ echo "$0: $src does not exist." >&2
265
+ exit 1
266
+ fi
267
+
268
+ if test -z "$dst_arg"; then
269
+ echo "$0: no destination specified." >&2
270
+ exit 1
271
+ fi
272
+ dst=$dst_arg
273
+
274
+ # If destination is a directory, append the input filename; won't work
275
+ # if double slashes aren't ignored.
276
+ if test -d "$dst"; then
277
+ if test "$is_target_a_directory" = never; then
278
+ echo "$0: $dst_arg: Is a directory" >&2
279
+ exit 1
280
+ fi
281
+ dstdir=$dst
282
+ dst=$dstdir/`basename "$src"`
283
+ dstdir_status=0
284
+ else
285
+ dstdir=`dirname "$dst"`
286
+ test -d "$dstdir"
287
+ dstdir_status=$?
288
+ fi
289
+ fi
290
+
291
+ obsolete_mkdir_used=false
292
+
293
+ if test $dstdir_status != 0; then
294
+ case $posix_mkdir in
295
+ '')
296
+ # Create intermediate dirs using mode 755 as modified by the umask.
297
+ # This is like FreeBSD 'install' as of 1997-10-28.
298
+ umask=`umask`
299
+ case $stripcmd.$umask in
300
+ # Optimize common cases.
301
+ *[2367][2367]) mkdir_umask=$umask;;
302
+ .*0[02][02] | .[02][02] | .[02]) mkdir_umask=22;;
303
+
304
+ *[0-7])
305
+ mkdir_umask=`expr $umask + 22 \
306
+ - $umask % 100 % 40 + $umask % 20 \
307
+ - $umask % 10 % 4 + $umask % 2
308
+ `;;
309
+ *) mkdir_umask=$umask,go-w;;
310
+ esac
311
+
312
+ # With -d, create the new directory with the user-specified mode.
313
+ # Otherwise, rely on $mkdir_umask.
314
+ if test -n "$dir_arg"; then
315
+ mkdir_mode=-m$mode
316
+ else
317
+ mkdir_mode=
318
+ fi
319
+
320
+ posix_mkdir=false
321
+ case $umask in
322
+ *[123567][0-7][0-7])
323
+ # POSIX mkdir -p sets u+wx bits regardless of umask, which
324
+ # is incompatible with FreeBSD 'install' when (umask & 300) != 0.
325
+ ;;
326
+ *)
327
+ # $RANDOM is not portable (e.g. dash); use it when possible to
328
+ # lower collision chance
329
+ tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$
330
+ trap 'ret=$?; rmdir "$tmpdir/a/b" "$tmpdir/a" "$tmpdir" 2>/dev/null; exit $ret' 0
331
+
332
+ # As "mkdir -p" follows symlinks and we work in /tmp possibly; so
333
+ # create the $tmpdir first (and fail if unsuccessful) to make sure
334
+ # that nobody tries to guess the $tmpdir name.
335
+ if (umask $mkdir_umask &&
336
+ $mkdirprog $mkdir_mode "$tmpdir" &&
337
+ exec $mkdirprog $mkdir_mode -p -- "$tmpdir/a/b") >/dev/null 2>&1
338
+ then
339
+ if test -z "$dir_arg" || {
340
+ # Check for POSIX incompatibilities with -m.
341
+ # HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or
342
+ # other-writable bit of parent directory when it shouldn't.
343
+ # FreeBSD 6.1 mkdir -m -p sets mode of existing directory.
344
+ test_tmpdir="$tmpdir/a"
345
+ ls_ld_tmpdir=`ls -ld "$test_tmpdir"`
346
+ case $ls_ld_tmpdir in
347
+ d????-?r-*) different_mode=700;;
348
+ d????-?--*) different_mode=755;;
349
+ *) false;;
350
+ esac &&
351
+ $mkdirprog -m$different_mode -p -- "$test_tmpdir" && {
352
+ ls_ld_tmpdir_1=`ls -ld "$test_tmpdir"`
353
+ test "$ls_ld_tmpdir" = "$ls_ld_tmpdir_1"
354
+ }
355
+ }
356
+ then posix_mkdir=:
357
+ fi
358
+ rmdir "$tmpdir/a/b" "$tmpdir/a" "$tmpdir"
359
+ else
360
+ # Remove any dirs left behind by ancient mkdir implementations.
361
+ rmdir ./$mkdir_mode ./-p ./-- "$tmpdir" 2>/dev/null
362
+ fi
363
+ trap '' 0;;
364
+ esac;;
365
+ esac
366
+
367
+ if
368
+ $posix_mkdir && (
369
+ umask $mkdir_umask &&
370
+ $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir"
371
+ )
372
+ then :
373
+ else
374
+
375
+ # The umask is ridiculous, or mkdir does not conform to POSIX,
376
+ # or it failed possibly due to a race condition. Create the
377
+ # directory the slow way, step by step, checking for races as we go.
378
+
379
+ case $dstdir in
380
+ /*) prefix='/';;
381
+ [-=\(\)!]*) prefix='./';;
382
+ *) prefix='';;
383
+ esac
384
+
385
+ oIFS=$IFS
386
+ IFS=/
387
+ set -f
388
+ set fnord $dstdir
389
+ shift
390
+ set +f
391
+ IFS=$oIFS
392
+
393
+ prefixes=
394
+
395
+ for d
396
+ do
397
+ test X"$d" = X && continue
398
+
399
+ prefix=$prefix$d
400
+ if test -d "$prefix"; then
401
+ prefixes=
402
+ else
403
+ if $posix_mkdir; then
404
+ (umask=$mkdir_umask &&
405
+ $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir") && break
406
+ # Don't fail if two instances are running concurrently.
407
+ test -d "$prefix" || exit 1
408
+ else
409
+ case $prefix in
410
+ *\'*) qprefix=`echo "$prefix" | sed "s/'/'\\\\\\\\''/g"`;;
411
+ *) qprefix=$prefix;;
412
+ esac
413
+ prefixes="$prefixes '$qprefix'"
414
+ fi
415
+ fi
416
+ prefix=$prefix/
417
+ done
418
+
419
+ if test -n "$prefixes"; then
420
+ # Don't fail if two instances are running concurrently.
421
+ (umask $mkdir_umask &&
422
+ eval "\$doit_exec \$mkdirprog $prefixes") ||
423
+ test -d "$dstdir" || exit 1
424
+ obsolete_mkdir_used=true
425
+ fi
426
+ fi
427
+ fi
428
+
429
+ if test -n "$dir_arg"; then
430
+ { test -z "$chowncmd" || $doit $chowncmd "$dst"; } &&
431
+ { test -z "$chgrpcmd" || $doit $chgrpcmd "$dst"; } &&
432
+ { test "$obsolete_mkdir_used$chowncmd$chgrpcmd" = false ||
433
+ test -z "$chmodcmd" || $doit $chmodcmd $mode "$dst"; } || exit 1
434
+ else
435
+
436
+ # Make a couple of temp file names in the proper directory.
437
+ dsttmp=$dstdir/_inst.$$_
438
+ rmtmp=$dstdir/_rm.$$_
439
+
440
+ # Trap to clean up those temp files at exit.
441
+ trap 'ret=$?; rm -f "$dsttmp" "$rmtmp" && exit $ret' 0
442
+
443
+ # Copy the file name to the temp name.
444
+ (umask $cp_umask && $doit_exec $cpprog "$src" "$dsttmp") &&
445
+
446
+ # and set any options; do chmod last to preserve setuid bits.
447
+ #
448
+ # If any of these fail, we abort the whole thing. If we want to
449
+ # ignore errors from any of these, just make sure not to ignore
450
+ # errors from the above "$doit $cpprog $src $dsttmp" command.
451
+ #
452
+ { test -z "$chowncmd" || $doit $chowncmd "$dsttmp"; } &&
453
+ { test -z "$chgrpcmd" || $doit $chgrpcmd "$dsttmp"; } &&
454
+ { test -z "$stripcmd" || $doit $stripcmd "$dsttmp"; } &&
455
+ { test -z "$chmodcmd" || $doit $chmodcmd $mode "$dsttmp"; } &&
456
+
457
+ # If -C, don't bother to copy if it wouldn't change the file.
458
+ if $copy_on_change &&
459
+ old=`LC_ALL=C ls -dlL "$dst" 2>/dev/null` &&
460
+ new=`LC_ALL=C ls -dlL "$dsttmp" 2>/dev/null` &&
461
+ set -f &&
462
+ set X $old && old=:$2:$4:$5:$6 &&
463
+ set X $new && new=:$2:$4:$5:$6 &&
464
+ set +f &&
465
+ test "$old" = "$new" &&
466
+ $cmpprog "$dst" "$dsttmp" >/dev/null 2>&1
467
+ then
468
+ rm -f "$dsttmp"
469
+ else
470
+ # Rename the file to the real destination.
471
+ $doit $mvcmd -f "$dsttmp" "$dst" 2>/dev/null ||
472
+
473
+ # The rename failed, perhaps because mv can't rename something else
474
+ # to itself, or perhaps because mv is so ancient that it does not
475
+ # support -f.
476
+ {
477
+ # Now remove or move aside any old file at destination location.
478
+ # We try this two ways since rm can't unlink itself on some
479
+ # systems and the destination file might be busy for other
480
+ # reasons. In this case, the final cleanup might fail but the new
481
+ # file should still install successfully.
482
+ {
483
+ test ! -f "$dst" ||
484
+ $doit $rmcmd -f "$dst" 2>/dev/null ||
485
+ { $doit $mvcmd -f "$dst" "$rmtmp" 2>/dev/null &&
486
+ { $doit $rmcmd -f "$rmtmp" 2>/dev/null; :; }
487
+ } ||
488
+ { echo "$0: cannot unlink or rename $dst" >&2
489
+ (exit 1); exit 1
490
+ }
491
+ } &&
492
+
493
+ # Now rename the file to the real destination.
494
+ $doit $mvcmd "$dsttmp" "$dst"
495
+ }
496
+ fi || exit 1
497
+
498
+ trap '' 0
499
+ fi
500
+ done
501
+
502
+ # Local variables:
503
+ # eval: (add-hook 'write-file-hooks 'time-stamp)
504
+ # time-stamp-start: "scriptversion="
505
+ # time-stamp-format: "%:y-%02m-%02d.%02H"
506
+ # time-stamp-time-zone: "UTC"
507
+ # time-stamp-end: "; # UTC"
508
+ # End: