rbcdio 0.01 → 0.02
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/ChangeLog +77 -0
- data/INSTALL +35 -26
- data/Makefile.am +12 -11
- data/Makefile.in +65 -51
- data/NEWS +13 -1
- data/README +10 -9
- data/VERSION +1 -1
- data/config.guess +76 -39
- data/config.sub +71 -31
- data/configure +2361 -1802
- data/configure.ac +4 -4
- data/doc/created.rid +1 -1
- data/doc/fr_file_index.html +1 -0
- data/example/README +6 -1
- data/example/audio.rb +1 -2
- data/example/cd-read.rb +2 -3
- data/example/cdchange.rb +71 -0
- data/example/device.rb +2 -3
- data/example/drivers.rb +2 -3
- data/example/drives.rb +2 -3
- data/example/eject.rb +2 -3
- data/example/iso1.rb +2 -3
- data/example/iso2.rb +2 -3
- data/example/iso3.rb +2 -3
- data/example/tracks.rb +2 -3
- data/ext/cdio/Makefile +30 -16
- data/ext/cdio/extconf.rb +9 -1
- data/ext/cdio/rubycdio_wrap.c +3609 -1892
- data/ext/iso9660/Makefile +29 -15
- data/ext/iso9660/extconf.rb +7 -2
- data/ext/iso9660/rubyiso9660_wrap.c +3347 -1647
- data/install-sh +266 -82
- data/lib/cdio.rb +10 -10
- data/lib/iso9660.rb +5 -5
- data/missing +34 -27
- data/swig/device.swg +2 -2
- data/swig/rubycdio.swg +2 -2
- data/swig/rubyiso9660.swg +3 -3
- data/test/cdiotest.rb +9 -4
- data/test/isotest.rb +4 -2
- metadata +5 -3
data/install-sh
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
#!/bin/sh
|
2
2
|
# install - install a program, script, or datafile
|
3
3
|
|
4
|
-
scriptversion=
|
4
|
+
scriptversion=2006-10-14.15
|
5
5
|
|
6
6
|
# This originates from X11R5 (mit/util/scripts/install.sh), which was
|
7
7
|
# later released in X11R6 (xc/config/util/install.sh) with the
|
@@ -39,15 +39,24 @@ scriptversion=2005-05-14.22
|
|
39
39
|
# when there is no Makefile.
|
40
40
|
#
|
41
41
|
# This script is compatible with the BSD install script, but was written
|
42
|
-
# from scratch.
|
43
|
-
|
42
|
+
# from scratch.
|
43
|
+
|
44
|
+
nl='
|
45
|
+
'
|
46
|
+
IFS=" "" $nl"
|
44
47
|
|
45
48
|
# set DOITPROG to echo to test this script
|
46
49
|
|
47
50
|
# Don't use :- since 4.3BSD and earlier shells don't like it.
|
48
51
|
doit="${DOITPROG-}"
|
52
|
+
if test -z "$doit"; then
|
53
|
+
doit_exec=exec
|
54
|
+
else
|
55
|
+
doit_exec=$doit
|
56
|
+
fi
|
49
57
|
|
50
|
-
#
|
58
|
+
# Put in absolute file names if you don't have them in your path;
|
59
|
+
# or use environment vars.
|
51
60
|
|
52
61
|
mvprog="${MVPROG-mv}"
|
53
62
|
cpprog="${CPPROG-cp}"
|
@@ -58,7 +67,13 @@ stripprog="${STRIPPROG-strip}"
|
|
58
67
|
rmprog="${RMPROG-rm}"
|
59
68
|
mkdirprog="${MKDIRPROG-mkdir}"
|
60
69
|
|
61
|
-
|
70
|
+
posix_glob=
|
71
|
+
posix_mkdir=
|
72
|
+
|
73
|
+
# Desired mode of installed file.
|
74
|
+
mode=0755
|
75
|
+
|
76
|
+
chmodcmd=$chmodprog
|
62
77
|
chowncmd=
|
63
78
|
chgrpcmd=
|
64
79
|
stripcmd=
|
@@ -95,7 +110,7 @@ Environment variables override the default commands:
|
|
95
110
|
CHGRPPROG CHMODPROG CHOWNPROG CPPROG MKDIRPROG MVPROG RMPROG STRIPPROG
|
96
111
|
"
|
97
112
|
|
98
|
-
while test -
|
113
|
+
while test $# -ne 0; do
|
99
114
|
case $1 in
|
100
115
|
-c) shift
|
101
116
|
continue;;
|
@@ -111,9 +126,15 @@ while test -n "$1"; do
|
|
111
126
|
|
112
127
|
--help) echo "$usage"; exit $?;;
|
113
128
|
|
114
|
-
-m)
|
129
|
+
-m) mode=$2
|
115
130
|
shift
|
116
131
|
shift
|
132
|
+
case $mode in
|
133
|
+
*' '* | *' '* | *'
|
134
|
+
'* | *'*'* | *'?'* | *'['*)
|
135
|
+
echo "$0: invalid mode: $mode" >&2
|
136
|
+
exit 1;;
|
137
|
+
esac
|
117
138
|
continue;;
|
118
139
|
|
119
140
|
-o) chowncmd="$chownprog $2"
|
@@ -136,25 +157,33 @@ while test -n "$1"; do
|
|
136
157
|
|
137
158
|
--version) echo "$0 $scriptversion"; exit $?;;
|
138
159
|
|
139
|
-
|
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
|
160
|
+
--) shift
|
153
161
|
break;;
|
162
|
+
|
163
|
+
-*) echo "$0: invalid option: $1" >&2
|
164
|
+
exit 1;;
|
165
|
+
|
166
|
+
*) break;;
|
154
167
|
esac
|
155
168
|
done
|
156
169
|
|
157
|
-
if test -z "$
|
170
|
+
if test $# -ne 0 && test -z "$dir_arg$dstarg"; then
|
171
|
+
# When -d is used, all remaining arguments are directories to create.
|
172
|
+
# When -t is used, the destination is already specified.
|
173
|
+
# Otherwise, the last argument is the destination. Remove it from $@.
|
174
|
+
for arg
|
175
|
+
do
|
176
|
+
if test -n "$dstarg"; then
|
177
|
+
# $@ is not empty: it contains at least $arg.
|
178
|
+
set fnord "$@" "$dstarg"
|
179
|
+
shift # fnord
|
180
|
+
fi
|
181
|
+
shift # arg
|
182
|
+
dstarg=$arg
|
183
|
+
done
|
184
|
+
fi
|
185
|
+
|
186
|
+
if test $# -eq 0; then
|
158
187
|
if test -z "$dir_arg"; then
|
159
188
|
echo "$0: no input file specified." >&2
|
160
189
|
exit 1
|
@@ -164,6 +193,33 @@ if test -z "$1"; then
|
|
164
193
|
exit 0
|
165
194
|
fi
|
166
195
|
|
196
|
+
if test -z "$dir_arg"; then
|
197
|
+
trap '(exit $?); exit' 1 2 13 15
|
198
|
+
|
199
|
+
# Set umask so as not to create temps with too-generous modes.
|
200
|
+
# However, 'strip' requires both read and write access to temps.
|
201
|
+
case $mode in
|
202
|
+
# Optimize common cases.
|
203
|
+
*644) cp_umask=133;;
|
204
|
+
*755) cp_umask=22;;
|
205
|
+
|
206
|
+
*[0-7])
|
207
|
+
if test -z "$stripcmd"; then
|
208
|
+
u_plus_rw=
|
209
|
+
else
|
210
|
+
u_plus_rw='% 200'
|
211
|
+
fi
|
212
|
+
cp_umask=`expr '(' 777 - $mode % 1000 ')' $u_plus_rw`;;
|
213
|
+
*)
|
214
|
+
if test -z "$stripcmd"; then
|
215
|
+
u_plus_rw=
|
216
|
+
else
|
217
|
+
u_plus_rw=,u+rw
|
218
|
+
fi
|
219
|
+
cp_umask=$mode$u_plus_rw;;
|
220
|
+
esac
|
221
|
+
fi
|
222
|
+
|
167
223
|
for src
|
168
224
|
do
|
169
225
|
# Protect names starting with `-'.
|
@@ -173,15 +229,11 @@ do
|
|
173
229
|
|
174
230
|
if test -n "$dir_arg"; then
|
175
231
|
dst=$src
|
176
|
-
|
177
|
-
|
178
|
-
|
179
|
-
mkdircmd=:
|
180
|
-
chmodcmd=
|
181
|
-
else
|
182
|
-
mkdircmd=$mkdirprog
|
183
|
-
fi
|
232
|
+
dstdir=$dst
|
233
|
+
test -d "$dstdir"
|
234
|
+
dstdir_status=$?
|
184
235
|
else
|
236
|
+
|
185
237
|
# Waiting for this to be detected by the "$cpprog $src $dsttmp" command
|
186
238
|
# might cause directories to be created, which would be especially bad
|
187
239
|
# if $src (and thus $dsttmp) contains '*'.
|
@@ -208,53 +260,188 @@ do
|
|
208
260
|
echo "$0: $dstarg: Is a directory" >&2
|
209
261
|
exit 1
|
210
262
|
fi
|
211
|
-
|
263
|
+
dstdir=$dst
|
264
|
+
dst=$dstdir/`basename "$src"`
|
265
|
+
dstdir_status=0
|
266
|
+
else
|
267
|
+
# Prefer dirname, but fall back on a substitute if dirname fails.
|
268
|
+
dstdir=`
|
269
|
+
(dirname "$dst") 2>/dev/null ||
|
270
|
+
expr X"$dst" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
|
271
|
+
X"$dst" : 'X\(//\)[^/]' \| \
|
272
|
+
X"$dst" : 'X\(//\)$' \| \
|
273
|
+
X"$dst" : 'X\(/\)' \| . 2>/dev/null ||
|
274
|
+
echo X"$dst" |
|
275
|
+
sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
|
276
|
+
s//\1/
|
277
|
+
q
|
278
|
+
}
|
279
|
+
/^X\(\/\/\)[^/].*/{
|
280
|
+
s//\1/
|
281
|
+
q
|
282
|
+
}
|
283
|
+
/^X\(\/\/\)$/{
|
284
|
+
s//\1/
|
285
|
+
q
|
286
|
+
}
|
287
|
+
/^X\(\/\).*/{
|
288
|
+
s//\1/
|
289
|
+
q
|
290
|
+
}
|
291
|
+
s/.*/./; q'
|
292
|
+
`
|
293
|
+
|
294
|
+
test -d "$dstdir"
|
295
|
+
dstdir_status=$?
|
212
296
|
fi
|
213
297
|
fi
|
214
298
|
|
215
|
-
|
216
|
-
|
217
|
-
|
218
|
-
|
219
|
-
|
220
|
-
|
221
|
-
|
222
|
-
|
223
|
-
|
224
|
-
|
225
|
-
|
226
|
-
|
227
|
-
|
228
|
-
|
229
|
-
|
230
|
-
|
231
|
-
|
299
|
+
obsolete_mkdir_used=false
|
300
|
+
|
301
|
+
if test $dstdir_status != 0; then
|
302
|
+
case $posix_mkdir in
|
303
|
+
'')
|
304
|
+
# Create intermediate dirs using mode 755 as modified by the umask.
|
305
|
+
# This is like FreeBSD 'install' as of 1997-10-28.
|
306
|
+
umask=`umask`
|
307
|
+
case $stripcmd.$umask in
|
308
|
+
# Optimize common cases.
|
309
|
+
*[2367][2367]) mkdir_umask=$umask;;
|
310
|
+
.*0[02][02] | .[02][02] | .[02]) mkdir_umask=22;;
|
311
|
+
|
312
|
+
*[0-7])
|
313
|
+
mkdir_umask=`expr $umask + 22 \
|
314
|
+
- $umask % 100 % 40 + $umask % 20 \
|
315
|
+
- $umask % 10 % 4 + $umask % 2
|
316
|
+
`;;
|
317
|
+
*) mkdir_umask=$umask,go-w;;
|
318
|
+
esac
|
319
|
+
|
320
|
+
# With -d, create the new directory with the user-specified mode.
|
321
|
+
# Otherwise, rely on $mkdir_umask.
|
322
|
+
if test -n "$dir_arg"; then
|
323
|
+
mkdir_mode=-m$mode
|
324
|
+
else
|
325
|
+
mkdir_mode=
|
326
|
+
fi
|
327
|
+
|
328
|
+
posix_mkdir=false
|
329
|
+
case $umask in
|
330
|
+
*[123567][0-7][0-7])
|
331
|
+
# POSIX mkdir -p sets u+wx bits regardless of umask, which
|
332
|
+
# is incompatible with FreeBSD 'install' when (umask & 300) != 0.
|
333
|
+
;;
|
334
|
+
*)
|
335
|
+
tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$
|
336
|
+
trap 'ret=$?; rmdir "$tmpdir/d" "$tmpdir" 2>/dev/null; exit $ret' 0
|
337
|
+
|
338
|
+
if (umask $mkdir_umask &&
|
339
|
+
exec $mkdirprog $mkdir_mode -p -- "$tmpdir/d") >/dev/null 2>&1
|
340
|
+
then
|
341
|
+
if test -z "$dir_arg" || {
|
342
|
+
# Check for POSIX incompatibilities with -m.
|
343
|
+
# HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or
|
344
|
+
# other-writeable bit of parent directory when it shouldn't.
|
345
|
+
# FreeBSD 6.1 mkdir -m -p sets mode of existing directory.
|
346
|
+
ls_ld_tmpdir=`ls -ld "$tmpdir"`
|
347
|
+
case $ls_ld_tmpdir in
|
348
|
+
d????-?r-*) different_mode=700;;
|
349
|
+
d????-?--*) different_mode=755;;
|
350
|
+
*) false;;
|
351
|
+
esac &&
|
352
|
+
$mkdirprog -m$different_mode -p -- "$tmpdir" && {
|
353
|
+
ls_ld_tmpdir_1=`ls -ld "$tmpdir"`
|
354
|
+
test "$ls_ld_tmpdir" = "$ls_ld_tmpdir_1"
|
355
|
+
}
|
356
|
+
}
|
357
|
+
then posix_mkdir=:
|
358
|
+
fi
|
359
|
+
rmdir "$tmpdir/d" "$tmpdir"
|
360
|
+
else
|
361
|
+
# Remove any dirs left behind by ancient mkdir implementations.
|
362
|
+
rmdir ./$mkdir_mode ./-p ./-- 2>/dev/null
|
363
|
+
fi
|
364
|
+
trap '' 0;;
|
365
|
+
esac;;
|
366
|
+
esac
|
232
367
|
|
233
|
-
|
368
|
+
if
|
369
|
+
$posix_mkdir && (
|
370
|
+
umask $mkdir_umask &&
|
371
|
+
$doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir"
|
372
|
+
)
|
373
|
+
then :
|
374
|
+
else
|
234
375
|
|
235
|
-
|
236
|
-
|
376
|
+
# The umask is ridiculous, or mkdir does not conform to POSIX,
|
377
|
+
# or it failed possibly due to a race condition. Create the
|
378
|
+
# directory the slow way, step by step, checking for races as we go.
|
379
|
+
|
380
|
+
case $dstdir in
|
381
|
+
/*) prefix=/ ;;
|
382
|
+
-*) prefix=./ ;;
|
383
|
+
*) prefix= ;;
|
384
|
+
esac
|
385
|
+
|
386
|
+
case $posix_glob in
|
387
|
+
'')
|
388
|
+
if (set -f) 2>/dev/null; then
|
389
|
+
posix_glob=true
|
390
|
+
else
|
391
|
+
posix_glob=false
|
392
|
+
fi ;;
|
393
|
+
esac
|
394
|
+
|
395
|
+
oIFS=$IFS
|
396
|
+
IFS=/
|
397
|
+
$posix_glob && set -f
|
398
|
+
set fnord $dstdir
|
237
399
|
shift
|
238
|
-
|
239
|
-
|
240
|
-
|
241
|
-
|
242
|
-
|
243
|
-
|
400
|
+
$posix_glob && set +f
|
401
|
+
IFS=$oIFS
|
402
|
+
|
403
|
+
prefixes=
|
404
|
+
|
405
|
+
for d
|
406
|
+
do
|
407
|
+
test -z "$d" && continue
|
408
|
+
|
409
|
+
prefix=$prefix$d
|
410
|
+
if test -d "$prefix"; then
|
411
|
+
prefixes=
|
412
|
+
else
|
413
|
+
if $posix_mkdir; then
|
414
|
+
(umask=$mkdir_umask &&
|
415
|
+
$doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir") && break
|
416
|
+
# Don't fail if two instances are running concurrently.
|
417
|
+
test -d "$prefix" || exit 1
|
418
|
+
else
|
419
|
+
case $prefix in
|
420
|
+
*\'*) qprefix=`echo "$prefix" | sed "s/'/'\\\\\\\\''/g"`;;
|
421
|
+
*) qprefix=$prefix;;
|
422
|
+
esac
|
423
|
+
prefixes="$prefixes '$qprefix'"
|
424
|
+
fi
|
425
|
+
fi
|
426
|
+
prefix=$prefix/
|
427
|
+
done
|
428
|
+
|
429
|
+
if test -n "$prefixes"; then
|
430
|
+
# Don't fail if two instances are running concurrently.
|
431
|
+
(umask $mkdir_umask &&
|
432
|
+
eval "\$doit_exec \$mkdirprog $prefixes") ||
|
433
|
+
test -d "$dstdir" || exit 1
|
434
|
+
obsolete_mkdir_used=true
|
244
435
|
fi
|
245
|
-
|
246
|
-
done
|
436
|
+
fi
|
247
437
|
fi
|
248
438
|
|
249
439
|
if test -n "$dir_arg"; then
|
250
|
-
$doit $
|
251
|
-
|
252
|
-
|
253
|
-
|
254
|
-
&& { test -z "$chmodcmd" || $doit $chmodcmd "$dst"; }
|
255
|
-
|
440
|
+
{ test -z "$chowncmd" || $doit $chowncmd "$dst"; } &&
|
441
|
+
{ test -z "$chgrpcmd" || $doit $chgrpcmd "$dst"; } &&
|
442
|
+
{ test "$obsolete_mkdir_used$chowncmd$chgrpcmd" = false ||
|
443
|
+
test -z "$chmodcmd" || $doit $chmodcmd $mode "$dst"; } || exit 1
|
256
444
|
else
|
257
|
-
dstfile=`basename "$dst"`
|
258
445
|
|
259
446
|
# Make a couple of temp file names in the proper directory.
|
260
447
|
dsttmp=$dstdir/_inst.$$_
|
@@ -262,10 +449,9 @@ do
|
|
262
449
|
|
263
450
|
# Trap to clean up those temp files at exit.
|
264
451
|
trap 'ret=$?; rm -f "$dsttmp" "$rmtmp" && exit $ret' 0
|
265
|
-
trap '(exit $?); exit' 1 2 13 15
|
266
452
|
|
267
453
|
# Copy the file name to the temp name.
|
268
|
-
$
|
454
|
+
(umask $cp_umask && $doit_exec $cpprog "$src" "$dsttmp") &&
|
269
455
|
|
270
456
|
# and set any options; do chmod last to preserve setuid bits.
|
271
457
|
#
|
@@ -276,10 +462,10 @@ do
|
|
276
462
|
{ test -z "$chowncmd" || $doit $chowncmd "$dsttmp"; } \
|
277
463
|
&& { test -z "$chgrpcmd" || $doit $chgrpcmd "$dsttmp"; } \
|
278
464
|
&& { test -z "$stripcmd" || $doit $stripcmd "$dsttmp"; } \
|
279
|
-
&& { test -z "$chmodcmd" || $doit $chmodcmd "$dsttmp"; } &&
|
465
|
+
&& { test -z "$chmodcmd" || $doit $chmodcmd $mode "$dsttmp"; } &&
|
280
466
|
|
281
467
|
# Now rename the file to the real destination.
|
282
|
-
{ $doit $mvcmd -f "$dsttmp" "$
|
468
|
+
{ $doit $mvcmd -f "$dsttmp" "$dst" 2>/dev/null \
|
283
469
|
|| {
|
284
470
|
# The rename failed, perhaps because mv can't rename something else
|
285
471
|
# to itself, or perhaps because mv is so ancient that it does not
|
@@ -291,11 +477,12 @@ do
|
|
291
477
|
# reasons. In this case, the final cleanup might fail but the new
|
292
478
|
# file should still install successfully.
|
293
479
|
{
|
294
|
-
if test -f "$
|
295
|
-
$doit $rmcmd -f "$
|
296
|
-
|| $doit $mvcmd -f "$
|
480
|
+
if test -f "$dst"; then
|
481
|
+
$doit $rmcmd -f "$dst" 2>/dev/null \
|
482
|
+
|| { $doit $mvcmd -f "$dst" "$rmtmp" 2>/dev/null \
|
483
|
+
&& { $doit $rmcmd -f "$rmtmp" 2>/dev/null; :; }; }\
|
297
484
|
|| {
|
298
|
-
echo "$0: cannot unlink or rename $
|
485
|
+
echo "$0: cannot unlink or rename $dst" >&2
|
299
486
|
(exit 1); exit 1
|
300
487
|
}
|
301
488
|
else
|
@@ -304,16 +491,13 @@ do
|
|
304
491
|
} &&
|
305
492
|
|
306
493
|
# Now rename the file to the real destination.
|
307
|
-
$doit $mvcmd "$dsttmp" "$
|
494
|
+
$doit $mvcmd "$dsttmp" "$dst"
|
308
495
|
}
|
309
|
-
}
|
310
|
-
fi || { (exit 1); exit 1; }
|
311
|
-
done
|
496
|
+
} || exit 1
|
312
497
|
|
313
|
-
|
314
|
-
|
315
|
-
|
316
|
-
}
|
498
|
+
trap '' 0
|
499
|
+
fi
|
500
|
+
done
|
317
501
|
|
318
502
|
# Local variables:
|
319
503
|
# eval: (add-hook 'write-file-hooks 'time-stamp)
|