Compare commits
438 Commits
ZeroTwoEig
...
ZeroFiveZe
Author | SHA1 | Date | |
---|---|---|---|
e9f3d3f3f2 | |||
f74bd60b0c | |||
00978f5731 | |||
d27a09acbe | |||
f8feae9535 | |||
0aec43a06a | |||
5656343e94 | |||
a08a616676 | |||
62777e93aa | |||
f4507fca34 | |||
4374d984d1 | |||
6a9c99cbd8 | |||
eec4dd9915 | |||
7ae90cc334 | |||
38e16d9370 | |||
91e0b07080 | |||
fe63ef9481 | |||
3451559feb | |||
829c0404c3 | |||
b353d04204 | |||
c139b45c26 | |||
2ee8fa58d7 | |||
60454fbf63 | |||
ccb22c3ef3 | |||
b4d9c81fe8 | |||
50e5349d09 | |||
d348c6dac6 | |||
ffbcb13040 | |||
7d389e0889 | |||
e7bde25551 | |||
bd18a89bc2 | |||
f5c66d9e14 | |||
6ae505a0a2 | |||
425932eb68 | |||
3686509e91 | |||
9f9985f06f | |||
6950650a82 | |||
42cf661ef8 | |||
3a10093e3d | |||
f39b0be7d6 | |||
249190ede2 | |||
5a48f5542a | |||
25ba888769 | |||
581caf1007 | |||
320eadaf0b | |||
ab1336dc29 | |||
ea9cb3ab4b | |||
45277ed62b | |||
aebaca8b99 | |||
c7a6796ba7 | |||
f223373b0b | |||
2b9b7974f0 | |||
af39f58e71 | |||
6f5cb55568 | |||
2669117d84 | |||
192518f70b | |||
e9f9d03fac | |||
8666adfe70 | |||
2d00b2075b | |||
9e6c43ed0b | |||
59dec6ac9e | |||
783ad87750 | |||
74d9c0069b | |||
5f23abebf1 | |||
cc67c36003 | |||
f7e469528d | |||
7b653579a0 | |||
f95011d5e0 | |||
64d8349316 | |||
a93589ecba | |||
73e740f822 | |||
071a7c8279 | |||
4e52b191b6 | |||
b97e328da2 | |||
b5847a4633 | |||
87d263de34 | |||
5405e08b5c | |||
b3ea97f18c | |||
0e3dafe5e4 | |||
13746bfc58 | |||
e3610ee989 | |||
9444c7f1cb | |||
bafe16c3a3 | |||
dafcb1e56a | |||
7288680d48 | |||
a811361577 | |||
cf046f9533 | |||
259e00f8c8 | |||
e1b1e09d71 | |||
f99e2cc41a | |||
38a3059748 | |||
9766c28d4f | |||
7a5d8ca174 | |||
9f26cadda4 | |||
3adb23071f | |||
57da7013d3 | |||
35c760ba30 | |||
de4f98c03e | |||
4feba8b2df | |||
d9665979ab | |||
72ac8a4ab1 | |||
7a1f61afaa | |||
22e2d6d12d | |||
b2192ec4f7 | |||
5fde82ba76 | |||
18438856c8 | |||
b43d90d736 | |||
23e4f34482 | |||
a6b287db7d | |||
b638398a75 | |||
7b3bfed4d4 | |||
2bcb098612 | |||
8c49031f4b | |||
a5ba8cc3be | |||
e9f27e15a1 | |||
5f6bc35b3a | |||
c6407f66c2 | |||
912355039c | |||
cc5bd34298 | |||
abb045a26f | |||
36b200e0e9 | |||
b8790971d9 | |||
5d33c841d6 | |||
d284f662da | |||
97a3eb5b1f | |||
a38c256789 | |||
4234319cff | |||
543df52274 | |||
e146eccd5c | |||
56abdd0c2c | |||
5f06ee19c5 | |||
3a88ef260c | |||
bddf8008a1 | |||
7543f5d940 | |||
7c4cf26163 | |||
6d05a2f7fc | |||
f0c12594c1 | |||
1b8f2cc0ee | |||
489a1b6c98 | |||
f155241628 | |||
7e40478a75 | |||
11fe78ffb1 | |||
4d1d3732be | |||
d152de91f4 | |||
16d84807da | |||
3b05800e08 | |||
bc9eac552a | |||
fbaa612ae9 | |||
bfd82b2ccf | |||
219aa7e4b6 | |||
d1490aa95e | |||
6de5c8d9d4 | |||
7966b52a5b | |||
b3bdfec3b1 | |||
d69acf1374 | |||
1fe5898dc1 | |||
ea91d591c3 | |||
920adb9e9f | |||
29de8cf843 | |||
fde2cbfd64 | |||
1cd1cf1662 | |||
7981c59a7c | |||
d47a1702a7 | |||
b627db78ff | |||
d135e33b9e | |||
e21150e227 | |||
9a96d6a175 | |||
2774cbce07 | |||
2946631551 | |||
4ddc39adaf | |||
d478d4ebb4 | |||
794fd96fb2 | |||
44b74461f3 | |||
852941cf58 | |||
67d7e8821b | |||
40e0333edb | |||
4d266bc2f5 | |||
11ed23ff02 | |||
2bf71d14e0 | |||
2c41942b7e | |||
72cd8d6e76 | |||
2b3841264a | |||
bcb54ccaba | |||
94e6000db2 | |||
7aee4b45a7 | |||
5b13b266db | |||
5fcd3217f3 | |||
183fda33a6 | |||
2237469e18 | |||
2faac5462e | |||
eea365ce35 | |||
f70287eaf8 | |||
9704cb8ce1 | |||
91955a715a | |||
1a3297b658 | |||
3a6ecc53c3 | |||
61e22bb9e9 | |||
f7aed1806f | |||
b06bac1c06 | |||
29a3048803 | |||
cc66b5b3a4 | |||
4f41e7aa41 | |||
2499047b82 | |||
6052e04b72 | |||
a7a5be1689 | |||
5a6eb5b141 | |||
0380c1d6a2 | |||
3c3e5af65e | |||
ac9a406a64 | |||
ebeb0f22b3 | |||
36ad5e412d | |||
fedb8fdfba | |||
41b61970bb | |||
1ee9e2a16f | |||
572dfb1584 | |||
2404b9d8a5 | |||
a3f5ffeb11 | |||
5676ae2eab | |||
1229c276fe | |||
8007b3ae8d | |||
25bf8fc5cb | |||
13b24ca32f | |||
f9db31f5a1 | |||
7e3b7f3b7f | |||
1615fea70d | |||
c84e0e0a44 | |||
f99b7182f5 | |||
9192380e90 | |||
48436bee11 | |||
4baa62cb18 | |||
3f0f1c72a5 | |||
f109865cc4 | |||
c89febb7a1 | |||
a50a17c075 | |||
6033dd8ea8 | |||
b4952da4e6 | |||
e3eaea1a4e | |||
25bc0d4101 | |||
f4efc5c3fc | |||
e95dee1fea | |||
60675d21b7 | |||
adff1dd16b | |||
bc1453ad0e | |||
b4332a8387 | |||
d5cb4aa3d0 | |||
359333effa | |||
146cfddf78 | |||
90fba13419 | |||
33aec8f935 | |||
5da590372c | |||
31c61344aa | |||
57430a9feb | |||
d29c2bd0af | |||
268d49efb8 | |||
bb93624293 | |||
d59a2c5907 | |||
3795660f3c | |||
14e408c6e0 | |||
b83fa3ef61 | |||
73db0be503 | |||
7ba923cbbc | |||
0987ced379 | |||
5f110f1a03 | |||
3f4b8b60e0 | |||
723dcbcb89 | |||
1615f39550 | |||
a41b4769b3 | |||
8a1574b632 | |||
1af09c3ac8 | |||
f0734966ff | |||
da07c22d31 | |||
c8122f4659 | |||
b6a998318c | |||
659fb43291 | |||
237113e1af | |||
8e08cf3c57 | |||
ca4777fba9 | |||
e69f4e1234 | |||
1251c6e135 | |||
ef8333effe | |||
333a7d95bb | |||
d9e76c54a6 | |||
5d9f43c7de | |||
26dc31682a | |||
e4b8310812 | |||
d2cc6531c0 | |||
c8fbf6ac4b | |||
af43ee46fd | |||
5d21c97de7 | |||
27c45c6df6 | |||
f5e6a8147b | |||
c854275d51 | |||
0e26c05593 | |||
03e92f4f72 | |||
efa1164328 | |||
f861321c45 | |||
4ceee394f7 | |||
002ba5d6d2 | |||
2756789dfe | |||
db02a5e88a | |||
767b0c3840 | |||
4bc34cc0ed | |||
78a3402bf3 | |||
0e70724dc2 | |||
d048fc4710 | |||
a74260d09f | |||
aaf0c184d1 | |||
0cd2d869c3 | |||
e0fc368105 | |||
fc2d3655b0 | |||
02f2954bd5 | |||
40d4330bcc | |||
75ae510390 | |||
86b5ffda4f | |||
5e1adef785 | |||
21adcfc5b3 | |||
e7036f90dc | |||
41619c2763 | |||
b3b9381dad | |||
b55cea36b1 | |||
8bb3c084e3 | |||
2c11219da5 | |||
2e7f566be0 | |||
a1dd938400 | |||
d03734211f | |||
ecbf829ea9 | |||
d678296449 | |||
9716ac2333 | |||
acfdb36e73 | |||
72743ca23b | |||
c4ced566b1 | |||
2fdd8738ef | |||
bca4682e63 | |||
50ebdac74f | |||
e415034e60 | |||
55ac4a7305 | |||
f803da91b4 | |||
b07e37454a | |||
2d6c71d335 | |||
dcec7a1be9 | |||
598d994644 | |||
aac9c23152 | |||
6caddd2808 | |||
37f4eaa9bb | |||
2c2a394a61 | |||
ef5a1c48ba | |||
f348faeb5f | |||
9376623917 | |||
a0dfbc4441 | |||
28a379db83 | |||
2efe2b0f01 | |||
1a5307c2e9 | |||
d0f8bb5dfe | |||
8cfade6692 | |||
1a0195b25f | |||
071a0c995e | |||
581ff82167 | |||
3f034883a6 | |||
48614c76a9 | |||
a8575df376 | |||
9b0518dfe9 | |||
3099f5cd6e | |||
ed437d4424 | |||
fcbe94656f | |||
af312dbbba | |||
b86f1b128d | |||
d5027ce4ec | |||
775c717fb4 | |||
87ff0c5594 | |||
f5b81c7b97 | |||
ab691084c6 | |||
8e131041a4 | |||
e7ab799c76 | |||
1bc60d0c0c | |||
fc58080467 | |||
b905907d10 | |||
0913122f6f | |||
f8cd26f337 | |||
f7b46d31a4 | |||
6caa4dc86e | |||
dad02dc7ad | |||
8a5540c974 | |||
55aab79ebc | |||
d78ebcf1a1 | |||
a8e38e8f47 | |||
88dab185c4 | |||
c09fd5b1dd | |||
17a2d74512 | |||
3e25482521 | |||
61add0eb5d | |||
61f6a653ab | |||
6241cd8e48 | |||
2a62564d46 | |||
6351d3e8ee | |||
883fe7ff9f | |||
9c136a59dd | |||
13598dd908 | |||
2787932886 | |||
1bb20c2b5d | |||
91ad5bdb0e | |||
fc84ad7fb0 | |||
d9588c4df8 | |||
b288541937 | |||
417f828cff | |||
fa6bb24f93 | |||
84135f523a | |||
0e3b0c7013 | |||
22dc07ce9a | |||
de05652cf1 | |||
cfdee429d9 | |||
8286998e04 | |||
cf920a350d | |||
c17edd608e | |||
6acda56284 | |||
d2985ef379 | |||
de9636ec47 | |||
2bcf60e422 | |||
3b14ee2117 | |||
e76340d4f3 | |||
6ee18d7f85 | |||
9ae189a5e0 | |||
658e0203c9 | |||
7041a551b1 | |||
d2751a07a3 | |||
3f4c998b88 | |||
2db4dc66c6 | |||
0aa8126876 | |||
1e030bb23d | |||
da054ce8f8 | |||
d7bbca0ad8 | |||
fcd0399831 | |||
18b3aea791 | |||
1f91959d51 | |||
0cf369eb38 | |||
c3ed47237f | |||
71a988fc8e | |||
d4aa47c35c | |||
649c1b23e4 |
12
COPYRIGHT
12
COPYRIGHT
@ -1,16 +1,16 @@
|
||||
Mario Danic <mario.danic@gmail.com>,
|
||||
Vreixo Formoso <metalpain2002@yahoo.es>
|
||||
Thomas Schmitt <scdbackup@gmx.net>
|
||||
libisoburn is Copyright (C) 2007-2008 Vreixo Formoso, Thomas Schmitt
|
||||
xorriso is Copyright (C) 2007-2008 Thomas Schmitt
|
||||
libisofs (if included) is Copyright (C) 2007-2008 Vreixo Formoso, Mario Danic
|
||||
libisoburn is Copyright (C) 2007-2010 Vreixo Formoso, Thomas Schmitt
|
||||
xorriso is Copyright (C) 2007-2010 Thomas Schmitt
|
||||
libisofs (if included) is Copyright (C) 2007-2010 Vreixo Formoso, Mario Danic
|
||||
libburn (if included) is Copyright (C) 2002-2006 Derek Foreman, Ben Jansens
|
||||
and Copyright (C) 2006-2008 Mario Danic, Thomas Schmitt
|
||||
and Copyright (C) 2006-2010 Mario Danic, Thomas Schmitt
|
||||
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License version 2 as
|
||||
published by the Free Software Foundation.
|
||||
it under the terms of the GNU General Public License version 2
|
||||
or later as published by the Free Software Foundation.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
|
20
Makefile.am
20
Makefile.am
@ -1,4 +1,8 @@
|
||||
pkgconfigdir=$(libdir)/pkgconfig
|
||||
|
||||
# ts A90315 : LIBBURNIA_PKGCONFDIR is defined OS specific in acinclude.m4
|
||||
# was: pkgconfigdir=$(libdir)/pkgconfig
|
||||
pkgconfigdir=$(LIBBURNIA_PKGCONFDIR)
|
||||
|
||||
libincludedir=$(includedir)/libisoburn
|
||||
|
||||
lib_LTLIBRARIES = libisoburn/libisoburn.la
|
||||
@ -46,8 +50,14 @@ bin_PROGRAMS = \
|
||||
# cat xorriso/xorriso_buildstamp.h
|
||||
|
||||
xorriso_xorriso_CPPFLAGS = -Ilibisoburn
|
||||
xorriso_xorriso_CFLAGS = -DXorriso_with_maiN -DXorriso_with_regeX $(READLINE_DEF)
|
||||
xorriso_xorriso_LDADD = libisoburn/libisoburn.la -lisofs -lburn $(THREAD_LIBS)
|
||||
xorriso_xorriso_CFLAGS = -DXorriso_with_maiN \
|
||||
$(READLINE_DEF) $(LIBACL_DEF) $(XATTR_DEF) \
|
||||
$(EXTF_DEF) $(EXTF_SUID_DEF) $(ZLIB_DEF) \
|
||||
$(XORRISO_DVD_OBS_64K)
|
||||
|
||||
xorriso_xorriso_LDADD = libisoburn/libisoburn.la -lisofs -lburn \
|
||||
$(THREAD_LIBS) $(LIBBURN_ARCH_LIBS)
|
||||
|
||||
xorriso_xorriso_SOURCES = \
|
||||
xorriso/xorriso.h \
|
||||
xorriso/xorriso_private.h \
|
||||
@ -152,6 +162,8 @@ man_MANS = xorriso/xorriso.1
|
||||
EXTRA_DIST = \
|
||||
libisoburn-1.pc.in \
|
||||
version.h.in \
|
||||
doc/comments \
|
||||
doc/doxygen.conf.in \
|
||||
README \
|
||||
AUTHORS \
|
||||
CONTRIBUTORS \
|
||||
@ -160,6 +172,6 @@ EXTRA_DIST = \
|
||||
INSTALL \
|
||||
xorriso/changelog.txt \
|
||||
xorriso/xorriso_buildstamp_none.h \
|
||||
xorriso/README \
|
||||
xorriso/README_gnu_xorriso \
|
||||
$(man_MANS)
|
||||
|
||||
|
76
README
76
README
@ -1,12 +1,12 @@
|
||||
------------------------------------------------------------------------------
|
||||
http:libburnia-project.org
|
||||
------------------------------------------------------------------------------
|
||||
libisoburn. By Vreixo Formoso <metalpain2002@yahoo.es>
|
||||
and Thomas Schmitt <scdbackup@gmx.net>
|
||||
libisoburn and xorriso. By Vreixo Formoso <metalpain2002@yahoo.es>
|
||||
and Thomas Schmitt <scdbackup@gmx.net>
|
||||
Integrated sub project of libburnia-project.org.
|
||||
http://files.libburnia-project.org/releases/libisoburn-0.2.7.tar.gz
|
||||
Copyright (C) 2006-2008 Vreixo Formoso, Thomas Schmitt.
|
||||
Provided under GPL version 2.
|
||||
http://files.libburnia-project.org/releases/libisoburn-0.5.0.pl00.tar.gz
|
||||
Copyright (C) 2006-2010 Vreixo Formoso, Thomas Schmitt.
|
||||
Provided under GPL version 2 or later.
|
||||
------------------------------------------------------------------------------
|
||||
|
||||
libisoburn is a frontend for libraries libburn and libisofs which enables
|
||||
@ -18,7 +18,12 @@ The price for that is thorough specialization on data files in ISO-9660
|
||||
filesystem images. So libisoburn is not suitable for audio (CD-DA) or any
|
||||
other CD layout which does not entirely consist of ISO-9660 sessions.
|
||||
|
||||
Currently it is only supported on Linux with kernels >= 2.4.
|
||||
xorriso is a command line application of libisoburn, libisofs, and libburn.
|
||||
|
||||
Currently they are fully supported on Linux with kernels >= 2.4 and on
|
||||
FreeBSD versions with ATAPI/CAM support enabled in the kernel, see atapicam(4).
|
||||
On other X/Open compliant systems libburn will only offer POSIX i/o with disk
|
||||
file objects, but no direct MMC operation on CD/DVD/BD drives.
|
||||
|
||||
By using this software you agree to the disclaimer at the end of this text:
|
||||
"... without even the implied warranty ..."
|
||||
@ -26,18 +31,17 @@ By using this software you agree to the disclaimer at the end of this text:
|
||||
|
||||
Compilation, First Glimpse, Installation
|
||||
|
||||
Dynamic library and compile time header requirements for libisoburn-0.2.7 :
|
||||
- libburn.so.4 , version libburn-0.5.2 or higher
|
||||
- libisofs.so.6 , version libisofs-0.6.9 or higher
|
||||
Dynamic library and compile time header requirements for libisoburn-0.5.0 :
|
||||
- libburn.so.4 , version libburn-0.7.6 or higher
|
||||
- libisofs.so.6 , version libisofs-0.6.28 or higher
|
||||
libisoburn and xorriso will not start with libraries which are older than their
|
||||
headers seen at compile time. So compile in the oldest possible installation
|
||||
setup unless you have reason to enforce a newer bug fix level.
|
||||
headers seen at compile time.
|
||||
|
||||
Obtain libisoburn-0.2.7.tar.gz, take it to a directory of your choice
|
||||
Obtain libisoburn-0.5.0.pl00.tar.gz, take it to a directory of your choice
|
||||
and do:
|
||||
|
||||
tar xzf libisoburn-0.2.7.tar.gz
|
||||
cd libisoburn-0.2.7
|
||||
tar xzf libisoburn-0.5.0.pl00.tar.gz
|
||||
cd libisoburn-0.5.0
|
||||
|
||||
Within that directory execute:
|
||||
|
||||
@ -46,7 +50,7 @@ Within that directory execute:
|
||||
|
||||
Then become superuser and execute
|
||||
make install
|
||||
which will make available libisoburn.so.1 and program xorriso.
|
||||
which will make available libisoburn.so.1 and the program xorriso.
|
||||
|
||||
For the API concepts and calls see
|
||||
./libisoburn/libisoburn.h
|
||||
@ -59,8 +63,9 @@ as well as
|
||||
|
||||
libisoburn comes with a command line and dialog application named xorriso,
|
||||
which offers a substantial part of libisoburn features to shell scripts and
|
||||
users. Its file xorriso/README describes a standalone tarball as first
|
||||
preference for statically linked xorriso installation.
|
||||
users. Its file xorriso/README_gnu_xorriso describes the tarball of the
|
||||
derived package GNU xorriso as first preference for a statically linked
|
||||
xorriso installation.
|
||||
The libisoburn installation described above produces a dynamically linked
|
||||
xorriso binary depending on libburn.so, libisofs.so, libisoburn.so.
|
||||
|
||||
@ -77,12 +82,28 @@ are present. This dependcy can be avoided by running
|
||||
./configure --prefix=/usr --disable-libreadline
|
||||
make clean ; make
|
||||
Never omit the "make clean" command after switching libreadline enabling.
|
||||
Other deliberate dependency reduction options of ./configure are:
|
||||
--disable-libacl avoid use of ACL functions like acl_to_text()
|
||||
--disable-xattr avoid use of xattr functions like listxattr()
|
||||
--disable-zlib avoid use of zlib functions like compress2()
|
||||
|
||||
xorriso allows to use external processes as file content filters. This is
|
||||
a potential security risk which may be avoided by ./configure option
|
||||
--disable-external-filters
|
||||
By default the filter feature is disabled if effective user id and real
|
||||
user id differ. This ban can be lifted by
|
||||
--enable-external-filters-setuid
|
||||
|
||||
In some situations Linux may deliver a better write performance to DVD drives
|
||||
if 64 KB rather than 32 KB are transmitted in each write operation.
|
||||
64k can be made default at configure time by:
|
||||
--enable-dvd-obs-64k
|
||||
|
||||
|
||||
Drives and Disk File Objects
|
||||
|
||||
The user of libisoburn applications needs rw-permission for the CD/DVD burner
|
||||
devices which shall be used.
|
||||
The user of libisoburn applications needs rw-permission for the CD/DVD/BD
|
||||
drives which shall be used, even if only reading is intended.
|
||||
A list of rw-accessible drives can be obtained by
|
||||
xorriso -devices
|
||||
resp. by libburn API call
|
||||
@ -104,6 +125,9 @@ output drives. The addresses of the disk files have to be preceded by "stdio:".
|
||||
Like:
|
||||
"stdio:/tmp/pseudo_drive"
|
||||
|
||||
Note: xorriso by default prefixes "stdio:" to addresses outside the /dev tree
|
||||
if they do not lead to an optical drive device file.
|
||||
|
||||
|
||||
Testing
|
||||
|
||||
@ -137,8 +161,8 @@ and vice versa:
|
||||
------------------------------------------------------------------------------
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License version 2 as
|
||||
published by the Free Software Foundation.
|
||||
it under the terms of the GNU General Public License version 2 or later
|
||||
as published by the Free Software Foundation.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
@ -155,11 +179,19 @@ libburnia-project.org
|
||||
By Mario Danic <mario.danic@gmail.com>,
|
||||
Vreixo Formoso <metalpain2002@yahoo.es>
|
||||
Thomas Schmitt <scdbackup@gmx.net>
|
||||
Copyright (C) 2006-2008 Mario Danic, Vreixo Formoso, Thomas Schmitt.
|
||||
Copyright (C) 2006-2010 Mario Danic, Vreixo Formoso, Thomas Schmitt.
|
||||
|
||||
We will not raise any legal protest to dynamic linking of our libraries
|
||||
with applications that are not under GPL, as long as they fulfill
|
||||
the condition of offering the library source code used, whether
|
||||
altered or unaltered, under the GPLv2+, along with the application.
|
||||
Nevertheless, the safest legal position is not to link libburn with
|
||||
non-GPL compatible programs.
|
||||
|
||||
libburnia-project.org is inspired by and in other components still containing
|
||||
parts of old
|
||||
Libburn. By Derek Foreman <derek@signalmarketing.com> and
|
||||
Ben Jansens <xor@orodu.net>
|
||||
Copyright (C) 2002-2006 Derek Foreman and Ben Jansens
|
||||
libisoburn does not stem from their code.
|
||||
|
||||
|
111
acinclude.m4
111
acinclude.m4
@ -1,6 +1,18 @@
|
||||
AC_DEFUN([LIBBURNIA_SET_FLAGS],
|
||||
[
|
||||
case $target_os in
|
||||
freebsd*)
|
||||
LDFLAGS="$LDFLAGS -L/usr/local/lib"
|
||||
CPPFLAGS="$CPPFLAGS -I/usr/local/include"
|
||||
;;
|
||||
esac
|
||||
])
|
||||
|
||||
|
||||
AC_DEFUN([TARGET_SHIZZLE],
|
||||
[
|
||||
ARCH=""
|
||||
LIBBURNIA_PKGCONFDIR="$libdir"/pkgconfig
|
||||
|
||||
AC_MSG_CHECKING([target operating system])
|
||||
|
||||
@ -12,11 +24,108 @@ AC_DEFUN([TARGET_SHIZZLE],
|
||||
*-*-freebsd*)
|
||||
ARCH=freebsd
|
||||
LIBBURN_ARCH_LIBS=-lcam
|
||||
|
||||
# This may later be overridden by configure --enable-libdir-pkgconfig
|
||||
LIBBURNIA_PKGCONFDIR=$(echo "$libdir" | sed 's/\/lib$/\/libdata/')/pkgconfig
|
||||
;;
|
||||
*)
|
||||
AC_ERROR([You are attempting to compile for an unsupported platform])
|
||||
ARCH=
|
||||
LIBBURN_ARCH_LIBS=
|
||||
# AC_ERROR([You are attempting to compile for an unsupported platform])
|
||||
;;
|
||||
esac
|
||||
|
||||
AC_MSG_RESULT([$ARCH])
|
||||
])
|
||||
|
||||
|
||||
dnl LIBBURNIA_CHECK_ICONV is by Thomas Schmitt, libburnia project
|
||||
dnl It is based on gestures from:
|
||||
dnl iconv.m4 serial AM7 (gettext-0.18)
|
||||
dnl Copyright (C) 2000-2002, 2007-2009 Free Software Foundation, Inc.
|
||||
dnl This file is free software; the Free Software Foundation
|
||||
dnl gives unlimited permission to copy and/or distribute it,
|
||||
dnl with or without modifications, as long as this notice is preserved.
|
||||
dnl From Bruno Haible.
|
||||
dnl
|
||||
AC_DEFUN([LIBBURNIA_CHECK_ICONV],
|
||||
[
|
||||
dnl Check whether it is allowed to link with -liconv
|
||||
AC_MSG_CHECKING([for separate -liconv ])
|
||||
libburnia_liconv="no"
|
||||
libburnia_save_LIBS="$LIBS"
|
||||
LIBS="$LIBS -liconv"
|
||||
AC_TRY_LINK([#include <stdlib.h>
|
||||
#include <iconv.h>],
|
||||
[iconv_t cd = iconv_open("","");
|
||||
iconv(cd,NULL,NULL,NULL,NULL);
|
||||
iconv_close(cd);],
|
||||
[libburnia_liconv="yes"],
|
||||
[LIBS="$libburnia_save_LIBS"]
|
||||
)
|
||||
AC_MSG_RESULT([$libburnia_liconv])
|
||||
|
||||
dnl Check for iconv(..., const char **inbuf, ...)
|
||||
AC_MSG_CHECKING([for const qualifier with iconv() ])
|
||||
AC_TRY_COMPILE([
|
||||
#include <stdlib.h>
|
||||
#include <iconv.h>
|
||||
size_t iconv (iconv_t cd, char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft);
|
||||
], [], [libburnia_iconv_const=""], [libburnia_iconv_const="const"]
|
||||
)
|
||||
AC_DEFINE_UNQUOTED([ICONV_CONST], [$libburnia_iconv_const])
|
||||
test -z "$libburnia_iconv_const" && libburnia_iconv_const="no"
|
||||
AC_MSG_RESULT([$libburnia_iconv_const])
|
||||
])
|
||||
|
||||
|
||||
dnl LIBBURNIA_SET_PKGCONFIG determines the install directory for the *.pc file.
|
||||
dnl Important: Must be performed _after_ TARGET_SHIZZLE
|
||||
dnl
|
||||
AC_DEFUN([LIBBURNIA_SET_PKGCONFIG],
|
||||
[
|
||||
### for testing --enable-libdir-pkgconfig on Linux
|
||||
### LIBBURNIA_PKGCONFDIR="$libdir"data/pkgconfig
|
||||
|
||||
if test "x$LIBBURNIA_PKGCONFDIR" = "x$libdir"/pkgconfig
|
||||
then
|
||||
dummy=dummy
|
||||
else
|
||||
AC_ARG_ENABLE(libdir-pkgconfig,
|
||||
[ --enable-libdir-pkgconfig Install to $libdir/pkgconfig on any OS, default=no],
|
||||
, enable_libdir_pkgconfig="no")
|
||||
AC_MSG_CHECKING([for --enable-libdir-pkgconfig])
|
||||
if test "x$enable_libdir_pkgconfig" = xyes
|
||||
then
|
||||
LIBBURNIA_PKGCONFDIR="$libdir"/pkgconfig
|
||||
fi
|
||||
AC_MSG_RESULT([$enable_libdir_pkgconfig])
|
||||
fi
|
||||
|
||||
libburnia_pkgconfig_override="no"
|
||||
AC_ARG_ENABLE(pkgconfig-path,
|
||||
[ --enable-pkgconfig-path=DIR Absolute path of directory for libisofs-*.pc],
|
||||
libburnia_pkgconfig_override="yes" , enable_pkgconfig_path="none")
|
||||
AC_MSG_CHECKING([for overridden pkgconfig directory path])
|
||||
if test "x$enable_pkgconfig_path" = xno
|
||||
then
|
||||
libburnia_pkgconfig_override="no"
|
||||
fi
|
||||
if test "x$enable_pkgconfig_path" = x -o "x$enable_pkgconfig_path" = xyes
|
||||
then
|
||||
libburnia_pkgconfig_override="invalid argument"
|
||||
fi
|
||||
if test "x$libburnia_pkgconfig_override" = xyes
|
||||
then
|
||||
LIBBURNIA_PKGCONFDIR="$enable_pkgconfig_path"
|
||||
AC_MSG_RESULT([$LIBBURNIA_PKGCONFDIR])
|
||||
else
|
||||
AC_MSG_RESULT([$libburnia_pkgconfig_override])
|
||||
fi
|
||||
AC_SUBST(LIBBURNIA_PKGCONFDIR)
|
||||
|
||||
dnl For debugging only
|
||||
### AC_MSG_RESULT([LIBBURNIA_PKGCONFDIR = $LIBBURNIA_PKGCONFDIR])
|
||||
|
||||
])
|
||||
|
||||
|
169
configure.ac
169
configure.ac
@ -1,14 +1,16 @@
|
||||
AC_INIT([libisoburn], [0.2.7], [http://libburnia-project.org])
|
||||
AC_INIT([libisoburn], [0.5.0], [http://libburnia-project.org])
|
||||
AC_PREREQ([2.50])
|
||||
dnl AC_CONFIG_HEADER([config.h])
|
||||
|
||||
AC_CANONICAL_HOST
|
||||
AC_CANONICAL_TARGET
|
||||
|
||||
LIBBURNIA_SET_FLAGS
|
||||
|
||||
AM_INIT_AUTOMAKE([subdir-objects])
|
||||
|
||||
dnl Hint: Search list for version code aspects:
|
||||
dnl /AC_INT(
|
||||
dnl /AC_INIT(
|
||||
dnl /ISOBURN_.*_VERSION
|
||||
dnl /LT_.*
|
||||
dnl /LIB.*_REQUIRED
|
||||
@ -20,8 +22,9 @@ dnl LT_CURREN, LT_AGE, LT_REVISION where SONAME becomes LT_CURRENT - LT_AGE
|
||||
dnl
|
||||
dnl These three are only copies to provide libtool with unused LT_RELEASE
|
||||
ISOBURN_MAJOR_VERSION=0
|
||||
ISOBURN_MINOR_VERSION=2
|
||||
ISOBURN_MICRO_VERSION=7
|
||||
ISOBURN_MINOR_VERSION=5
|
||||
ISOBURN_MICRO_VERSION=0
|
||||
|
||||
dnl ISOBURN_VERSION=$ISOBURN_MAJOR_VERSION.$ISOBURN_MINOR_VERSION.$ISOBURN_MICRO_VERSION
|
||||
|
||||
AC_SUBST(ISOBURN_MAJOR_VERSION)
|
||||
@ -33,16 +36,16 @@ dnl Libtool versioning
|
||||
dnl Generate libisoburn.so.1.x.y
|
||||
dnl SONAME will become LT_CURRENT - LT_AGE
|
||||
dnl
|
||||
dnl ts A80920
|
||||
dnl ### This is the release version 0.2.6 = libisoburn.so.1.15.0
|
||||
dnl ts B00222
|
||||
dnl ### This is the release version 0.5.0 = libisoburn.so.1.39.0
|
||||
dnl This is the development version after above stable release
|
||||
dnl LT_CURRENT++, LT_AGE++ have not happened happened yet.
|
||||
dnl LT_CURRENT++, LT_AGE++ have not happened yet.
|
||||
dnl ### LT_CURRENT++, LT_AGE++ has happened meanwhile.
|
||||
dnl
|
||||
dnl SONAME = 16 - 15 = 1 . Library name = libisoburn.so.1.15.0
|
||||
dnl SONAME = 40 - 39 = 1 . Library name = libisoburn.so.1.39.0
|
||||
LT_RELEASE=$ISOBURN_MAJOR_VERSION.$ISOBURN_MINOR_VERSION
|
||||
LT_CURRENT=16
|
||||
LT_AGE=15
|
||||
LT_CURRENT=40
|
||||
LT_AGE=39
|
||||
LT_REVISION=0
|
||||
LT_CURRENT_MINUS_AGE=`expr $LT_CURRENT - $LT_AGE`
|
||||
|
||||
@ -70,6 +73,12 @@ if test ! $ac_cv_func_fseeko; then
|
||||
AC_ERROR([Libburn requires largefile support.])
|
||||
fi
|
||||
|
||||
dnl If iconv(3) is in an extra lib, then it gets added to variable LIBS.
|
||||
dnl If not, then no -liconv will be added.
|
||||
AC_CHECK_LIB(iconv, iconv, , )
|
||||
dnl GNU iconv has no function iconv() but libiconv() and a macro iconv()
|
||||
AC_CHECK_LIB(iconv, libiconv, , )
|
||||
|
||||
AC_PROG_LIBTOOL
|
||||
AC_SUBST(LIBTOOL_DEPS)
|
||||
LIBTOOL="$LIBTOOL --silent"
|
||||
@ -83,9 +92,16 @@ AC_SUBST(THREAD_LIBS)
|
||||
|
||||
TARGET_SHIZZLE
|
||||
AC_SUBST(ARCH)
|
||||
AC_SUBST(LIBBURNIA_PKGCONFDIR)
|
||||
AC_SUBST(LIBBURN_ARCH_LIBS)
|
||||
|
||||
|
||||
dnl Determine target directory for libisoburn-*.pc
|
||||
dnl Important: Must be performed _after_ TARGET_SHIZZLE
|
||||
dnl
|
||||
LIBBURNIA_SET_PKGCONFIG
|
||||
|
||||
|
||||
AC_ARG_ENABLE(libreadline,
|
||||
[ --enable-libreadline Enable use of libreadline by xorriso, default=yes],
|
||||
, enable_libreadline=yes)
|
||||
@ -102,15 +118,144 @@ else
|
||||
fi
|
||||
AC_SUBST(READLINE_DEF)
|
||||
|
||||
dnl ts A90329
|
||||
dnl ACL and xattr do not need to be enabled in libisoburn or xorriso source
|
||||
dnl but without AC_CHECK_LIB() xorriso will not be linked with -lacl .
|
||||
dnl On my Linux this does work with an ACL enabled libisofs but in general
|
||||
dnl it seems not be right.
|
||||
dnl So for now it seems to be best to do the same configuration for libisoburn
|
||||
dnl and xorriso as for libisofs.
|
||||
|
||||
AC_ARG_ENABLE(libacl,
|
||||
[ --enable-libacl Enable use of libacl by libisofs, default=yes],
|
||||
, enable_libacl=yes)
|
||||
if test x$enable_libacl = xyes; then
|
||||
dnl Check whether there is libacl-devel and libacl-runtime.
|
||||
dnl If not, erase this macro which would enable use of acl_to_text and others
|
||||
LIBACL_DEF="-DLibisofs_with_aaip_acL"
|
||||
dnl The empty yes case obviously causes -lacl to be linked
|
||||
AC_CHECK_HEADER(sys/acl.h, AC_CHECK_LIB(acl, acl_to_text, , LIBACL_DEF= ), LIBACL_DEF= )
|
||||
else
|
||||
LIBACL_DEF=
|
||||
fi
|
||||
AC_SUBST(LIBACL_DEF)
|
||||
|
||||
|
||||
AC_ARG_ENABLE(xattr,
|
||||
[ --enable-xattr Enable use of xattr by libisofs, default=yes],
|
||||
, enable_xattr=yes)
|
||||
if test x$enable_xattr = xyes; then
|
||||
dnl Check whether there is the header for Linux xattr.
|
||||
dnl If not, erase this macro which would enable use of listxattr and others
|
||||
XATTR_DEF="-DLibisofs_with_aaip_xattR"
|
||||
AC_CHECK_HEADER(attr/xattr.h, AC_CHECK_LIB(c, listxattr, X= , XATTR_DEF= ), XATTR_DEF= )
|
||||
else
|
||||
XATTR_DEF=
|
||||
fi
|
||||
AC_SUBST(XATTR_DEF)
|
||||
|
||||
|
||||
dnl ts A90409
|
||||
dnl Same situation as with xattr and ACL: libisoburn does not depend directly
|
||||
dnl on zlib. But if it is enabled in libisofs then it seems wise to link it
|
||||
dnl with libisoburn apps.
|
||||
AC_ARG_ENABLE(zlib,
|
||||
[ --enable-zlib Enable use of zlib by libisofs, default=yes],
|
||||
, enable_zlib=yes)
|
||||
if test x$enable_zlib = xyes; then
|
||||
dnl Check whether there is the header for zlib.
|
||||
dnl If not, erase this macro which would enable use of compress2() and others.
|
||||
dnl Linking fails on SuSE 9.0 because zlib has compress2() but lacks
|
||||
dnl compressBound(). So compressBound is the more modern thing to test.
|
||||
dnl The empty parameter after "compressBound" causes -lz.
|
||||
ZLIB_DEF="-DLibisofs_with_zliB"
|
||||
AC_CHECK_HEADER(zlib.h, AC_CHECK_LIB(z, compressBound, , ZLIB_DEF= ), ZLIB_DEF= )
|
||||
else
|
||||
ZLIB_DEF=
|
||||
fi
|
||||
AC_SUBST(ZLIB_DEF)
|
||||
|
||||
|
||||
dnl ts B00107
|
||||
dnl Just for the case that it is necessary to give link option -lcdio not only
|
||||
dnl with libburn but also with libburn apps like xorriso.
|
||||
dnl On SuSE 10.2 this is not needed. libburn finds libcdio on its own.
|
||||
AC_ARG_ENABLE(libcdio,
|
||||
[ --enable-libcdio Enable EXPERIMENTAL use of libcdio as system adapter, default=no],
|
||||
, enable_libcdio=no)
|
||||
if test x$enable_libcdio = xyes; then
|
||||
dnl Check whether there is libcdio-devel and libcdio-runtime.
|
||||
dnl If not, erase this macro
|
||||
LIBCDIO_DEF="-DLibburn_use_libcdiO"
|
||||
dnl The empty yes case obviously causes -lcdio to be linked
|
||||
AC_CHECK_HEADER(cdio/cdio.h, AC_CHECK_LIB(cdio, mmc_last_cmd_sense, , LIBCDIO_DEF= ), LIBCDIO_DEF= )
|
||||
else
|
||||
LIBCDIO_DEF=
|
||||
fi
|
||||
AC_SUBST(LIBCDIO_DEF)
|
||||
|
||||
|
||||
AC_ARG_ENABLE(external-filters,
|
||||
[ --enable-external-filters Enable use of external filter programs by xorriso, default=yes],
|
||||
, enable_external_filters=yes)
|
||||
if test x"$enable_external_filters" = xyes; then
|
||||
EXTF_DEF="-DXorriso_allow_external_filterS"
|
||||
echo "enabled xorriso external filter programs"
|
||||
else
|
||||
EXTF_DEF=
|
||||
echo "disabled xorriso external filter programs"
|
||||
fi
|
||||
AC_SUBST(EXTF_DEF)
|
||||
|
||||
AC_ARG_ENABLE(external-filters-setuid,
|
||||
[ --enable-external-filters-setuid Enable xorriso external filter programs under setuid, default=no],
|
||||
, enable_external_filters_setuid=no)
|
||||
if test x$enable_external_filters_setuid = xyes; then
|
||||
EXTF_SUID_DEF="-DXorriso_allow_extf_suiD"
|
||||
echo "enabled xorriso external filter programs under setuid"
|
||||
else
|
||||
EXTF_SUID_DEF=
|
||||
echo "disabled xorriso external filter programs under setuid"
|
||||
fi
|
||||
AC_SUBST(EXTF_SUID_DEF)
|
||||
|
||||
AC_ARG_ENABLE(dvd-obs-64k,
|
||||
[ --enable-dvd-obs-64k 64 KB default size for xorriso DVD/BD writing, default=no],
|
||||
, enable_fifo_odirect=no)
|
||||
if test x$enable_dvd_obs_64k = xyes; then
|
||||
XORRISO_DVD_OBS_64K="-DXorriso_dvd_obs_default_64K"
|
||||
echo "enabled xorriso write size default 64 KB on DVD and BD"
|
||||
else
|
||||
XORRISO_DVD_OBS_64K=
|
||||
echo "disabled xorriso write size default 64 KB on DVD and BD"
|
||||
fi
|
||||
AC_SUBST(XORRISO_DVD_OBS_64K)
|
||||
|
||||
|
||||
AC_CHECK_HEADER(libburn/libburn.h)
|
||||
AC_CHECK_HEADER(libisofs/libisofs.h)
|
||||
|
||||
dnl Check for proper library versions
|
||||
LIBBURN_REQUIRED=0.5.4
|
||||
LIBISOFS_REQUIRED=0.6.10
|
||||
LIBBURN_REQUIRED=0.7.6
|
||||
LIBISOFS_REQUIRED=0.6.28
|
||||
PKG_CHECK_MODULES(LIBBURN, libburn-1 >= $LIBBURN_REQUIRED)
|
||||
PKG_CHECK_MODULES(LIBISOFS, libisofs-1 >= $LIBISOFS_REQUIRED)
|
||||
|
||||
if test x$LIBCDIO_DEF = x
|
||||
then
|
||||
if test x$enable_libcdio = xyes
|
||||
then
|
||||
echo "WARNING: could not enable use of libcdio as system adapter"
|
||||
fi
|
||||
else
|
||||
echo "enabled EXPERIMENTAL use of libcdio as system adapter"
|
||||
|
||||
dnl For some reason this check may not be done earlier or else pkg-config
|
||||
dnl is not found.
|
||||
LIBCDIO_REQUIRED=0.83
|
||||
PKG_CHECK_MODULES(LIBCDIO, libcdio >= $LIBCDIO_REQUIRED)
|
||||
fi
|
||||
|
||||
dnl Add compiler-specific flags
|
||||
|
||||
dnl See if the user wants aggressive optimizations of the code
|
||||
|
58
doc/comments
Normal file
58
doc/comments
Normal file
@ -0,0 +1,58 @@
|
||||
/**
|
||||
@author Mario Danic, Vreixo Formoso, Thomas Schmitt
|
||||
|
||||
@mainpage Libisoburn Documentation Index
|
||||
|
||||
@section intro Introduction
|
||||
|
||||
Libburnia is an open-source project for reading, mastering and writing
|
||||
optical discs. This page is about its capability to read, manipulate, and
|
||||
write ISO 9660 filesystems with Rock Ridge extensions. Media can be optical
|
||||
media or filesystem objects.
|
||||
|
||||
Our scope is currently Linux 2.4 and 2.6, or FreeBSD .
|
||||
|
||||
libisoburn is an add-on to libburn and libisofs which coordinates both and
|
||||
also allows to grow ISO-9660 filesystem images on multi-session media as well
|
||||
as on overwriteable media via the same API.
|
||||
All media peculiarities are handled automatically.
|
||||
|
||||
xorriso is an application of all three libraries which creates, loads,
|
||||
manipulates and writes ISO 9660 filesystem images with Rock Ridge extensions.
|
||||
Manipulation is not only adding or overwriting of files but also deletion,
|
||||
renaming, and attribute changing. An incremental backup feature is provided.
|
||||
See xorriso/README for more
|
||||
|
||||
SONAME:
|
||||
libisoburn.so.1 (since 0.1.0, February 2008).
|
||||
|
||||
|
||||
@section using Using the libraries
|
||||
|
||||
Our build system is based on autotools.
|
||||
User experience tells us that you will need at least autotools version 1.7.
|
||||
|
||||
To build libisoburn go into its toplevel directory and execute
|
||||
|
||||
- ./bootstrap (needed if you downloaded from SVN)
|
||||
|
||||
- ./configure
|
||||
|
||||
- make
|
||||
|
||||
To make the libraries accessible for running resp. developing applications
|
||||
|
||||
- make install
|
||||
|
||||
Read libisoburn/libisoburn.h for a description of the API.
|
||||
See also README, xorriso/README, and the man page xorriso/xorriso.1 which
|
||||
gives an idea of the capabilities provided by Libburnia.
|
||||
|
||||
You will also have to install and understand the two libraries of the
|
||||
Libburnia project which provide fundamental services:
|
||||
libburn is the library by which preformatted data get onto optical media.
|
||||
See libburn/libburn.h for its API description.
|
||||
libisofs is the library to handle ISO 9660 filesystems with Rock Ridge
|
||||
extensions. Its API is described in libisofs/libisofs.h .
|
||||
|
||||
*/
|
@ -6,7 +6,8 @@
|
||||
*/
|
||||
/* libburn wrappers for libisoburn
|
||||
|
||||
Copyright 2007 - 2008 Thomas Schmitt, <scdbackup@gmx.net>
|
||||
Copyright 2007 - 2010 Thomas Schmitt, <scdbackup@gmx.net>
|
||||
Provided under GPL version 2 or later.
|
||||
*/
|
||||
|
||||
/* <<< A70929 : hardcoded CD-RW with fabricated -msinfo
|
||||
@ -24,6 +25,7 @@
|
||||
#include <sys/stat.h>
|
||||
#include <fcntl.h>
|
||||
#include <time.h>
|
||||
#include <regex.h>
|
||||
|
||||
|
||||
#ifndef Xorriso_standalonE
|
||||
@ -82,11 +84,11 @@ int isoburn_initialize(char msg[1024], int flag)
|
||||
iso_lib_header_version_minor
|
||||
iso_lib_header_version_micro
|
||||
If the header is too old then the following code shall cause failure of
|
||||
cdrskin compilation rather than to allow production of a program with
|
||||
libisoburn compilation rather than to allow production of a program with
|
||||
unpredictable bugs or memory corruption.
|
||||
The compiler messages supposed to appear in this case are:
|
||||
error: 'LIBISOFS_MISCONFIGURATION' undeclared (first use in this function)
|
||||
error: 'INTENTIONAL_ABORT_OF_COMPILATION__HEADERFILE_libisofs_dot_h_TOO_OLD__SEE_libisoburn_dot_h_and_burn_wrap_dot_h' undeclared (first use in this function)
|
||||
error: 'INTENTIONAL_ABORT_OF_COMPILATION__HEADERFILE_libisofs_dot_h_TOO_OLD__SEE_libisoburn_dot_h_AND_burn_wrap_dot_h' undeclared (first use in this function)
|
||||
error: 'LIBISOFS_MISCONFIGURATION_' undeclared (first use in this function)
|
||||
*/
|
||||
/* The indendation is an advise of man gcc to help old compilers ignoring */
|
||||
@ -102,7 +104,7 @@ int isoburn_initialize(char msg[1024], int flag)
|
||||
|
||||
#ifdef Isoburn_libisofs_dot_h_too_olD
|
||||
LIBISOFS_MISCONFIGURATION = 0;
|
||||
INTENTIONAL_ABORT_OF_COMPILATION__HEADERFILE_libisofs_dot_h_TOO_OLD__SEE_libisoburn_dot_h_and_burn_wrap_dot_h = 0;
|
||||
INTENTIONAL_ABORT_OF_COMPILATION__HEADERFILE_libisofs_dot_h_TOO_OLD__SEE_libisoburn_dot_h_AND_burn_wrap_dot_h = 0;
|
||||
LIBISOFS_MISCONFIGURATION_ = 0;
|
||||
#endif
|
||||
|
||||
@ -264,6 +266,9 @@ int isoburn_is_intermediate_dvd_rw(struct burn_drive *d, int flag)
|
||||
bit3= if the drive reports a -ROM profile then try to read
|
||||
table of content by scanning for ISO image headers.
|
||||
bit4= do not emulate TOC on overwriteable media
|
||||
bit5= ignore ACL from external filesystems
|
||||
bit6= ignore POSIX Extended Attributes from external filesystems
|
||||
bit7= pretend -ROM and scan for table of content
|
||||
*/
|
||||
static int isoburn_welcome_media(struct isoburn **o, struct burn_drive *d,
|
||||
int flag)
|
||||
@ -272,6 +277,11 @@ static int isoburn_welcome_media(struct isoburn **o, struct burn_drive *d,
|
||||
struct burn_multi_caps *caps= NULL;
|
||||
struct isoburn_toc_entry *t;
|
||||
char profile_name[80];
|
||||
struct isoburn_toc_disc *disc= NULL;
|
||||
struct isoburn_toc_session **sessions;
|
||||
struct isoburn_toc_track **tracks;
|
||||
int num_sessions= 0, num_tracks= 0, track_count= 0, session_no= 0;
|
||||
char msg[80];
|
||||
|
||||
profile_name[0]= 0;
|
||||
ret= burn_disc_get_profile(d, &profile, profile_name);
|
||||
@ -280,8 +290,11 @@ static int isoburn_welcome_media(struct isoburn **o, struct burn_drive *d,
|
||||
ret= burn_disc_get_multi_caps(d, BURN_WRITE_NONE, &caps, 0);
|
||||
if(ret<0) /* == 0 is read-only media, but it is too early to reject it here */
|
||||
goto ex;
|
||||
if(ret==0)
|
||||
if(ret==0 || (flag & 128))
|
||||
readonly= 1;
|
||||
if(flag & 128)
|
||||
flag = (flag & ~ 16) | 8;
|
||||
|
||||
ret= isoburn_new(o, 0);
|
||||
if(ret<=0)
|
||||
goto ex;
|
||||
@ -289,6 +302,7 @@ static int isoburn_welcome_media(struct isoburn **o, struct burn_drive *d,
|
||||
(*o)->msgs_submit= libisoburn_default_msgs_submit;
|
||||
(*o)->msgs_submit_handle= libisoburn_default_msgs_submit_handle;
|
||||
(*o)->msgs_submit_flag= libisoburn_default_msgs_submit_flag;
|
||||
iso_image_set_ignore_aclea((*o)->image, (flag >> 5 ) & 3);
|
||||
|
||||
#ifdef Hardcoded_cd_rW
|
||||
/* <<< A70929 : hardcoded CD-RW with fabricated -msinfo */
|
||||
@ -296,8 +310,9 @@ static int isoburn_welcome_media(struct isoburn **o, struct burn_drive *d,
|
||||
(*o)->fabricated_disc_status= BURN_DISC_APPENDABLE;
|
||||
#endif
|
||||
|
||||
if(caps->start_adr) { /* set emulation to overwriteable */
|
||||
if(caps->start_adr)
|
||||
(*o)->emulation_mode= 1;
|
||||
if(caps->start_adr && !readonly) { /* set emulation to overwriteable */
|
||||
ret= isoburn_is_intermediate_dvd_rw(d, 0);
|
||||
if(ret>0) {
|
||||
(*o)->min_start_byte= 0;
|
||||
@ -313,30 +328,53 @@ static int isoburn_welcome_media(struct isoburn **o, struct burn_drive *d,
|
||||
(*o)->emulation_mode= -1;
|
||||
goto ex;
|
||||
}
|
||||
if(!(flag & 16)) {
|
||||
/* try to read emulated toc */
|
||||
ret= isoburn_emulate_toc(d, 0);
|
||||
if(ret<0) {
|
||||
(*o)->emulation_mode= -1;
|
||||
goto ex;
|
||||
}
|
||||
/* try to read emulated toc */
|
||||
ret= isoburn_emulate_toc(d, flag & 16);
|
||||
if(ret<0) {
|
||||
(*o)->emulation_mode= -1;
|
||||
goto ex;
|
||||
}
|
||||
}
|
||||
|
||||
} else {
|
||||
|
||||
/* >>> recognize unsuitable media (but allow read-only media) */;
|
||||
|
||||
if(readonly) {
|
||||
/* This might be overwriteable media in a -ROM drive */
|
||||
if((flag & 16)) {
|
||||
ret= 0;
|
||||
(*o)->fabricated_disc_status= BURN_DISC_FULL;
|
||||
/* This might be overwriteable media in a -ROM drive.
|
||||
Pitfall:
|
||||
Multi-session media which bear a xorriso image for overwriteables
|
||||
in their first session would get a TOC of that first image rather
|
||||
than of the media.
|
||||
It is not possible to distinguish a BD-RE from a single session
|
||||
BD-R with an image for overwriteables. But as soon as the media
|
||||
bears 2 logical tracks it cannot be overwriteable.
|
||||
So count the number of tracks first.
|
||||
*/
|
||||
disc= isoburn_toc_drive_get_disc(d);
|
||||
if(disc != NULL) {
|
||||
sessions= isoburn_toc_disc_get_sessions(disc, &num_sessions);
|
||||
for(session_no= 0; session_no < num_sessions; session_no++) {
|
||||
tracks= isoburn_toc_session_get_tracks(sessions[session_no],
|
||||
&num_tracks);
|
||||
track_count+= num_tracks;
|
||||
}
|
||||
isoburn_toc_disc_free(disc);
|
||||
}
|
||||
|
||||
sprintf(msg, "ROM media has libburn track count = %d", track_count);
|
||||
isoburn_msgs_submit(*o, 0x00060000, msg, 0, "DEBUG", 0);
|
||||
|
||||
if((flag & 16) || track_count >= 2) {
|
||||
ret= 0; /* toc emulation off, or not overwriteable */
|
||||
} else {
|
||||
ret= isoburn_emulate_toc(d, 1);
|
||||
if(ret<0)
|
||||
goto ex;
|
||||
else if(ret > 0)
|
||||
(*o)->emulation_mode= 1;
|
||||
}
|
||||
if(ret==0 && profile !=0x08 && (flag&8)) {
|
||||
if(ret == 0 && (profile != 0x08 || (flag & 128)) && (flag & 8)) {
|
||||
/* This might also be multi-session media which do not
|
||||
get shown with a decent TOC.
|
||||
CD-R TOC (profile 0x08) can be trusted. Others not.
|
||||
@ -381,6 +419,9 @@ ex:
|
||||
(depending on media type and drive state this might
|
||||
help or it might make the resulting toc even worse)
|
||||
bit4= do not emulate TOC on overwriteable media
|
||||
bit5= ignore ACL from external filesystems
|
||||
bit6= ignore POSIX Extended Attributes from external filesystems
|
||||
bit7= pretend -ROM profile and scan for table of content
|
||||
*/
|
||||
int isoburn_drive_aquire(struct burn_drive_info *drive_infos[],
|
||||
char *adr, int flag)
|
||||
@ -411,7 +452,7 @@ int isoburn_drive_aquire(struct burn_drive_info *drive_infos[],
|
||||
goto ex;
|
||||
drive_grabbed= 1;
|
||||
ret= isoburn_welcome_media(&o, (*drive_infos)[0].drive,
|
||||
(flag & 24) | !!(flag&2));
|
||||
(flag & (8 | 16 | 32 | 64 | 128)) | !!(flag&2));
|
||||
if(ret<=0)
|
||||
goto ex;
|
||||
|
||||
@ -522,19 +563,26 @@ int isoburn_disc_erasable(struct burn_drive *d)
|
||||
|
||||
void isoburn_disc_erase(struct burn_drive *drive, int fast)
|
||||
{
|
||||
int ret;
|
||||
int ret, do_pseudo_blank= 0;
|
||||
struct isoburn *o;
|
||||
enum burn_disc_status s;
|
||||
char zero_buffer[Libisoburn_target_head_sizE];
|
||||
struct burn_multi_caps *caps= NULL;
|
||||
|
||||
ret= isoburn_find_emulator(&o, drive, 0);
|
||||
if(ret>0) {
|
||||
if(o->emulation_mode==-1) {
|
||||
/* To cause a negative reply with burn_drive_wrote_well() */
|
||||
burn_drive_cancel(drive);
|
||||
return;
|
||||
goto ex;
|
||||
}
|
||||
if(o->emulation_mode>0) {
|
||||
|
||||
if(o->emulation_mode > 0) { /* might be readonly with emulated sessions */
|
||||
ret= burn_disc_get_multi_caps(drive, BURN_WRITE_NONE, &caps, 0);
|
||||
if(ret > 0 && caps->start_adr)
|
||||
do_pseudo_blank= 1;
|
||||
}
|
||||
if(do_pseudo_blank) {
|
||||
s= isoburn_disc_get_status(drive);
|
||||
if(s==BURN_DISC_FULL) { /* unknown data format in first 64 kB */
|
||||
memset(zero_buffer, 0, Libisoburn_target_head_sizE);
|
||||
@ -545,10 +593,13 @@ void isoburn_disc_erase(struct burn_drive *drive, int fast)
|
||||
}
|
||||
if(ret<=0)
|
||||
burn_drive_cancel(drive); /* mark run as failure */
|
||||
return;
|
||||
goto ex;
|
||||
}
|
||||
}
|
||||
burn_disc_erase(drive, fast);
|
||||
ex:;
|
||||
if(caps!=NULL)
|
||||
burn_disc_free_multi_caps(&caps);
|
||||
}
|
||||
|
||||
|
||||
@ -1016,7 +1067,7 @@ int isoburn_read_iso_head(struct burn_drive *d, int lba,
|
||||
int *image_blocks, char *info, int flag)
|
||||
{
|
||||
unsigned char buffer[64*1024];
|
||||
int ret, info_mode;
|
||||
int ret, info_mode, capacity, role;
|
||||
off_t data_count;
|
||||
|
||||
info_mode= flag&255;
|
||||
@ -1024,8 +1075,19 @@ int isoburn_read_iso_head(struct burn_drive *d, int lba,
|
||||
if(flag&(1<<13)) {
|
||||
memcpy(buffer, info, 64*1024);
|
||||
} else {
|
||||
ret = burn_read_data(d, ((off_t) lba) * (off_t) 2048, (char *) buffer,
|
||||
role = burn_drive_get_drive_role(d);
|
||||
ret = burn_get_read_capacity(d, &capacity, 0);
|
||||
if (ret <= 0 && role == 2) {
|
||||
/* Might be a block device on a system where libburn cannot determine its
|
||||
size. Try to read anyway. */
|
||||
capacity = 0x7ffffff0;
|
||||
ret = 1;
|
||||
}
|
||||
if(ret > 0 && (off_t) capacity * (off_t) 2048 >= (off_t) (64 * 1024)) {
|
||||
ret = burn_read_data(d, ((off_t) lba) * (off_t) 2048, (char *) buffer,
|
||||
(off_t) 64*1024, &data_count, 2); /* no error messages */
|
||||
} else
|
||||
ret= 0;
|
||||
if(ret<=0)
|
||||
return(-1*!!(flag&(1<<15)));
|
||||
if(info_mode==2)
|
||||
@ -1041,18 +1103,21 @@ int isoburn_read_iso_head(struct burn_drive *d, int lba,
|
||||
}
|
||||
ret= isoburn_read_iso_head_parse(d, buffer+32*1024, image_blocks, info,
|
||||
info_mode);
|
||||
return(ret);
|
||||
if(ret<=0)
|
||||
return(ret);
|
||||
return(1);
|
||||
}
|
||||
|
||||
|
||||
int isoburn_make_toc_entry(struct isoburn *o, int *session_count, int lba,
|
||||
int track_blocks, int flag)
|
||||
int track_blocks, char *volid, int flag)
|
||||
{
|
||||
int ret;
|
||||
struct isoburn_toc_entry *item;
|
||||
|
||||
ret= isoburn_toc_entry_new(&item, o->toc, 0);
|
||||
if(ret<=0) {
|
||||
no_memory:;
|
||||
isoburn_msgs_submit(o, 0x00060000,
|
||||
"Not enough memory for emulated TOC entry object",
|
||||
0, "FATAL", 0);
|
||||
@ -1065,21 +1130,28 @@ int isoburn_make_toc_entry(struct isoburn *o, int *session_count, int lba,
|
||||
item->track_no= *session_count;
|
||||
item->start_lba= lba;
|
||||
item->track_blocks= track_blocks;
|
||||
if(volid != NULL) {
|
||||
item->volid= strdup(volid);
|
||||
if(item->volid == NULL)
|
||||
goto no_memory;
|
||||
}
|
||||
return(1);
|
||||
}
|
||||
|
||||
|
||||
/* @param flag bit0= allow unemulated media
|
||||
bit1= free scanning without enclosing LBA-0-header
|
||||
bit4= represent emulated media as one single session
|
||||
(not with bit1)
|
||||
@return -1 severe error, 0= no neat header chain, 1= credible chain read
|
||||
*/
|
||||
int isoburn_emulate_toc(struct burn_drive *d, int flag)
|
||||
{
|
||||
int ret, image_size= 0, lba, track_blocks, session_count= 0, read_flag= 0;
|
||||
int scan_start= 0, scan_count= 0, probe_minus_16= 0, growisofs_nwa;
|
||||
int with_enclosure= 0;
|
||||
int scan_start= 0, scan_count= 0, probe_minus_16= 0, growisofs_nwa, role;
|
||||
int with_enclosure= 0, readable_blocks= -1;
|
||||
struct isoburn *o;
|
||||
char msg[160], size_text[80], *sev;
|
||||
char msg[160], size_text[80], *sev, volid[33], *volid_pt= NULL;
|
||||
time_t start_time, last_pacifier, now;
|
||||
|
||||
/* is the media emulated multi-session ? */
|
||||
@ -1091,6 +1163,18 @@ int isoburn_emulate_toc(struct burn_drive *d, int flag)
|
||||
if(o->emulation_mode<=0 && !(flag&1))
|
||||
return(0);
|
||||
|
||||
ret= burn_get_read_capacity(d, &readable_blocks, 0);
|
||||
if(ret <= 0) {
|
||||
|
||||
role = burn_drive_get_drive_role(d);
|
||||
if (role == 2)
|
||||
/* Might be a block device on a system where libburn cannot determine its
|
||||
size. Try to read anyway. */
|
||||
readable_blocks= 0x7ffffff0; /* try to read anyway */
|
||||
else
|
||||
readable_blocks= -1;
|
||||
}
|
||||
|
||||
start_time= last_pacifier= time(NULL);
|
||||
lba= 0;
|
||||
if(!(flag&2)) {
|
||||
@ -1099,6 +1183,10 @@ int isoburn_emulate_toc(struct burn_drive *d, int flag)
|
||||
{ret= 0; goto failure;}
|
||||
lba= Libisoburn_overwriteable_starT;
|
||||
with_enclosure= 1;
|
||||
if((flag & 16) && o->emulation_mode == 1) {
|
||||
ret= 1;
|
||||
goto failure; /* This will represent the media as single session */
|
||||
}
|
||||
}
|
||||
while(lba<image_size || (flag&2)) {
|
||||
now= time(NULL);
|
||||
@ -1112,7 +1200,7 @@ int isoburn_emulate_toc(struct burn_drive *d, int flag)
|
||||
session_count, size_text, (double) (now - start_time));
|
||||
isoburn_msgs_submit(o, 0x00060000, msg, 0, "UPDATE", 0);
|
||||
}
|
||||
read_flag= 0;
|
||||
read_flag= 1;
|
||||
if(flag&2)
|
||||
read_flag|= (1<<15)|((session_count>0)<<14);
|
||||
else {
|
||||
@ -1130,8 +1218,11 @@ int isoburn_emulate_toc(struct burn_drive *d, int flag)
|
||||
probe_minus_16= 0;
|
||||
}
|
||||
|
||||
ret= isoburn_read_iso_head(d, lba, &track_blocks, NULL, read_flag);
|
||||
if(ret<=0) {
|
||||
ret= isoburn_read_iso_head(d, lba, &track_blocks, volid, read_flag);
|
||||
if(ret > 0) {
|
||||
volid_pt= volid;
|
||||
} else {
|
||||
volid_pt= NULL;
|
||||
if(session_count>0) {
|
||||
if(flag&2) {
|
||||
if(ret==0) {
|
||||
@ -1149,7 +1240,7 @@ int isoburn_emulate_toc(struct burn_drive *d, int flag)
|
||||
isoburn_msgs_submit(o, 0x00060000, msg, 0, "WARNING", 0);
|
||||
|
||||
if(with_enclosure) {
|
||||
ret= isoburn_make_toc_entry(o, &session_count, 0, image_size, 0);
|
||||
ret= isoburn_make_toc_entry(o, &session_count, 0, image_size, NULL,0);
|
||||
if(ret<=0)
|
||||
goto failure;
|
||||
}
|
||||
@ -1161,7 +1252,14 @@ int isoburn_emulate_toc(struct burn_drive *d, int flag)
|
||||
if(ret==2) /* ISO header was found in first half block */
|
||||
lba-= 16;
|
||||
|
||||
ret= isoburn_make_toc_entry(o, &session_count, lba, track_blocks, 0);
|
||||
if(readable_blocks >= 0 && lba + track_blocks > readable_blocks) {
|
||||
sprintf(msg, "ISO image size %ds larger than readable size %ds",
|
||||
lba + track_blocks, readable_blocks);
|
||||
isoburn_msgs_submit(o, 0x00060000, msg, 0, "WARNING", 0);
|
||||
track_blocks= readable_blocks - lba;
|
||||
}
|
||||
ret= isoburn_make_toc_entry(o, &session_count, lba, track_blocks, volid_pt,
|
||||
0);
|
||||
if(ret<=0)
|
||||
goto failure;
|
||||
lba+= track_blocks;
|
||||
@ -1193,8 +1291,14 @@ int isoburn_emulate_toc(struct burn_drive *d, int flag)
|
||||
failure:;
|
||||
isoburn_toc_entry_destroy(&(o->toc), 1);
|
||||
if(with_enclosure && o->emulation_mode == 1) {
|
||||
if(readable_blocks >= 0 && image_size > readable_blocks) {
|
||||
sprintf(msg, "ISO image size %ds larger than readable size %ds",
|
||||
image_size, readable_blocks);
|
||||
isoburn_msgs_submit(o, 0x00060000, msg, 0, "WARNING", 0);
|
||||
image_size= readable_blocks;
|
||||
}
|
||||
session_count= 0;
|
||||
ret= isoburn_make_toc_entry(o, &session_count, 0, image_size, 0);
|
||||
ret= isoburn_make_toc_entry(o, &session_count, 0, image_size, NULL, 0);
|
||||
}
|
||||
return(ret);
|
||||
}
|
||||
@ -1467,6 +1571,21 @@ void isoburn_toc_track_get_entry(struct isoburn_toc_track *t,
|
||||
}
|
||||
|
||||
|
||||
int isoburn_toc_track_get_emul(struct isoburn_toc_track *t, int *start_lba,
|
||||
int *image_blocks, char volid[33], int flag)
|
||||
{
|
||||
if(t->toc_entry == NULL)
|
||||
return(0);
|
||||
if(t->toc_entry->volid == NULL)
|
||||
return(0);
|
||||
*start_lba= t->toc_entry->start_lba;
|
||||
*image_blocks= t->toc_entry->track_blocks;
|
||||
strncpy(volid, t->toc_entry->volid, 32);
|
||||
volid[32]= 0;
|
||||
return(1);
|
||||
}
|
||||
|
||||
|
||||
void isoburn_toc_disc_free(struct isoburn_toc_disc *d)
|
||||
{
|
||||
if(d->disc!=NULL)
|
||||
@ -1509,12 +1628,15 @@ int isoburn_drive_set_msgs_submit(struct burn_drive *d,
|
||||
|
||||
|
||||
/* @param flag bit0= with adr_mode 3: adr_value might be 16 blocks too high
|
||||
bit1= insist in seeing a disc object with at least one session
|
||||
bit2= with adr_mode 4: use adr_value as regular expression
|
||||
*/
|
||||
int isoburn_set_msc1(struct burn_drive *d, int adr_mode, char *adr_value,
|
||||
int flag)
|
||||
{
|
||||
int ret, num_sessions, num_tracks, adr_num, i, j, total_tracks;
|
||||
int lba, best_lba, size;
|
||||
int lba, best_lba, size, re_valid= 0, track_count= 0;
|
||||
time_t start_time= 0, last_pacifier= 0, now;
|
||||
char volid[33], msg[160];
|
||||
struct isoburn *o;
|
||||
struct isoburn_toc_disc *disc= NULL;
|
||||
@ -1522,6 +1644,8 @@ int isoburn_set_msc1(struct burn_drive *d, int adr_mode, char *adr_value,
|
||||
struct isoburn_toc_track **tracks= NULL;
|
||||
static char mode_names[][20]= {"auto", "session", "track", "lba", "volid"};
|
||||
static int max_mode_names= 4;
|
||||
regex_t re;
|
||||
regmatch_t match[1];
|
||||
|
||||
ret= isoburn_find_emulator(&o, d, 0);
|
||||
if(ret<0)
|
||||
@ -1529,8 +1653,9 @@ int isoburn_set_msc1(struct burn_drive *d, int adr_mode, char *adr_value,
|
||||
if(o==NULL)
|
||||
return(-1);
|
||||
|
||||
start_time= last_pacifier= time(NULL);
|
||||
adr_num= atoi(adr_value);
|
||||
if(adr_mode!=3) {
|
||||
if(adr_mode!=3 || (flag & 2)) {
|
||||
disc= isoburn_toc_drive_get_disc(d);
|
||||
if(disc==NULL) {
|
||||
not_found:;
|
||||
@ -1589,18 +1714,45 @@ not_found:;
|
||||
}
|
||||
} else if(adr_mode==4) {
|
||||
/* search for volume id that is equal to adr_value */
|
||||
if(flag & 4) {
|
||||
ret= regcomp(&re, adr_value, 0);
|
||||
if(ret != 0)
|
||||
flag&= ~4;
|
||||
else
|
||||
re_valid= 1;
|
||||
}
|
||||
best_lba= -1;
|
||||
for(i=0; i<num_sessions; i++) {
|
||||
tracks= isoburn_toc_session_get_tracks(sessions[i], &num_tracks);
|
||||
if(tracks==NULL)
|
||||
continue;
|
||||
for(j= 0; j<num_tracks; j++) {
|
||||
isoburn_get_track_lba(tracks[0], &lba, 0);
|
||||
ret= isoburn_read_iso_head(d, lba, &size, volid, 1);
|
||||
if(ret<=0)
|
||||
now= time(NULL);
|
||||
if(now - last_pacifier >= 5 && track_count > 0) {
|
||||
last_pacifier= now;
|
||||
sprintf(msg,
|
||||
"Scanned %d tracks for matching volid in %.f seconds",
|
||||
track_count, (double) (now - start_time));
|
||||
isoburn_msgs_submit(o, 0x00060000, msg, 0, "UPDATE", 0);
|
||||
}
|
||||
track_count++;
|
||||
ret= isoburn_toc_track_get_emul(tracks[0], &lba, &size, volid, 0);
|
||||
if(ret < 0)
|
||||
continue;
|
||||
if(strcmp(volid, adr_value)!=0)
|
||||
if(ret == 0) {
|
||||
isoburn_get_track_lba(tracks[0], &lba, 0);
|
||||
ret= isoburn_read_iso_head(d, lba, &size, volid, 1);
|
||||
if(ret<=0)
|
||||
continue;
|
||||
}
|
||||
if(flag & 4) {
|
||||
ret= regexec(&re, volid, 1, match, 0);
|
||||
if(ret != 0)
|
||||
continue;
|
||||
} else {
|
||||
if(strcmp(volid, adr_value)!=0)
|
||||
continue;
|
||||
}
|
||||
best_lba= lba;
|
||||
}
|
||||
}
|
||||
@ -1616,9 +1768,73 @@ unknown_mode:;
|
||||
}
|
||||
ret= 1;
|
||||
ex:;
|
||||
if(start_time != last_pacifier && track_count > 0) {
|
||||
now= time(NULL);
|
||||
sprintf(msg,
|
||||
"Scanned %d tracks for matching volid in %.f seconds",
|
||||
track_count, (double) (now - start_time));
|
||||
isoburn_msgs_submit(o, 0x00060000, msg, 0, "UPDATE", 0);
|
||||
}
|
||||
if(disc!=NULL)
|
||||
isoburn_toc_disc_free(disc);
|
||||
if((flag & 4) && re_valid)
|
||||
regfree(&re);
|
||||
return(ret);
|
||||
}
|
||||
|
||||
|
||||
int isoburn_get_mount_params(struct burn_drive *d,
|
||||
int adr_mode, char *adr_value,
|
||||
int *lba, int *track, int *session,
|
||||
char volid[33], int flag)
|
||||
{
|
||||
int msc1_mem, ret, total_tracks, num_sessions, num_tracks, i, j, track_lba;
|
||||
int size, is_iso= 0;
|
||||
struct isoburn *o;
|
||||
struct isoburn_toc_disc *disc= NULL;
|
||||
struct isoburn_toc_session **sessions= NULL;
|
||||
struct isoburn_toc_track **tracks= NULL;
|
||||
|
||||
*lba= *track= *session= -1;
|
||||
volid[0]= 0;
|
||||
ret= isoburn_find_emulator(&o, d, 0);
|
||||
if(ret < 0 || o == NULL)
|
||||
return(-1);
|
||||
msc1_mem= o->fabricated_msc1;
|
||||
ret= isoburn_set_msc1(d, adr_mode, adr_value, 2 | (flag & 4));
|
||||
if(ret <= 0)
|
||||
return(ret);
|
||||
*lba= o->fabricated_msc1;
|
||||
|
||||
disc= isoburn_toc_drive_get_disc(d);
|
||||
if(disc==NULL)
|
||||
{ret= -1; goto ex;} /* cannot happen because checked by isoburn_set_msc1 */
|
||||
sessions= isoburn_toc_disc_get_sessions(disc, &num_sessions);
|
||||
if(sessions==NULL || num_sessions<=0)
|
||||
{ret= -1; goto ex;} /* cannot happen because checked by isoburn_set_msc1 */
|
||||
total_tracks= 0;
|
||||
for(i=0; i<num_sessions && *session < 0; i++) {
|
||||
tracks= isoburn_toc_session_get_tracks(sessions[i], &num_tracks);
|
||||
if(tracks==NULL)
|
||||
continue;
|
||||
for(j= 0; j<num_tracks && *track < 0; j++) {
|
||||
total_tracks++;
|
||||
isoburn_get_track_lba(tracks[j], &track_lba, 0);
|
||||
if(track_lba == *lba) {
|
||||
*track= total_tracks;
|
||||
*session= i + 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
ret= isoburn_read_iso_head(d, *lba, &size, volid, 1);
|
||||
if(ret <= 0)
|
||||
volid[0]= 0;
|
||||
else
|
||||
is_iso= 1;
|
||||
|
||||
ex:;
|
||||
o->fabricated_msc1= msc1_mem;
|
||||
return(2 - is_iso);
|
||||
}
|
||||
|
||||
|
||||
|
@ -1,8 +1,9 @@
|
||||
/*
|
||||
data source for libisoburn.
|
||||
|
||||
Copyright 2007 - 2008 Vreixo Formoso Lopes <metalpain2002@yahoo.es>
|
||||
Copyright 2007 - 2010 Vreixo Formoso Lopes <metalpain2002@yahoo.es>
|
||||
and Thomas Schmitt <scdbackup@gmx.net>
|
||||
Provided under GPL version 2 or later.
|
||||
*/
|
||||
|
||||
#include <stdlib.h>
|
||||
|
@ -6,8 +6,10 @@
|
||||
/*
|
||||
Class core of libisoburn.
|
||||
|
||||
Copyright 2007 - 2008 Vreixo Formoso Lopes <metalpain2002@yahoo.es>
|
||||
Copyright 2007 - 2010 Vreixo Formoso Lopes <metalpain2002@yahoo.es>
|
||||
Thomas Schmitt <scdbackup@gmx.net>
|
||||
|
||||
Provided under GPL version 2 or later.
|
||||
*/
|
||||
|
||||
/* ( derived from stub generated by CgeN on Sat, 01 Sep 2007 12:04:36 GMT ) */
|
||||
@ -68,6 +70,7 @@ int isoburn_toc_entry_new(struct isoburn_toc_entry **objpt,
|
||||
o->track_no= 0;
|
||||
o->start_lba= -1;
|
||||
o->track_blocks= 0;
|
||||
o->volid= NULL;
|
||||
o->next= NULL;
|
||||
if(boss!=NULL) {
|
||||
for(s= boss; s->next!=NULL; s= s->next);
|
||||
@ -85,6 +88,8 @@ int isoburn_toc_entry_destroy(struct isoburn_toc_entry **o, int flag)
|
||||
return(0);
|
||||
if(flag&1)
|
||||
isoburn_toc_entry_destroy(&((*o)->next), flag);
|
||||
if((*o)->volid != NULL)
|
||||
free((*o)->volid);
|
||||
free((char *) (*o));
|
||||
*o= NULL;
|
||||
return(1);
|
||||
@ -353,17 +358,12 @@ int isoburn_prepare_disc_aux(struct burn_drive *in_d, struct burn_drive *out_d,
|
||||
IsoWriteOpts *wopts= NULL;
|
||||
enum burn_disc_status state;
|
||||
int ret, fifo_chunks, lba, nwa, i, new_img, early_indev_release;
|
||||
uint32_t data_start= -1;
|
||||
size_t buffer_size= 0, buffer_free= 0;
|
||||
char msg[160];
|
||||
|
||||
new_img= flag&1;
|
||||
early_indev_release= flag&2;
|
||||
if(new_img && early_indev_release) {
|
||||
isoburn_msgs_submit(in_o, 0x00060000,
|
||||
"Programming error: Wrong session setup: new_img && early_indev_release",
|
||||
0, "FATAL", 0);
|
||||
{ret= -4; goto ex;}
|
||||
}
|
||||
|
||||
ret= isoburn_find_emulator(&in_o, in_d, 0);
|
||||
if(ret<0 || in_o==NULL)
|
||||
@ -374,6 +374,13 @@ int isoburn_prepare_disc_aux(struct burn_drive *in_d, struct burn_drive *out_d,
|
||||
/* early end will be registered as failure */
|
||||
in_o->wrote_well= out_o->wrote_well= 0;
|
||||
|
||||
if(new_img && early_indev_release) {
|
||||
isoburn_msgs_submit(in_o, 0x00060000,
|
||||
"Programming error: Wrong session setup: new_img && early_indev_release",
|
||||
0, "FATAL", 0);
|
||||
{ret= -4; goto ex;}
|
||||
}
|
||||
|
||||
state = isoburn_disc_get_status(in_d);
|
||||
if (state != BURN_DISC_BLANK && state != BURN_DISC_APPENDABLE &&
|
||||
state != BURN_DISC_FULL) {
|
||||
@ -404,6 +411,17 @@ int isoburn_prepare_disc_aux(struct burn_drive *in_d, struct burn_drive *out_d,
|
||||
iso_write_opts_set_rockridge(wopts, opts->rockridge);
|
||||
iso_write_opts_set_joliet(wopts, opts->joliet);
|
||||
iso_write_opts_set_iso1999(wopts, opts->iso1999);
|
||||
|
||||
/* <<< #ifdef shall be removed when libisofs-0.6.20 is released */
|
||||
#ifdef Libisofs_hardlink_prooF
|
||||
|
||||
iso_write_opts_set_hardlinks(wopts, opts->hardlinks);
|
||||
if(opts->hardlinks)
|
||||
iso_write_opts_set_rrip_1_10_px_ino(wopts, 1);
|
||||
|
||||
#endif
|
||||
|
||||
iso_write_opts_set_aaip(wopts, opts->aaip);
|
||||
iso_write_opts_set_omit_version_numbers(wopts, opts->omit_version_numbers);
|
||||
iso_write_opts_set_allow_deep_paths(wopts, opts->allow_deep_paths);
|
||||
iso_write_opts_set_allow_longer_paths(wopts, opts->allow_longer_paths);
|
||||
@ -413,7 +431,16 @@ int isoburn_prepare_disc_aux(struct burn_drive *in_d, struct burn_drive *out_d,
|
||||
iso_write_opts_set_allow_full_ascii(wopts, opts->allow_full_ascii);
|
||||
iso_write_opts_set_relaxed_vol_atts(wopts, 1);
|
||||
iso_write_opts_set_joliet_longer_paths(wopts, opts->joliet_longer_paths);
|
||||
iso_write_opts_set_always_gmt(wopts, opts->always_gmt);
|
||||
iso_write_opts_set_rrip_version_1_10(wopts, opts->rrip_version_1_10);
|
||||
iso_write_opts_set_dir_rec_mtime(wopts, opts->dir_rec_mtime);
|
||||
iso_write_opts_set_aaip_susp_1_10(wopts, opts->aaip_susp_1_10);
|
||||
iso_write_opts_set_sort_files(wopts, opts->sort_files);
|
||||
iso_write_opts_set_record_md5(wopts, opts->session_md5, opts->file_md5 & 3);
|
||||
if(opts->scdbackup_tag_name[0] && opts->scdbackup_tag_time[0])
|
||||
iso_write_opts_set_scdbackup_tag(wopts, opts->scdbackup_tag_name,
|
||||
opts->scdbackup_tag_time,
|
||||
opts->scdbackup_tag_written);
|
||||
iso_write_opts_set_replace_mode(wopts, opts->replace_dir_mode,
|
||||
opts->replace_file_mode, opts->replace_uid, opts->replace_gid);
|
||||
iso_write_opts_set_default_dir_mode(wopts, opts->dir_mode);
|
||||
@ -465,6 +492,11 @@ int isoburn_prepare_disc_aux(struct burn_drive *in_d, struct burn_drive *out_d,
|
||||
if(in_o->iso_data_source!=NULL)
|
||||
isoburn_data_source_shutdown(in_o->iso_data_source, 0);
|
||||
}
|
||||
|
||||
ret= iso_write_opts_get_data_start(wopts, &data_start, 0);
|
||||
opts->data_start_lba= -1;
|
||||
if(ret > 0 && data_start <= 0x7FFFFFFF)
|
||||
opts->data_start_lba= data_start;
|
||||
|
||||
/* TODO check return values for failure. propertly clean-up on error */
|
||||
|
||||
@ -626,6 +658,11 @@ int isoburn_ropt_new(struct isoburn_read_opts **new_o, int flag)
|
||||
o->norock= 0;
|
||||
o->nojoliet= 0;
|
||||
o->noiso1999= 1;
|
||||
o->noaaip= 1;
|
||||
o->noacl= 1;
|
||||
o->noea= 1;
|
||||
o->noino= 1;
|
||||
o->nomd5= 1;
|
||||
o->preferjoliet= 0;
|
||||
o->uid= geteuid();
|
||||
o->gid= getegid();
|
||||
@ -659,6 +696,11 @@ int isoburn_ropt_set_extensions(struct isoburn_read_opts *o, int ext)
|
||||
o->noiso1999= !!(ext&4);
|
||||
o->preferjoliet= !!(ext&8);
|
||||
o->pretend_blank= !!(ext&16);
|
||||
o->noaaip= !!(ext & 32);
|
||||
o->noacl= !!(ext & 64);
|
||||
o->noea= !!(ext & 128);
|
||||
o->noino= !!(ext & 256);
|
||||
o->nomd5= !!(ext & 512);
|
||||
return(1);
|
||||
}
|
||||
|
||||
@ -666,7 +708,9 @@ int isoburn_ropt_set_extensions(struct isoburn_read_opts *o, int ext)
|
||||
int isoburn_ropt_get_extensions(struct isoburn_read_opts *o, int *ext)
|
||||
{
|
||||
*ext= (!!o->norock) | ((!!o->nojoliet)<<1) | ((!!o->noiso1999)<<2) |
|
||||
((!!o->preferjoliet)<<3) | ((!!o->pretend_blank)<<4);
|
||||
((!!o->preferjoliet)<<3) | ((!!o->pretend_blank)<<4) |
|
||||
((!!o->noaaip) << 5) | ((!!o->noacl) << 6) | ((!!o->noea) << 7) |
|
||||
((!!o->noino) << 8) | ((!!o->nomd5) << 9);
|
||||
return(1);
|
||||
}
|
||||
|
||||
@ -725,14 +769,28 @@ int isoburn_ropt_set_input_charset(struct isoburn_read_opts *o,
|
||||
}
|
||||
|
||||
|
||||
int isoburn_igopt_get_in_charset(struct isoburn_read_opts *o,
|
||||
char **input_charset)
|
||||
int isoburn_ropt_get_input_charset(struct isoburn_read_opts *o,
|
||||
char **input_charset)
|
||||
{
|
||||
*input_charset= o->input_charset;
|
||||
return(1);
|
||||
}
|
||||
|
||||
|
||||
int isoburn_ropt_set_auto_incharset(struct isoburn_read_opts *o, int mode)
|
||||
{
|
||||
o->auto_input_charset= mode & 1;
|
||||
return(1);
|
||||
}
|
||||
|
||||
|
||||
int isoburn_ropt_get_auto_incharset(struct isoburn_read_opts *o, int *mode)
|
||||
{
|
||||
*mode= o->auto_input_charset;
|
||||
return(1);
|
||||
}
|
||||
|
||||
|
||||
int isoburn_ropt_get_size_what(struct isoburn_read_opts *o,
|
||||
uint32_t *size, int *has_what)
|
||||
{
|
||||
@ -765,6 +823,8 @@ int isoburn_igopt_new(struct isoburn_imgen_opts **new_o, int flag)
|
||||
o->rockridge= 1;
|
||||
o->joliet= 0;
|
||||
o->iso1999= 0;
|
||||
o->hardlinks= 0;
|
||||
o->aaip = 0;
|
||||
o->omit_version_numbers= 0;
|
||||
o->allow_deep_paths= 1;
|
||||
o->allow_longer_paths= 0;
|
||||
@ -773,6 +833,10 @@ int isoburn_igopt_new(struct isoburn_imgen_opts **new_o, int flag)
|
||||
o->allow_lowercase= 0;
|
||||
o->allow_full_ascii= 0;
|
||||
o->joliet_longer_paths= 0;
|
||||
o->always_gmt= 0;
|
||||
o->rrip_version_1_10= 0;
|
||||
o->dir_rec_mtime= 0;
|
||||
o->aaip_susp_1_10= 0;
|
||||
o->sort_files= 0;
|
||||
o->replace_dir_mode= 0;
|
||||
o->replace_file_mode= 0;
|
||||
@ -782,9 +846,10 @@ int isoburn_igopt_new(struct isoburn_imgen_opts **new_o, int flag)
|
||||
o->file_mode= 0444;
|
||||
o->uid= 0;
|
||||
o->gid= 0;
|
||||
o->output_charset= 0;
|
||||
o->output_charset= NULL;
|
||||
o->fifo_size= 4*1024*1024;
|
||||
o->effective_lba= -1;
|
||||
o->data_start_lba= -1;
|
||||
return(1);
|
||||
}
|
||||
|
||||
@ -818,13 +883,19 @@ int isoburn_igopt_set_extensions(struct isoburn_imgen_opts *o, int ext)
|
||||
o->rockridge= !!(ext&1);
|
||||
o->joliet= !!(ext&2);
|
||||
o->iso1999= !!(ext&4);
|
||||
o->hardlinks= !!(ext & 8);
|
||||
o->aaip= !!(ext & 32);
|
||||
o->session_md5= !!(ext & 64);
|
||||
o->file_md5= (ext & (128 | 256)) >> 7;
|
||||
return(1);
|
||||
}
|
||||
|
||||
|
||||
int isoburn_igopt_get_extensions(struct isoburn_imgen_opts *o, int *ext)
|
||||
{
|
||||
*ext= (!!o->rockridge) | ((!!o->joliet)<<1) | ((!!o->iso1999)<<2);
|
||||
*ext= (!!o->rockridge) | ((!!o->joliet)<<1) | ((!!o->iso1999)<<2) |
|
||||
((!!o->hardlinks) << 3) | ((!!o->aaip) << 5) |
|
||||
((!!o->session_md5) << 6) | ((o->file_md5 & 3) << 7);
|
||||
return(1);
|
||||
}
|
||||
|
||||
@ -839,6 +910,10 @@ int isoburn_igopt_set_relaxed(struct isoburn_imgen_opts *o, int relax)
|
||||
o->allow_lowercase= !!(relax&32);
|
||||
o->allow_full_ascii= !!(relax&64);
|
||||
o->joliet_longer_paths= !!(relax&128);
|
||||
o->always_gmt= !!(relax & isoburn_igopt_always_gmt);
|
||||
o->rrip_version_1_10= !!(relax & isoburn_igopt_rrip_version_1_10);
|
||||
o->dir_rec_mtime= !!(relax & isoburn_igopt_dir_rec_mtime);
|
||||
o->aaip_susp_1_10= !!(relax & isoburn_igopt_aaip_susp_1_10);
|
||||
return(1);
|
||||
}
|
||||
|
||||
@ -848,7 +923,9 @@ int isoburn_igopt_get_relaxed(struct isoburn_imgen_opts *o, int *relax)
|
||||
*relax= (!!o->omit_version_numbers) | ((!!o->allow_deep_paths)<<1) |
|
||||
((!!o->allow_longer_paths)<<2) | ((!!o->max_37_char_filenames)<<3) |
|
||||
((!!o->no_force_dots)<<4) | ((!!o->allow_lowercase)<<5) |
|
||||
((!!o->allow_full_ascii)<<6) | ((!!o->joliet_longer_paths)<<7);
|
||||
((!!o->allow_full_ascii)<<6) | ((!!o->joliet_longer_paths)<<7) |
|
||||
((!!o->always_gmt)<<8) | ((!!o->rrip_version_1_10)<<9) |
|
||||
((!!o->dir_rec_mtime)<<10) | ((!!o->aaip_susp_1_10)<<11);
|
||||
return(1);
|
||||
}
|
||||
|
||||
@ -951,3 +1028,36 @@ int isoburn_igopt_get_effective_lba(struct isoburn_imgen_opts *o, int *lba)
|
||||
}
|
||||
|
||||
|
||||
int isoburn_igopt_get_data_start(struct isoburn_imgen_opts *o, int *lba)
|
||||
{
|
||||
*lba= o->data_start_lba;
|
||||
return(1);
|
||||
}
|
||||
|
||||
|
||||
int isoburn_igopt_set_scdbackup_tag(struct isoburn_imgen_opts *o, char *name,
|
||||
char *timestamp, char *tag_written)
|
||||
{
|
||||
strncpy(o->scdbackup_tag_name, name, 80);
|
||||
o->scdbackup_tag_name[80]= 0;
|
||||
strncpy(o->scdbackup_tag_time, timestamp, 18);
|
||||
o->scdbackup_tag_time[18]= 0;
|
||||
o->scdbackup_tag_written = tag_written;
|
||||
if(tag_written != NULL)
|
||||
tag_written[0]= 0;
|
||||
return(1);
|
||||
}
|
||||
|
||||
|
||||
int isoburn_igopt_get_scdbackup_tag(struct isoburn_imgen_opts *o,
|
||||
char name[81], char timestamp[19],
|
||||
char **tag_written)
|
||||
{
|
||||
strncpy(name, o->scdbackup_tag_name, 80);
|
||||
name[80]= 0;
|
||||
strncpy(timestamp, o->scdbackup_tag_time, 18);
|
||||
timestamp[18]= 0;
|
||||
*tag_written= o->scdbackup_tag_written;
|
||||
return(1);
|
||||
}
|
||||
|
||||
|
@ -2,8 +2,9 @@
|
||||
/*
|
||||
Class struct of libisoburn.
|
||||
|
||||
Copyright 2007 Vreixo Formoso Lopes <metalpain2002@yahoo.es>
|
||||
and Thomas Schmitt <scdbackup@gmx.net>
|
||||
Copyright 2007 - 2010 Vreixo Formoso Lopes <metalpain2002@yahoo.es>
|
||||
and Thomas Schmitt <scdbackup@gmx.net>
|
||||
Provided under GPL version 2 or later.
|
||||
*/
|
||||
|
||||
#ifndef Isoburn_includeD
|
||||
@ -22,6 +23,8 @@ struct isoburn_toc_entry {
|
||||
int start_lba;
|
||||
int track_blocks;
|
||||
|
||||
char *volid; /* For caching a volume id from emulated toc on overwriteables */
|
||||
|
||||
struct isoburn_toc_entry *next;
|
||||
};
|
||||
|
||||
@ -250,6 +253,18 @@ struct isoburn_read_opts {
|
||||
unsigned int norock:1; /*< Do not read Rock Ridge extensions */
|
||||
unsigned int nojoliet:1; /*< Do not read Joliet extensions */
|
||||
unsigned int noiso1999:1; /*< Do not read ISO 9660:1999 enhanced tree */
|
||||
|
||||
/* ts A90121 */
|
||||
unsigned int noaaip:1; /* Do not read AAIP for ACL and EA */
|
||||
unsigned int noacl:1; /* Do not read ACL from external file objects */
|
||||
unsigned int noea:1; /* Do not read XFS-style EA from externals */
|
||||
|
||||
/* ts A90508 */
|
||||
unsigned int noino:1; /* Discard eventual PX inode numbers */
|
||||
|
||||
/* ts A90810 */
|
||||
unsigned int nomd5:1; /* Do not read eventual MD5 array */
|
||||
|
||||
unsigned int preferjoliet:1;
|
||||
/*< When both Joliet and RR extensions are present, the RR
|
||||
* tree is used. If you prefer using Joliet, set this to 1. */
|
||||
@ -264,6 +279,15 @@ struct isoburn_read_opts {
|
||||
*/
|
||||
char *input_charset;
|
||||
|
||||
/**
|
||||
* Enable or disable methods to automatically choose an input charset.
|
||||
* This eventually overrides input_charset.
|
||||
*
|
||||
* bit0= allow to set the input character set automatically from
|
||||
* attribute "isofs.cs" of root directory
|
||||
*/
|
||||
int auto_input_charset;
|
||||
|
||||
/* modified by the function isoburn_read_image */
|
||||
unsigned int hasRR:1; /*< It will be set to 1 if RR extensions are present,
|
||||
to 0 if not. */
|
||||
@ -302,6 +326,20 @@ struct isoburn_imgen_opts {
|
||||
unsigned int joliet :1;
|
||||
unsigned int iso1999 :1;
|
||||
|
||||
/* Whether to mark suitable IsoNode as hardlinks in RRIP PX */
|
||||
unsigned int hardlinks :1;
|
||||
|
||||
/* Write eventual AAIP info containing ACL and EA */
|
||||
unsigned int aaip :1;
|
||||
|
||||
/* Produce and write a MD5 checksum of the whole session stream. */
|
||||
unsigned int session_md5 :1;
|
||||
|
||||
/* Produce and write MD5 checksums for each single IsoFile.
|
||||
See parameter files of iso_write_opts_set_record_md5().
|
||||
*/
|
||||
unsigned int file_md5 :2;
|
||||
|
||||
/* relaxed constraints */
|
||||
|
||||
/*
|
||||
@ -357,6 +395,31 @@ struct isoburn_imgen_opts {
|
||||
*/
|
||||
unsigned int joliet_longer_paths :1;
|
||||
|
||||
/**
|
||||
* Store timestamps as GMT rather than in local time.
|
||||
*/
|
||||
unsigned int always_gmt :1;
|
||||
|
||||
/**
|
||||
* Write Rock Ridge info as of specification RRIP-1.10 rather than
|
||||
* RRIP-1.12: signature "RRIP_1991A" rather than "IEEE_1282",
|
||||
* field PX without file serial number
|
||||
*/
|
||||
unsigned int rrip_version_1_10 :1;
|
||||
|
||||
/**
|
||||
* Store as ECMA-119 Directory Record timestamp the mtime
|
||||
* of the source rather than the image creation time.
|
||||
*/
|
||||
unsigned int dir_rec_mtime :1;
|
||||
|
||||
/**
|
||||
* Write AAIP as extension according to SUSP 1.10 rather than SUSP 1.12.
|
||||
* I.e. without announcing it by an ER field and thus without the need
|
||||
* to preceed the RRIP fields by an ES and to preceed the AA field by ES.
|
||||
*/
|
||||
unsigned int aaip_susp_1_10 :1;
|
||||
|
||||
unsigned int sort_files:1;
|
||||
/**< If files should be sorted based on their weight. */
|
||||
|
||||
@ -396,12 +459,35 @@ struct isoburn_imgen_opts {
|
||||
int fifo_size;
|
||||
|
||||
|
||||
/** Output value: Block address of session start as evaluatedfrom media
|
||||
/** Output value: Block address of session start as evaluated from media
|
||||
and other options by libisoburn and libburn.
|
||||
If <0 : Invalid
|
||||
If >=0: Valid block number. Block size is always 2 KiB.
|
||||
*/
|
||||
int effective_lba;
|
||||
|
||||
/** Output value: Block address of data section start as predicted by
|
||||
libisofs.
|
||||
If < 16: Invalid
|
||||
If >=16: Valid block number. Block size is always 2 KiB.
|
||||
*/
|
||||
int data_start_lba;
|
||||
|
||||
/**
|
||||
* If not empty: Parameters "name" and "timestamp" for a scdbackup stream
|
||||
* checksum tag. See scdbackup/README appendix VERIFY.
|
||||
* It makes sense only for single session images which start at LBA 0.
|
||||
* Such a tag may be part of a libisofs checksum tag block after the
|
||||
* session tag line. It then covers the whole session up to its own start
|
||||
* position.
|
||||
* If scdbackup_tag_written is not NULL then it is a pointer to an
|
||||
* application provided array with at least 512 characters. The effectively
|
||||
* written scdbackup tag will be copied to this memory location.
|
||||
*/
|
||||
char scdbackup_tag_name[81];
|
||||
char scdbackup_tag_time[19];
|
||||
char *scdbackup_tag_written;
|
||||
|
||||
};
|
||||
|
||||
|
||||
|
@ -6,8 +6,9 @@
|
||||
/*
|
||||
libisofs related functions of libisoburn.
|
||||
|
||||
Copyright 2007 - 2008 Vreixo Formoso Lopes <metalpain2002@yahoo.es>
|
||||
Copyright 2007 - 2010 Vreixo Formoso Lopes <metalpain2002@yahoo.es>
|
||||
Thomas Schmitt <scdbackup@gmx.net>
|
||||
Provided under GPL version 2 or later.
|
||||
*/
|
||||
|
||||
#include <stdlib.h>
|
||||
@ -166,6 +167,8 @@ create_blank_image:;
|
||||
iso_image_ref(*image); /*protects object from premature free*/
|
||||
}
|
||||
}
|
||||
iso_image_set_ignore_aclea(*image,
|
||||
(!!(read_opts->noacl)) | ((!!read_opts->noea) << 1) );
|
||||
return 1;
|
||||
}
|
||||
|
||||
@ -198,6 +201,11 @@ create_blank_image:;
|
||||
/* Important: do not return until iso_read_opts_free() */
|
||||
iso_read_opts_set_start_block(ropts, ms_block);
|
||||
iso_read_opts_set_no_rockridge(ropts, read_opts->norock);
|
||||
iso_read_opts_set_no_aaip(ropts, read_opts->noaaip);
|
||||
iso_read_opts_set_no_md5(ropts, read_opts->nomd5);
|
||||
|
||||
iso_read_opts_set_new_inos(ropts, read_opts->noino);
|
||||
|
||||
iso_read_opts_set_no_joliet(ropts, read_opts->nojoliet);
|
||||
iso_read_opts_set_no_iso1999(ropts, read_opts->noiso1999);
|
||||
iso_read_opts_set_preferjoliet(ropts, read_opts->preferjoliet);
|
||||
@ -206,10 +214,7 @@ create_blank_image:;
|
||||
iso_read_opts_set_default_uid(ropts, read_opts->uid);
|
||||
iso_read_opts_set_default_gid(ropts, read_opts->gid);
|
||||
iso_read_opts_set_input_charset(ropts, read_opts->input_charset);
|
||||
|
||||
/* <<< experimental API call of libisofs
|
||||
iso_read_opts_set_error_behavior(ropts, 1);
|
||||
*/
|
||||
iso_read_opts_auto_input_charset(ropts, read_opts->auto_input_charset);
|
||||
|
||||
ds = isoburn_data_source_new(d);
|
||||
if(o->iso_data_source!=NULL)
|
||||
@ -303,8 +308,8 @@ int isoburn_activate_session(struct burn_drive *drive)
|
||||
*/
|
||||
int isoburn_start_emulation(struct isoburn *o, int flag)
|
||||
{
|
||||
int ret, i;
|
||||
off_t data_count;
|
||||
int ret, i, capacity = -1, role;
|
||||
off_t data_count, to_read;
|
||||
struct burn_drive *drive;
|
||||
struct ecma119_pri_vol_desc *pvm;
|
||||
|
||||
@ -317,13 +322,32 @@ int isoburn_start_emulation(struct isoburn *o, int flag)
|
||||
|
||||
drive= o->drive;
|
||||
|
||||
/* we can assume 0 as start block for image */
|
||||
/* TODO what about ms? where we validate valid iso image in ms disc? */
|
||||
ret = burn_read_data(drive, (off_t) 0, (char*)o->target_iso_head,
|
||||
(off_t) Libisoburn_target_head_sizE, &data_count, 2);
|
||||
|
||||
/* an error means an empty disc */
|
||||
if (ret <= 0) {
|
||||
/* We can assume 0 as start block for image.
|
||||
The data there point to the most recent session.
|
||||
*/
|
||||
role = burn_drive_get_drive_role(drive);
|
||||
ret = burn_get_read_capacity(drive, &capacity, 0);
|
||||
if (ret <= 0)
|
||||
capacity = -1;
|
||||
if (capacity > 0 || role == 2) {
|
||||
/* Might be a block device on a system where libburn cannot determine its
|
||||
size. Try to read anyway. */
|
||||
memset(o->target_iso_head, 0, Libisoburn_target_head_sizE);
|
||||
to_read = Libisoburn_target_head_sizE;
|
||||
if(capacity > 0 && (off_t) capacity * (off_t) 2048 < to_read)
|
||||
to_read = (off_t) capacity * (off_t) 2048;
|
||||
ret = burn_read_data(drive, (off_t) 0, (char*)o->target_iso_head,
|
||||
to_read, &data_count, 2);
|
||||
if (ret <= 0) {
|
||||
/* an error means a disc with no ISO image */
|
||||
if (capacity > 0)
|
||||
o->fabricated_disc_status= BURN_DISC_FULL;
|
||||
else
|
||||
o->fabricated_disc_status= BURN_DISC_BLANK;
|
||||
return 1;
|
||||
}
|
||||
} else {
|
||||
/* No read capacity means blank media */
|
||||
o->fabricated_disc_status= BURN_DISC_BLANK;
|
||||
return 1;
|
||||
}
|
||||
|
@ -2,8 +2,9 @@
|
||||
/*
|
||||
API definition of libisoburn.
|
||||
|
||||
Copyright 2007-2008 Vreixo Formoso Lopes <metalpain2002@yahoo.es>
|
||||
Copyright 2007-2010 Vreixo Formoso Lopes <metalpain2002@yahoo.es>
|
||||
and Thomas Schmitt <scdbackup@gmx.net>
|
||||
Provided under GPL version 2 or later.
|
||||
*/
|
||||
|
||||
/** Overview
|
||||
@ -124,6 +125,22 @@ One should inquire isoburn_drive_wrote_well() to learn about overall success.
|
||||
Finally one must call isoburn_activate_session() which will complete any
|
||||
eventual multi-session emulation.
|
||||
|
||||
|
||||
Application Constraints
|
||||
|
||||
Applications shall include libisofs/libisofs.h , libburn/libburn.h and this
|
||||
file itself: libisoburn/libisoburn.h .
|
||||
They shall link with -lisofs -lburn -lisoburn or with the .o files emerging
|
||||
from building those libraries from their sources.
|
||||
|
||||
Applications must use 64 bit off_t, e.g. on 32-bit GNU/Linux by defining
|
||||
#define _LARGEFILE_SOURCE
|
||||
#define _FILE_OFFSET_BITS 64
|
||||
or take special precautions to interface with the library by 64 bit integers
|
||||
where above .h files prescribe off_t. Not to use 64 bit file i/o will keep
|
||||
the application from producing and processing ISO images of more than 2 GB
|
||||
size.
|
||||
|
||||
*/
|
||||
|
||||
|
||||
@ -200,15 +217,15 @@ void isoburn_version(int *major, int *minor, int *micro);
|
||||
*/
|
||||
#define isoburn_libisofs_req_major 0
|
||||
#define isoburn_libisofs_req_minor 6
|
||||
#define isoburn_libisofs_req_micro 10
|
||||
#define isoburn_libisofs_req_micro 28
|
||||
|
||||
/** The minimum version of libburn to be used with this version of libisoburn
|
||||
at compile time.
|
||||
@since 0.1.0
|
||||
*/
|
||||
#define isoburn_libburn_req_major 0
|
||||
#define isoburn_libburn_req_minor 5
|
||||
#define isoburn_libburn_req_micro 4
|
||||
#define isoburn_libburn_req_minor 7
|
||||
#define isoburn_libburn_req_micro 6
|
||||
|
||||
|
||||
/** The minimum version of libisofs to be used with this version of libisoburn
|
||||
@ -243,8 +260,8 @@ int isoburn_libburn_req(int *major, int *minor, int *micro);
|
||||
@since 0.1.0
|
||||
*/
|
||||
#define isoburn_header_version_major 0
|
||||
#define isoburn_header_version_minor 2
|
||||
#define isoburn_header_version_micro 7
|
||||
#define isoburn_header_version_minor 5
|
||||
#define isoburn_header_version_micro 0
|
||||
/** Note:
|
||||
Above version numbers are also recorded in configure.ac because libtool
|
||||
wants them as parameters at build time.
|
||||
@ -336,7 +353,8 @@ int isoburn_set_msgs_submit(int (*msgs_submit)(void *handle, int error_code,
|
||||
(cdrom/burner). Thus use with driveno 0 only. On failure
|
||||
the array has no valid elements at all.
|
||||
The returned array should be freed via burn_drive_info_free()
|
||||
when the drive is no longer needed.
|
||||
when the drive is no longer needed. But before this is done
|
||||
one has to call isoburn_drive_release(drive_infos[0].drive).
|
||||
@param adr The persistent address of the desired drive.
|
||||
@param load 1 attempt to load the disc tray. 0 no attempt,rather failure.
|
||||
@return 1 = success , 0 = drive not found , <0 = other error
|
||||
@ -353,7 +371,8 @@ int isoburn_drive_scan_and_grab(struct burn_drive_info *drive_infos[],
|
||||
(cdrom/burner). Thus use with driveno 0 only. On failure
|
||||
the array has no valid elements at all.
|
||||
The returned array should be freed via burn_drive_info_free()
|
||||
when the drive is no longer needed.
|
||||
when the drive is no longer needed. But before this is done
|
||||
one has to call isoburn_drive_release(drive_infos[0].drive).
|
||||
@param adr The persistent address of the desired drive.
|
||||
@param flag bit0= attempt to load the disc tray.
|
||||
Else: failure if not loaded.
|
||||
@ -365,16 +384,21 @@ int isoburn_drive_scan_and_grab(struct burn_drive_info *drive_infos[],
|
||||
(depending on media type and drive this might
|
||||
help or it might make the resulting toc even worse)
|
||||
bit4= do not emulate table of content on overwriteable media
|
||||
bit5= ignore ACL from external filesystems
|
||||
bit6= ignore POSIX Extended Attributes from external
|
||||
filesystems
|
||||
bit7= pretend read-only profile and scan for table of content
|
||||
@return 1 = success , 0 = drive not found , <0 = other error
|
||||
*/
|
||||
int isoburn_drive_aquire(struct burn_drive_info *drive_infos[],
|
||||
char* adr, int flag);
|
||||
char* adr, int flag);
|
||||
|
||||
/** Aquire a drive from the burn_drive_info[] array which was obtained by
|
||||
a previous call of burn_drive_scan().
|
||||
Wrapper for: burn_drive_grab()
|
||||
@since 0.1.0
|
||||
@param drive The drive to grab. E.g. drive_infos[1].drive .
|
||||
Call isoburn_drive_release(drive) when it it no longer needed.
|
||||
@param load 1 attempt to load the disc tray. 0 no attempt, rather failure.
|
||||
@return 1 success, <=0 failure
|
||||
*/
|
||||
@ -415,7 +439,7 @@ enum burn_disc_status isoburn_disc_get_status(struct burn_drive *drive);
|
||||
/** Tells whether the media can be treated by isoburn_disc_erase().
|
||||
Wrapper for: burn_disc_erasable()
|
||||
@since 0.1.0
|
||||
@param drive The drive to inquire.
|
||||
@param d The drive to inquire.
|
||||
@return 0=not erasable , else erasable
|
||||
*/
|
||||
int isoburn_disc_erasable(struct burn_drive *d);
|
||||
@ -440,7 +464,7 @@ void isoburn_disc_erase(struct burn_drive *drive, int fast);
|
||||
of libisoburn and libisofs.
|
||||
Note: Sessions and tracks are counted beginning with 1, not with 0.
|
||||
@since 0.1.6
|
||||
@param drive The drive where msc1 is to be set
|
||||
@param d The drive where msc1 is to be set
|
||||
@param adr_mode Determines how to interpret adr_value and to set msc1.
|
||||
If adr_value shall represent a number then decimal ASCII
|
||||
digits are expected.
|
||||
@ -450,12 +474,14 @@ void isoburn_disc_erase(struct burn_drive *drive, int fast);
|
||||
3= adr_value itself is the lba to be used
|
||||
4= start lba of last session with volume id
|
||||
given by adr_value
|
||||
@parm adr_value A string describing the value to be eventually used.
|
||||
@param adr_value A string describing the value to be eventually used.
|
||||
@param flag Bitfield for control purposes.
|
||||
bit0= @since 0.2.2
|
||||
with adr_mode 3: adr_value might be 16 blocks too high
|
||||
(e.g. -C stemming from growisofs). Probe for ISO head
|
||||
at adr_value-16 and eventually adjust setting.
|
||||
bit1= insist in seeing a disc object with at least one session
|
||||
bit2= with adr_mode 4: use adr_value as regular expression
|
||||
*/
|
||||
int isoburn_set_msc1(struct burn_drive *d, int adr_mode, char *adr_value,
|
||||
int flag);
|
||||
@ -496,8 +522,8 @@ struct isoburn_toc_track;
|
||||
isoburn_toc_disc_free() when no longer needed.
|
||||
Wrapper for: burn_drive_get_disc()
|
||||
@since 0.1.6
|
||||
@param drive The drive with the media to inspect
|
||||
@return NULL in case there is no content info, else it is a valid handle
|
||||
@param d The drive with the media to inspect
|
||||
@return NULL in case there is no content info, else it is a valid handle
|
||||
*/
|
||||
struct isoburn_toc_disc *isoburn_toc_drive_get_disc(struct burn_drive *d);
|
||||
|
||||
@ -506,8 +532,8 @@ struct isoburn_toc_disc *isoburn_toc_drive_get_disc(struct burn_drive *d);
|
||||
This number includes the eventual gaps between sessions and tracks.
|
||||
So this call is not really a wrapper for burn_disc_get_sectors().
|
||||
@since 0.1.6
|
||||
@param disc The master handle of the media
|
||||
@return number of blocks, <=0 indicates unknown or unreadable state
|
||||
@param disc The master handle of the media
|
||||
@return Number of blocks, <=0 indicates unknown or unreadable state
|
||||
*/
|
||||
int isoburn_toc_disc_get_sectors(struct isoburn_toc_disc *disc);
|
||||
|
||||
@ -558,7 +584,7 @@ struct isoburn_toc_track **isoburn_toc_session_get_tracks(
|
||||
/** Obtain a copy of the entry which describes a particular track.
|
||||
Wrapper for: burn_track_get_entry()
|
||||
@since 0.1.6
|
||||
@param s The track handle
|
||||
@param t The track handle
|
||||
@param entry A pointer to memory provided by the caller. It will be filled
|
||||
with info according to struct burn_toc_entry as defined
|
||||
in libburn.h
|
||||
@ -567,6 +593,23 @@ void isoburn_toc_track_get_entry(struct isoburn_toc_track *t,
|
||||
struct burn_toc_entry *entry);
|
||||
|
||||
|
||||
/** Obtain eventual ISO image parameters of an emulated track. This info was
|
||||
gained with much effort and thus gets cached in the track object.
|
||||
If this call returns 1 then one can save a call of isoburn_read_iso_head()
|
||||
with return mode 1 which could cause an expensive read operation.
|
||||
@since 0.4.0
|
||||
@param t The track handle
|
||||
@param start_lba Returns the start address of the ISO session
|
||||
@param image_blocks Returns the number of 2048 bytes blocks
|
||||
@param volid Caller provided memory for the volume id
|
||||
@param flag unused yet, submit 0
|
||||
@return 0= not an emulated ISO session , 1= reply is valid
|
||||
*/
|
||||
int isoburn_toc_track_get_emul(struct isoburn_toc_track *t, int *start_lba,
|
||||
int *image_blocks, char volid[33], int flag);
|
||||
|
||||
|
||||
|
||||
/** Release the memory associated with a master handle of media.
|
||||
The handle is invalid afterwards and may not be used any more.
|
||||
Wrapper for: burn_disc_free()
|
||||
@ -580,7 +623,7 @@ void isoburn_toc_disc_free(struct isoburn_toc_disc *disc);
|
||||
image header and obtain its alleged size. Depending on the info mode
|
||||
one other string of text information can be retrieved too.
|
||||
@since 0.1.6
|
||||
@param drive The drive with the media to inspect
|
||||
@param d The drive with the media to inspect
|
||||
@param lba The block number from where to read
|
||||
@param image_blocks The number of 2048 bytes blocks
|
||||
@param info Caller provided memory, enough to take eventual info reply
|
||||
@ -593,13 +636,42 @@ void isoburn_toc_disc_free(struct isoburn_toc_disc *disc);
|
||||
do not read head from media but use first 64 kB from info
|
||||
bit14= check both half buffers (not only second)
|
||||
return 2 if found in first block
|
||||
bit15= return-1 on read error
|
||||
bit15= return -1 on read error
|
||||
@return >0 seems to be a valid ISO image, 0 format not recognized, <0 error
|
||||
*/
|
||||
int isoburn_read_iso_head(struct burn_drive *d, int lba,
|
||||
int *image_blocks, char *info, int flag);
|
||||
|
||||
|
||||
/** Try to convert the given entity address into various entity addresses
|
||||
which would describe it.
|
||||
Note: Sessions and tracks are counted beginning with 1, not with 0.
|
||||
@since 0.3.2
|
||||
@param d The drive where msc1 is to be set
|
||||
@param adr_mode Determines how to interpret the input adr_value.
|
||||
If adr_value shall represent a number then decimal ASCII
|
||||
digits are expected.
|
||||
0= start lba of last session in TOC, ignore adr_value
|
||||
1= start lba of session number given by adr_value
|
||||
2= start lba of track given number by adr_value
|
||||
3= adr_value itself is the lba to be used
|
||||
4= start lba of last session with volume id
|
||||
given by adr_value
|
||||
@param adr_value A string describing the value to be eventually used.
|
||||
@param lba returns the block address of the entity, -1 means invalid
|
||||
@param track returns the track number of the entity, -1 means invalid
|
||||
@param session returns the session number of the entity, -1 means invalid
|
||||
@param volid returns the volume id of the entity if it is a ISO session
|
||||
@param flag Bitfield for control purposes.
|
||||
bit2= with adr_mode 4: use adr_value as regular expression
|
||||
@return <=0 error , 1 ok, ISO session, 2 ok, not an ISO session
|
||||
*/
|
||||
int isoburn_get_mount_params(struct burn_drive *d,
|
||||
int adr_mode, char *adr_value,
|
||||
int *lba, int *track, int *session,
|
||||
char volid[33], int flag);
|
||||
|
||||
|
||||
/* ----------------------------------------------------------------------- */
|
||||
/*
|
||||
|
||||
@ -648,6 +720,30 @@ int isoburn_ropt_destroy(struct isoburn_read_opts **o, int flag);
|
||||
tree is used. If you prefer using Joliet, set this to 1.
|
||||
bit4= pretend_blank
|
||||
Always create empty image.Ignore any image on input drive.
|
||||
bit5= noaaip
|
||||
@since 0.3.4
|
||||
Do not load AAIP information from image. This information
|
||||
eventually contains ACL or XFS-style Extended Attributes.
|
||||
bit6= noacl
|
||||
@since 0.3.4
|
||||
Do not obtain ACL from external filesystem objects (e.g.
|
||||
local filesystem files).
|
||||
bit7= noea
|
||||
@since 0.3.4
|
||||
Do not obtain XFS-style Extended Attributes from external
|
||||
filesystem objects (e.g. local filesystem files).
|
||||
bit8= noino
|
||||
@since 0.4.0
|
||||
Do not load eventual inode numbers from RRIP entry PX,
|
||||
but generate a new unique inode number for each imported
|
||||
IsoNode object.
|
||||
PX inode numbers allow to mark families of hardlinks by
|
||||
giving all family members the same inode number. libisofs
|
||||
keeps the PX inode numbers unaltered when IsoNode objects
|
||||
get written into an ISO image.
|
||||
bit9= nomd5
|
||||
@since 0.4.2
|
||||
Do not load the eventual MD5 checksum array.
|
||||
@return 1 success, <=0 failure
|
||||
*/
|
||||
#define isoburn_ropt_norock 1
|
||||
@ -655,6 +751,12 @@ int isoburn_ropt_destroy(struct isoburn_read_opts **o, int flag);
|
||||
#define isoburn_ropt_noiso1999 4
|
||||
#define isoburn_ropt_preferjoliet 8
|
||||
#define isoburn_ropt_pretend_blank 16
|
||||
#define isoburn_ropt_noaaip 32
|
||||
#define isoburn_ropt_noacl 64
|
||||
#define isoburn_ropt_noea 128
|
||||
#define isoburn_ropt_noino 256
|
||||
#define isoburn_ropt_nomd5 512
|
||||
|
||||
int isoburn_ropt_set_extensions(struct isoburn_read_opts *o, int ext);
|
||||
int isoburn_ropt_get_extensions(struct isoburn_read_opts *o, int *ext);
|
||||
|
||||
@ -695,7 +797,7 @@ int isoburn_ropt_get_default_dirperms(struct isoburn_read_opts *o,
|
||||
/** Set the character set for reading RR file names from ISO images.
|
||||
@since 0.1.0
|
||||
@param o The option set to work on
|
||||
@param input_charset Set this to NULL to use the default locale charset.
|
||||
@param input_charset Set this to NULL to use the default locale charset
|
||||
For selecting a particular character set, submit its
|
||||
name, e.g. as listed by program iconv -l.
|
||||
Example: "UTF-8".
|
||||
@ -706,6 +808,20 @@ int isoburn_ropt_set_input_charset(struct isoburn_read_opts *o,
|
||||
int isoburn_ropt_get_input_charset(struct isoburn_read_opts *o,
|
||||
char **input_charset);
|
||||
|
||||
/**
|
||||
Enable or disable methods to automatically choose an input charset.
|
||||
This eventually overrides the name set via isoburn_ropt_set_input_charset()
|
||||
@since 0.3.8
|
||||
@param o The option set to work on
|
||||
@param mode Bitfield for control purposes:
|
||||
bit0= allow to set the input character set automatically from
|
||||
attribute "isofs.cs" of root directory.
|
||||
Submit any other bits with value 0.
|
||||
@return 1 success, <=0 failure
|
||||
*/
|
||||
int isoburn_ropt_set_auto_incharset(struct isoburn_read_opts *o, int mode);
|
||||
int isoburn_ropt_get_auto_incharset(struct isoburn_read_opts *o, int *mode);
|
||||
|
||||
|
||||
/** After calling function isoburn_read_image() there are informations
|
||||
available in the option set.
|
||||
@ -730,6 +846,13 @@ int isoburn_ropt_get_input_charset(struct isoburn_read_opts *o,
|
||||
#define isoburn_ropt_has_joliet 2
|
||||
#define isoburn_ropt_has_iso1999 4
|
||||
#define isoburn_ropt_has_el_torito 8
|
||||
|
||||
/* ts A90122 */
|
||||
/* >>> to be implemented:
|
||||
#define isoburn_ropt_has_acl 64
|
||||
#define isoburn_ropt_has_ea 128
|
||||
*/
|
||||
|
||||
int isoburn_ropt_get_size_what(struct isoburn_read_opts *o,
|
||||
uint32_t *size, int *has_what);
|
||||
|
||||
@ -794,14 +917,41 @@ int isoburn_igopt_get_level(struct isoburn_imgen_opts *o, int *level);
|
||||
advisable if the designed audience has Unix style systems.
|
||||
bit1= joliet
|
||||
Longer filenames for Windows systems.
|
||||
Weaker than RockRidge, but also readable with Linux.
|
||||
Weaker than RockRidge, but also readable with GNU/Linux.
|
||||
bit2= iso1999
|
||||
This is rather exotic. Better do not surprise the readers.
|
||||
bit3= hardlinks
|
||||
Enable hardlink consolidation. IsoNodes which refer to the
|
||||
same source object and have the same properties will get
|
||||
the same ISO image inode numbers.
|
||||
If combined with isoburn_igopt_rrip_version_1_10 below,
|
||||
then the PX entry layout of RRIP-1.12 will be used within
|
||||
RRIP-1.10 (mkisofs does this without causing visible trouble).
|
||||
bit5= aaip
|
||||
The libisofs specific SUSP based extension of ECMA-119 which
|
||||
can encode ACL and XFS-style Extended Attributes.
|
||||
bit6= session_md5
|
||||
@since 0.4.2
|
||||
Produce and write a MD5 checksum of the whole session stream.
|
||||
bit7= file_md5
|
||||
@since 0.4.2
|
||||
Produce and write MD5 checksums for each single IsoFile.
|
||||
bit8= file_stability (only together with file_md5)
|
||||
@since 0.4.2
|
||||
Compute MD5 of each file before copying it into the image and
|
||||
compare this with the MD5 of the actual copying. If they do
|
||||
not match then issue MISHAP event.
|
||||
See also libisofs.h iso_write_opts_set_record_md5()
|
||||
@return 1 success, <=0 failure
|
||||
*/
|
||||
#define isoburn_igopt_rockridge 1
|
||||
#define isoburn_igopt_joliet 2
|
||||
#define isoburn_igopt_iso1999 4
|
||||
#define isoburn_igopt_rockridge 1
|
||||
#define isoburn_igopt_joliet 2
|
||||
#define isoburn_igopt_iso1999 4
|
||||
#define isoburn_igopt_hardlinks 8
|
||||
#define isoburn_igopt_aaip 32
|
||||
#define isoburn_igopt_session_md5 64
|
||||
#define isoburn_igopt_file_md5 128
|
||||
#define isoburn_igopt_file_stability 256
|
||||
int isoburn_igopt_set_extensions(struct isoburn_imgen_opts *o, int ext);
|
||||
int isoburn_igopt_get_extensions(struct isoburn_imgen_opts *o, int *ext);
|
||||
|
||||
@ -842,6 +992,27 @@ int isoburn_igopt_get_extensions(struct isoburn_imgen_opts *o, int *ext);
|
||||
bit7= joliet_longer_paths
|
||||
Allow paths in the Joliet tree to have more than
|
||||
240 characters.
|
||||
bit8= always_gmt
|
||||
Write timestamps as GMT although the specs prescribe local
|
||||
time with eventual non-zero timezone offset. Negative
|
||||
timezones (west of GMT) can trigger bugs in some operating
|
||||
systems which typically appear in mounted ISO images as if
|
||||
the timezone shift from GMT was applied twice
|
||||
(e.g. in New York 22:36 becomes 17:36).
|
||||
bit9= rrip_version_1_10
|
||||
Write Rock Ridge info as of specification RRIP-1.10 rather
|
||||
than RRIP-1.12: signature "RRIP_1991A" rather than
|
||||
"IEEE_1282", field PX without file serial number.
|
||||
bit10= dir_rec_mtime
|
||||
Store as ECMA-119 Directory Record timestamp the mtime
|
||||
of the source rather than the image creation time.
|
||||
bit11= aaip_susp_1_10
|
||||
Write AAIP fields without announcing AAIP by an ER field and
|
||||
without distinguishing RRIP fields from the AAIP field by
|
||||
prefixed ES fields. This saves 5 to 10 bytes per file and
|
||||
might avoid problems with readers which only accept RRIP.
|
||||
SUSP-1.10 allows it, SUSP-1.12 frowns on it.
|
||||
|
||||
@return 1 success, <=0 failure
|
||||
*/
|
||||
#define isoburn_igopt_omit_version_numbers 1
|
||||
@ -852,6 +1023,10 @@ int isoburn_igopt_get_extensions(struct isoburn_imgen_opts *o, int *ext);
|
||||
#define isoburn_igopt_allow_lowercase 32
|
||||
#define isoburn_igopt_allow_full_ascii 64
|
||||
#define isoburn_igopt_joliet_longer_paths 128
|
||||
#define isoburn_igopt_always_gmt 256
|
||||
#define isoburn_igopt_rrip_version_1_10 512
|
||||
#define isoburn_igopt_dir_rec_mtime 1024
|
||||
#define isoburn_igopt_aaip_susp_1_10 2048
|
||||
int isoburn_igopt_set_relaxed(struct isoburn_imgen_opts *o, int relax);
|
||||
int isoburn_igopt_get_relaxed(struct isoburn_imgen_opts *o, int *relax);
|
||||
|
||||
@ -954,6 +1129,44 @@ int isoburn_igopt_get_fifo_size(struct isoburn_imgen_opts *o, int *fifo_size);
|
||||
int isoburn_igopt_get_effective_lba(struct isoburn_imgen_opts *o, int *lba);
|
||||
|
||||
|
||||
/** Obtain after image preparation the lowest block address of file content
|
||||
data. Failure can occur if libisofs is too old to provide this information,
|
||||
if the result exceeds 31 bit, or if the call is made before image
|
||||
preparation.
|
||||
This value cannot be set by the application but only be inquired.
|
||||
@since 0.3.6
|
||||
@param o The option set to work on
|
||||
@param lba The block number of the session start on media.
|
||||
<0 means that no address has been determined yet.
|
||||
@return 1 success, <=0 failure
|
||||
*/
|
||||
int isoburn_igopt_get_data_start(struct isoburn_imgen_opts *o, int *lba);
|
||||
|
||||
|
||||
/** Set resp. get parameters "name" and "timestamp" for a scdbackup checksum
|
||||
tag. It will be appended to the libisofs session tag if the image starts at
|
||||
LBA 0. See isoburn_disc_track_lba_nwa. The scdbackup tag can be used
|
||||
to verify the image by command scdbackup_verify <device> -auto_end.
|
||||
See scdbackup/README appendix VERIFY for its inner details.
|
||||
@since 0.4.4
|
||||
@param o The option set to work on
|
||||
@param name The tag name. 80 characters max.
|
||||
@param timestamp A string of up to 13 characters YYMMDD.hhmmss
|
||||
A9 = 2009, B0 = 2010, B1 = 2011, ... C0 = 2020, ...
|
||||
@param tag_written Either NULL or the address of an array with at least 512
|
||||
characters. In the latter case the eventually produced
|
||||
scdbackup tag will be copied to this array when the image
|
||||
gets written. This call sets scdbackup_tag_written[0] = 0
|
||||
to mark its preliminary invalidity.
|
||||
@return 1 success, <=0 failure
|
||||
*/
|
||||
int isoburn_igopt_set_scdbackup_tag(struct isoburn_imgen_opts *o, char *name,
|
||||
char *timestamp, char *tag_written);
|
||||
int isoburn_igopt_get_scdbackup_tag(struct isoburn_imgen_opts *o,
|
||||
char name[81], char timestamp[19],
|
||||
char **tag_written);
|
||||
|
||||
|
||||
/* ----------------------------------------------------------------------- */
|
||||
/* End of Options for image generation */
|
||||
/* ----------------------------------------------------------------------- */
|
||||
@ -1088,7 +1301,7 @@ int isoburn_disc_track_lba_nwa(struct burn_drive *d, struct burn_write_opts *o,
|
||||
overwriteable media. This value is supposed to be <= 2048 * nwa as of
|
||||
isoburn_disc_track_lba_nwa().
|
||||
@since 0.1.0
|
||||
@param drive The drive holding the media.
|
||||
@param d The drive holding the media.
|
||||
@param start_byte The reply value counted in bytes, not in sectors.
|
||||
@param flag Unused yet. Submit 0.
|
||||
@return 1=stat_byte is valid, 0=not an emulated appendable, -1=error
|
||||
@ -1178,9 +1391,10 @@ int isoburn_prepare_new_image(struct burn_drive *in_drive,
|
||||
the in_drive media.
|
||||
@return <=0 error , 1 = success
|
||||
*/
|
||||
int isoburn_prepare_blind_grow(struct burn_drive *d, struct burn_disc **disc,
|
||||
struct isoburn_imgen_opts *opts,
|
||||
struct burn_drive *out_drive, int nwa);
|
||||
int isoburn_prepare_blind_grow(struct burn_drive *in_drive,
|
||||
struct burn_disc **disc,
|
||||
struct isoburn_imgen_opts *opts,
|
||||
struct burn_drive *out_drive, int nwa);
|
||||
|
||||
|
||||
/**
|
||||
@ -1225,7 +1439,7 @@ void isoburn_disc_write(struct burn_write_opts *o, struct burn_disc *disc);
|
||||
Hint: If only burn_write_opts and not burn_drive is known, then the drive
|
||||
can be obtained by burn_write_opts_get_drive().
|
||||
@since 0.1.0
|
||||
@parm d The drive to which the track with the fifo gets burned.
|
||||
@param d The drive to which the track with the fifo gets burned.
|
||||
@param size The total size of the fifo
|
||||
@param free_bytes The current free capacity of the fifo
|
||||
@param status_text Returns a pointer to a constant text, see below
|
||||
@ -1261,7 +1475,7 @@ int isoburn_drive_wrote_well(struct burn_drive *d);
|
||||
@param d The output drive to which the session was written
|
||||
@return 1 success , <=0 failure
|
||||
*/
|
||||
int isoburn_activate_session(struct burn_drive *drive);
|
||||
int isoburn_activate_session(struct burn_drive *d);
|
||||
|
||||
|
||||
/** Wait after normal end of operations until libisofs ended all write
|
||||
@ -1310,6 +1524,6 @@ void isoburn_finish(void);
|
||||
1 is emulated multi-session
|
||||
-1 is not suitable for isoburn
|
||||
*/
|
||||
int isoburn_needs_emulation(struct burn_drive *drive);
|
||||
int isoburn_needs_emulation(struct burn_drive *d);
|
||||
|
||||
|
||||
|
@ -5,9 +5,9 @@
|
||||
To compare tree /media/dvd and /original/dir :
|
||||
find /media/dvd -exec compare_file '{}' /media/dvd /original/dir ';'
|
||||
|
||||
Copyright 2008 Thomas Schmitt, <scdbackup@gmx.net>
|
||||
Copyright 2008 - 2010 Thomas Schmitt, <scdbackup@gmx.net>
|
||||
|
||||
Provided under GPL version 2.
|
||||
Provided under GPL version 2 or later.
|
||||
|
||||
|
||||
cc -g -o compare_file compare_file.c
|
||||
@ -117,7 +117,9 @@ int Compare_2_files(char *adr1, char *adr2, char *adrc, int flag)
|
||||
/* Attributes */
|
||||
if(s1.st_mode != s2.st_mode) {
|
||||
if((s1.st_mode&~S_IFMT)!=(s2.st_mode&~S_IFMT))
|
||||
printf("%s : st_mode : %7.7o <> %7.7o\n", a, s1.st_mode, s2.st_mode);
|
||||
printf("%s : st_mode : %7.7o <> %7.7o\n", a,
|
||||
(unsigned int) (s1.st_mode & ~S_IFMT),
|
||||
(unsigned int) (s2.st_mode & ~S_IFMT));
|
||||
if((s1.st_mode&S_IFMT)!=(s2.st_mode&S_IFMT))
|
||||
printf("%s : type : %s <> %s\n",
|
||||
a, Ftypetxt(s1.st_mode, 0), Ftypetxt(s2.st_mode, 0));
|
||||
|
6
xorriso/AUTHORS_gnu_xorriso
Normal file
6
xorriso/AUTHORS_gnu_xorriso
Normal file
@ -0,0 +1,6 @@
|
||||
Derek Foreman
|
||||
Ben Jansens
|
||||
Thomas Schmitt
|
||||
Mario Danic
|
||||
Vreixo Formoso Lopes
|
||||
|
674
xorriso/COPYING_gnu_xorriso
Normal file
674
xorriso/COPYING_gnu_xorriso
Normal file
@ -0,0 +1,674 @@
|
||||
GNU GENERAL PUBLIC LICENSE
|
||||
Version 3, 29 June 2007
|
||||
|
||||
Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
|
||||
Everyone is permitted to copy and distribute verbatim copies
|
||||
of this license document, but changing it is not allowed.
|
||||
|
||||
Preamble
|
||||
|
||||
The GNU General Public License is a free, copyleft license for
|
||||
software and other kinds of works.
|
||||
|
||||
The licenses for most software and other practical works are designed
|
||||
to take away your freedom to share and change the works. By contrast,
|
||||
the GNU General Public License is intended to guarantee your freedom to
|
||||
share and change all versions of a program--to make sure it remains free
|
||||
software for all its users. We, the Free Software Foundation, use the
|
||||
GNU General Public License for most of our software; it applies also to
|
||||
any other work released this way by its authors. You can apply it to
|
||||
your programs, too.
|
||||
|
||||
When we speak of free software, we are referring to freedom, not
|
||||
price. Our General Public Licenses are designed to make sure that you
|
||||
have the freedom to distribute copies of free software (and charge for
|
||||
them if you wish), that you receive source code or can get it if you
|
||||
want it, that you can change the software or use pieces of it in new
|
||||
free programs, and that you know you can do these things.
|
||||
|
||||
To protect your rights, we need to prevent others from denying you
|
||||
these rights or asking you to surrender the rights. Therefore, you have
|
||||
certain responsibilities if you distribute copies of the software, or if
|
||||
you modify it: responsibilities to respect the freedom of others.
|
||||
|
||||
For example, if you distribute copies of such a program, whether
|
||||
gratis or for a fee, you must pass on to the recipients the same
|
||||
freedoms that you received. You must make sure that they, too, receive
|
||||
or can get the source code. And you must show them these terms so they
|
||||
know their rights.
|
||||
|
||||
Developers that use the GNU GPL protect your rights with two steps:
|
||||
(1) assert copyright on the software, and (2) offer you this License
|
||||
giving you legal permission to copy, distribute and/or modify it.
|
||||
|
||||
For the developers' and authors' protection, the GPL clearly explains
|
||||
that there is no warranty for this free software. For both users' and
|
||||
authors' sake, the GPL requires that modified versions be marked as
|
||||
changed, so that their problems will not be attributed erroneously to
|
||||
authors of previous versions.
|
||||
|
||||
Some devices are designed to deny users access to install or run
|
||||
modified versions of the software inside them, although the manufacturer
|
||||
can do so. This is fundamentally incompatible with the aim of
|
||||
protecting users' freedom to change the software. The systematic
|
||||
pattern of such abuse occurs in the area of products for individuals to
|
||||
use, which is precisely where it is most unacceptable. Therefore, we
|
||||
have designed this version of the GPL to prohibit the practice for those
|
||||
products. If such problems arise substantially in other domains, we
|
||||
stand ready to extend this provision to those domains in future versions
|
||||
of the GPL, as needed to protect the freedom of users.
|
||||
|
||||
Finally, every program is threatened constantly by software patents.
|
||||
States should not allow patents to restrict development and use of
|
||||
software on general-purpose computers, but in those that do, we wish to
|
||||
avoid the special danger that patents applied to a free program could
|
||||
make it effectively proprietary. To prevent this, the GPL assures that
|
||||
patents cannot be used to render the program non-free.
|
||||
|
||||
The precise terms and conditions for copying, distribution and
|
||||
modification follow.
|
||||
|
||||
TERMS AND CONDITIONS
|
||||
|
||||
0. Definitions.
|
||||
|
||||
"This License" refers to version 3 of the GNU General Public License.
|
||||
|
||||
"Copyright" also means copyright-like laws that apply to other kinds of
|
||||
works, such as semiconductor masks.
|
||||
|
||||
"The Program" refers to any copyrightable work licensed under this
|
||||
License. Each licensee is addressed as "you". "Licensees" and
|
||||
"recipients" may be individuals or organizations.
|
||||
|
||||
To "modify" a work means to copy from or adapt all or part of the work
|
||||
in a fashion requiring copyright permission, other than the making of an
|
||||
exact copy. The resulting work is called a "modified version" of the
|
||||
earlier work or a work "based on" the earlier work.
|
||||
|
||||
A "covered work" means either the unmodified Program or a work based
|
||||
on the Program.
|
||||
|
||||
To "propagate" a work means to do anything with it that, without
|
||||
permission, would make you directly or secondarily liable for
|
||||
infringement under applicable copyright law, except executing it on a
|
||||
computer or modifying a private copy. Propagation includes copying,
|
||||
distribution (with or without modification), making available to the
|
||||
public, and in some countries other activities as well.
|
||||
|
||||
To "convey" a work means any kind of propagation that enables other
|
||||
parties to make or receive copies. Mere interaction with a user through
|
||||
a computer network, with no transfer of a copy, is not conveying.
|
||||
|
||||
An interactive user interface displays "Appropriate Legal Notices"
|
||||
to the extent that it includes a convenient and prominently visible
|
||||
feature that (1) displays an appropriate copyright notice, and (2)
|
||||
tells the user that there is no warranty for the work (except to the
|
||||
extent that warranties are provided), that licensees may convey the
|
||||
work under this License, and how to view a copy of this License. If
|
||||
the interface presents a list of user commands or options, such as a
|
||||
menu, a prominent item in the list meets this criterion.
|
||||
|
||||
1. Source Code.
|
||||
|
||||
The "source code" for a work means the preferred form of the work
|
||||
for making modifications to it. "Object code" means any non-source
|
||||
form of a work.
|
||||
|
||||
A "Standard Interface" means an interface that either is an official
|
||||
standard defined by a recognized standards body, or, in the case of
|
||||
interfaces specified for a particular programming language, one that
|
||||
is widely used among developers working in that language.
|
||||
|
||||
The "System Libraries" of an executable work include anything, other
|
||||
than the work as a whole, that (a) is included in the normal form of
|
||||
packaging a Major Component, but which is not part of that Major
|
||||
Component, and (b) serves only to enable use of the work with that
|
||||
Major Component, or to implement a Standard Interface for which an
|
||||
implementation is available to the public in source code form. A
|
||||
"Major Component", in this context, means a major essential component
|
||||
(kernel, window system, and so on) of the specific operating system
|
||||
(if any) on which the executable work runs, or a compiler used to
|
||||
produce the work, or an object code interpreter used to run it.
|
||||
|
||||
The "Corresponding Source" for a work in object code form means all
|
||||
the source code needed to generate, install, and (for an executable
|
||||
work) run the object code and to modify the work, including scripts to
|
||||
control those activities. However, it does not include the work's
|
||||
System Libraries, or general-purpose tools or generally available free
|
||||
programs which are used unmodified in performing those activities but
|
||||
which are not part of the work. For example, Corresponding Source
|
||||
includes interface definition files associated with source files for
|
||||
the work, and the source code for shared libraries and dynamically
|
||||
linked subprograms that the work is specifically designed to require,
|
||||
such as by intimate data communication or control flow between those
|
||||
subprograms and other parts of the work.
|
||||
|
||||
The Corresponding Source need not include anything that users
|
||||
can regenerate automatically from other parts of the Corresponding
|
||||
Source.
|
||||
|
||||
The Corresponding Source for a work in source code form is that
|
||||
same work.
|
||||
|
||||
2. Basic Permissions.
|
||||
|
||||
All rights granted under this License are granted for the term of
|
||||
copyright on the Program, and are irrevocable provided the stated
|
||||
conditions are met. This License explicitly affirms your unlimited
|
||||
permission to run the unmodified Program. The output from running a
|
||||
covered work is covered by this License only if the output, given its
|
||||
content, constitutes a covered work. This License acknowledges your
|
||||
rights of fair use or other equivalent, as provided by copyright law.
|
||||
|
||||
You may make, run and propagate covered works that you do not
|
||||
convey, without conditions so long as your license otherwise remains
|
||||
in force. You may convey covered works to others for the sole purpose
|
||||
of having them make modifications exclusively for you, or provide you
|
||||
with facilities for running those works, provided that you comply with
|
||||
the terms of this License in conveying all material for which you do
|
||||
not control copyright. Those thus making or running the covered works
|
||||
for you must do so exclusively on your behalf, under your direction
|
||||
and control, on terms that prohibit them from making any copies of
|
||||
your copyrighted material outside their relationship with you.
|
||||
|
||||
Conveying under any other circumstances is permitted solely under
|
||||
the conditions stated below. Sublicensing is not allowed; section 10
|
||||
makes it unnecessary.
|
||||
|
||||
3. Protecting Users' Legal Rights From Anti-Circumvention Law.
|
||||
|
||||
No covered work shall be deemed part of an effective technological
|
||||
measure under any applicable law fulfilling obligations under article
|
||||
11 of the WIPO copyright treaty adopted on 20 December 1996, or
|
||||
similar laws prohibiting or restricting circumvention of such
|
||||
measures.
|
||||
|
||||
When you convey a covered work, you waive any legal power to forbid
|
||||
circumvention of technological measures to the extent such circumvention
|
||||
is effected by exercising rights under this License with respect to
|
||||
the covered work, and you disclaim any intention to limit operation or
|
||||
modification of the work as a means of enforcing, against the work's
|
||||
users, your or third parties' legal rights to forbid circumvention of
|
||||
technological measures.
|
||||
|
||||
4. Conveying Verbatim Copies.
|
||||
|
||||
You may convey verbatim copies of the Program's source code as you
|
||||
receive it, in any medium, provided that you conspicuously and
|
||||
appropriately publish on each copy an appropriate copyright notice;
|
||||
keep intact all notices stating that this License and any
|
||||
non-permissive terms added in accord with section 7 apply to the code;
|
||||
keep intact all notices of the absence of any warranty; and give all
|
||||
recipients a copy of this License along with the Program.
|
||||
|
||||
You may charge any price or no price for each copy that you convey,
|
||||
and you may offer support or warranty protection for a fee.
|
||||
|
||||
5. Conveying Modified Source Versions.
|
||||
|
||||
You may convey a work based on the Program, or the modifications to
|
||||
produce it from the Program, in the form of source code under the
|
||||
terms of section 4, provided that you also meet all of these conditions:
|
||||
|
||||
a) The work must carry prominent notices stating that you modified
|
||||
it, and giving a relevant date.
|
||||
|
||||
b) The work must carry prominent notices stating that it is
|
||||
released under this License and any conditions added under section
|
||||
7. This requirement modifies the requirement in section 4 to
|
||||
"keep intact all notices".
|
||||
|
||||
c) You must license the entire work, as a whole, under this
|
||||
License to anyone who comes into possession of a copy. This
|
||||
License will therefore apply, along with any applicable section 7
|
||||
additional terms, to the whole of the work, and all its parts,
|
||||
regardless of how they are packaged. This License gives no
|
||||
permission to license the work in any other way, but it does not
|
||||
invalidate such permission if you have separately received it.
|
||||
|
||||
d) If the work has interactive user interfaces, each must display
|
||||
Appropriate Legal Notices; however, if the Program has interactive
|
||||
interfaces that do not display Appropriate Legal Notices, your
|
||||
work need not make them do so.
|
||||
|
||||
A compilation of a covered work with other separate and independent
|
||||
works, which are not by their nature extensions of the covered work,
|
||||
and which are not combined with it such as to form a larger program,
|
||||
in or on a volume of a storage or distribution medium, is called an
|
||||
"aggregate" if the compilation and its resulting copyright are not
|
||||
used to limit the access or legal rights of the compilation's users
|
||||
beyond what the individual works permit. Inclusion of a covered work
|
||||
in an aggregate does not cause this License to apply to the other
|
||||
parts of the aggregate.
|
||||
|
||||
6. Conveying Non-Source Forms.
|
||||
|
||||
You may convey a covered work in object code form under the terms
|
||||
of sections 4 and 5, provided that you also convey the
|
||||
machine-readable Corresponding Source under the terms of this License,
|
||||
in one of these ways:
|
||||
|
||||
a) Convey the object code in, or embodied in, a physical product
|
||||
(including a physical distribution medium), accompanied by the
|
||||
Corresponding Source fixed on a durable physical medium
|
||||
customarily used for software interchange.
|
||||
|
||||
b) Convey the object code in, or embodied in, a physical product
|
||||
(including a physical distribution medium), accompanied by a
|
||||
written offer, valid for at least three years and valid for as
|
||||
long as you offer spare parts or customer support for that product
|
||||
model, to give anyone who possesses the object code either (1) a
|
||||
copy of the Corresponding Source for all the software in the
|
||||
product that is covered by this License, on a durable physical
|
||||
medium customarily used for software interchange, for a price no
|
||||
more than your reasonable cost of physically performing this
|
||||
conveying of source, or (2) access to copy the
|
||||
Corresponding Source from a network server at no charge.
|
||||
|
||||
c) Convey individual copies of the object code with a copy of the
|
||||
written offer to provide the Corresponding Source. This
|
||||
alternative is allowed only occasionally and noncommercially, and
|
||||
only if you received the object code with such an offer, in accord
|
||||
with subsection 6b.
|
||||
|
||||
d) Convey the object code by offering access from a designated
|
||||
place (gratis or for a charge), and offer equivalent access to the
|
||||
Corresponding Source in the same way through the same place at no
|
||||
further charge. You need not require recipients to copy the
|
||||
Corresponding Source along with the object code. If the place to
|
||||
copy the object code is a network server, the Corresponding Source
|
||||
may be on a different server (operated by you or a third party)
|
||||
that supports equivalent copying facilities, provided you maintain
|
||||
clear directions next to the object code saying where to find the
|
||||
Corresponding Source. Regardless of what server hosts the
|
||||
Corresponding Source, you remain obligated to ensure that it is
|
||||
available for as long as needed to satisfy these requirements.
|
||||
|
||||
e) Convey the object code using peer-to-peer transmission, provided
|
||||
you inform other peers where the object code and Corresponding
|
||||
Source of the work are being offered to the general public at no
|
||||
charge under subsection 6d.
|
||||
|
||||
A separable portion of the object code, whose source code is excluded
|
||||
from the Corresponding Source as a System Library, need not be
|
||||
included in conveying the object code work.
|
||||
|
||||
A "User Product" is either (1) a "consumer product", which means any
|
||||
tangible personal property which is normally used for personal, family,
|
||||
or household purposes, or (2) anything designed or sold for incorporation
|
||||
into a dwelling. In determining whether a product is a consumer product,
|
||||
doubtful cases shall be resolved in favor of coverage. For a particular
|
||||
product received by a particular user, "normally used" refers to a
|
||||
typical or common use of that class of product, regardless of the status
|
||||
of the particular user or of the way in which the particular user
|
||||
actually uses, or expects or is expected to use, the product. A product
|
||||
is a consumer product regardless of whether the product has substantial
|
||||
commercial, industrial or non-consumer uses, unless such uses represent
|
||||
the only significant mode of use of the product.
|
||||
|
||||
"Installation Information" for a User Product means any methods,
|
||||
procedures, authorization keys, or other information required to install
|
||||
and execute modified versions of a covered work in that User Product from
|
||||
a modified version of its Corresponding Source. The information must
|
||||
suffice to ensure that the continued functioning of the modified object
|
||||
code is in no case prevented or interfered with solely because
|
||||
modification has been made.
|
||||
|
||||
If you convey an object code work under this section in, or with, or
|
||||
specifically for use in, a User Product, and the conveying occurs as
|
||||
part of a transaction in which the right of possession and use of the
|
||||
User Product is transferred to the recipient in perpetuity or for a
|
||||
fixed term (regardless of how the transaction is characterized), the
|
||||
Corresponding Source conveyed under this section must be accompanied
|
||||
by the Installation Information. But this requirement does not apply
|
||||
if neither you nor any third party retains the ability to install
|
||||
modified object code on the User Product (for example, the work has
|
||||
been installed in ROM).
|
||||
|
||||
The requirement to provide Installation Information does not include a
|
||||
requirement to continue to provide support service, warranty, or updates
|
||||
for a work that has been modified or installed by the recipient, or for
|
||||
the User Product in which it has been modified or installed. Access to a
|
||||
network may be denied when the modification itself materially and
|
||||
adversely affects the operation of the network or violates the rules and
|
||||
protocols for communication across the network.
|
||||
|
||||
Corresponding Source conveyed, and Installation Information provided,
|
||||
in accord with this section must be in a format that is publicly
|
||||
documented (and with an implementation available to the public in
|
||||
source code form), and must require no special password or key for
|
||||
unpacking, reading or copying.
|
||||
|
||||
7. Additional Terms.
|
||||
|
||||
"Additional permissions" are terms that supplement the terms of this
|
||||
License by making exceptions from one or more of its conditions.
|
||||
Additional permissions that are applicable to the entire Program shall
|
||||
be treated as though they were included in this License, to the extent
|
||||
that they are valid under applicable law. If additional permissions
|
||||
apply only to part of the Program, that part may be used separately
|
||||
under those permissions, but the entire Program remains governed by
|
||||
this License without regard to the additional permissions.
|
||||
|
||||
When you convey a copy of a covered work, you may at your option
|
||||
remove any additional permissions from that copy, or from any part of
|
||||
it. (Additional permissions may be written to require their own
|
||||
removal in certain cases when you modify the work.) You may place
|
||||
additional permissions on material, added by you to a covered work,
|
||||
for which you have or can give appropriate copyright permission.
|
||||
|
||||
Notwithstanding any other provision of this License, for material you
|
||||
add to a covered work, you may (if authorized by the copyright holders of
|
||||
that material) supplement the terms of this License with terms:
|
||||
|
||||
a) Disclaiming warranty or limiting liability differently from the
|
||||
terms of sections 15 and 16 of this License; or
|
||||
|
||||
b) Requiring preservation of specified reasonable legal notices or
|
||||
author attributions in that material or in the Appropriate Legal
|
||||
Notices displayed by works containing it; or
|
||||
|
||||
c) Prohibiting misrepresentation of the origin of that material, or
|
||||
requiring that modified versions of such material be marked in
|
||||
reasonable ways as different from the original version; or
|
||||
|
||||
d) Limiting the use for publicity purposes of names of licensors or
|
||||
authors of the material; or
|
||||
|
||||
e) Declining to grant rights under trademark law for use of some
|
||||
trade names, trademarks, or service marks; or
|
||||
|
||||
f) Requiring indemnification of licensors and authors of that
|
||||
material by anyone who conveys the material (or modified versions of
|
||||
it) with contractual assumptions of liability to the recipient, for
|
||||
any liability that these contractual assumptions directly impose on
|
||||
those licensors and authors.
|
||||
|
||||
All other non-permissive additional terms are considered "further
|
||||
restrictions" within the meaning of section 10. If the Program as you
|
||||
received it, or any part of it, contains a notice stating that it is
|
||||
governed by this License along with a term that is a further
|
||||
restriction, you may remove that term. If a license document contains
|
||||
a further restriction but permits relicensing or conveying under this
|
||||
License, you may add to a covered work material governed by the terms
|
||||
of that license document, provided that the further restriction does
|
||||
not survive such relicensing or conveying.
|
||||
|
||||
If you add terms to a covered work in accord with this section, you
|
||||
must place, in the relevant source files, a statement of the
|
||||
additional terms that apply to those files, or a notice indicating
|
||||
where to find the applicable terms.
|
||||
|
||||
Additional terms, permissive or non-permissive, may be stated in the
|
||||
form of a separately written license, or stated as exceptions;
|
||||
the above requirements apply either way.
|
||||
|
||||
8. Termination.
|
||||
|
||||
You may not propagate or modify a covered work except as expressly
|
||||
provided under this License. Any attempt otherwise to propagate or
|
||||
modify it is void, and will automatically terminate your rights under
|
||||
this License (including any patent licenses granted under the third
|
||||
paragraph of section 11).
|
||||
|
||||
However, if you cease all violation of this License, then your
|
||||
license from a particular copyright holder is reinstated (a)
|
||||
provisionally, unless and until the copyright holder explicitly and
|
||||
finally terminates your license, and (b) permanently, if the copyright
|
||||
holder fails to notify you of the violation by some reasonable means
|
||||
prior to 60 days after the cessation.
|
||||
|
||||
Moreover, your license from a particular copyright holder is
|
||||
reinstated permanently if the copyright holder notifies you of the
|
||||
violation by some reasonable means, this is the first time you have
|
||||
received notice of violation of this License (for any work) from that
|
||||
copyright holder, and you cure the violation prior to 30 days after
|
||||
your receipt of the notice.
|
||||
|
||||
Termination of your rights under this section does not terminate the
|
||||
licenses of parties who have received copies or rights from you under
|
||||
this License. If your rights have been terminated and not permanently
|
||||
reinstated, you do not qualify to receive new licenses for the same
|
||||
material under section 10.
|
||||
|
||||
9. Acceptance Not Required for Having Copies.
|
||||
|
||||
You are not required to accept this License in order to receive or
|
||||
run a copy of the Program. Ancillary propagation of a covered work
|
||||
occurring solely as a consequence of using peer-to-peer transmission
|
||||
to receive a copy likewise does not require acceptance. However,
|
||||
nothing other than this License grants you permission to propagate or
|
||||
modify any covered work. These actions infringe copyright if you do
|
||||
not accept this License. Therefore, by modifying or propagating a
|
||||
covered work, you indicate your acceptance of this License to do so.
|
||||
|
||||
10. Automatic Licensing of Downstream Recipients.
|
||||
|
||||
Each time you convey a covered work, the recipient automatically
|
||||
receives a license from the original licensors, to run, modify and
|
||||
propagate that work, subject to this License. You are not responsible
|
||||
for enforcing compliance by third parties with this License.
|
||||
|
||||
An "entity transaction" is a transaction transferring control of an
|
||||
organization, or substantially all assets of one, or subdividing an
|
||||
organization, or merging organizations. If propagation of a covered
|
||||
work results from an entity transaction, each party to that
|
||||
transaction who receives a copy of the work also receives whatever
|
||||
licenses to the work the party's predecessor in interest had or could
|
||||
give under the previous paragraph, plus a right to possession of the
|
||||
Corresponding Source of the work from the predecessor in interest, if
|
||||
the predecessor has it or can get it with reasonable efforts.
|
||||
|
||||
You may not impose any further restrictions on the exercise of the
|
||||
rights granted or affirmed under this License. For example, you may
|
||||
not impose a license fee, royalty, or other charge for exercise of
|
||||
rights granted under this License, and you may not initiate litigation
|
||||
(including a cross-claim or counterclaim in a lawsuit) alleging that
|
||||
any patent claim is infringed by making, using, selling, offering for
|
||||
sale, or importing the Program or any portion of it.
|
||||
|
||||
11. Patents.
|
||||
|
||||
A "contributor" is a copyright holder who authorizes use under this
|
||||
License of the Program or a work on which the Program is based. The
|
||||
work thus licensed is called the contributor's "contributor version".
|
||||
|
||||
A contributor's "essential patent claims" are all patent claims
|
||||
owned or controlled by the contributor, whether already acquired or
|
||||
hereafter acquired, that would be infringed by some manner, permitted
|
||||
by this License, of making, using, or selling its contributor version,
|
||||
but do not include claims that would be infringed only as a
|
||||
consequence of further modification of the contributor version. For
|
||||
purposes of this definition, "control" includes the right to grant
|
||||
patent sublicenses in a manner consistent with the requirements of
|
||||
this License.
|
||||
|
||||
Each contributor grants you a non-exclusive, worldwide, royalty-free
|
||||
patent license under the contributor's essential patent claims, to
|
||||
make, use, sell, offer for sale, import and otherwise run, modify and
|
||||
propagate the contents of its contributor version.
|
||||
|
||||
In the following three paragraphs, a "patent license" is any express
|
||||
agreement or commitment, however denominated, not to enforce a patent
|
||||
(such as an express permission to practice a patent or covenant not to
|
||||
sue for patent infringement). To "grant" such a patent license to a
|
||||
party means to make such an agreement or commitment not to enforce a
|
||||
patent against the party.
|
||||
|
||||
If you convey a covered work, knowingly relying on a patent license,
|
||||
and the Corresponding Source of the work is not available for anyone
|
||||
to copy, free of charge and under the terms of this License, through a
|
||||
publicly available network server or other readily accessible means,
|
||||
then you must either (1) cause the Corresponding Source to be so
|
||||
available, or (2) arrange to deprive yourself of the benefit of the
|
||||
patent license for this particular work, or (3) arrange, in a manner
|
||||
consistent with the requirements of this License, to extend the patent
|
||||
license to downstream recipients. "Knowingly relying" means you have
|
||||
actual knowledge that, but for the patent license, your conveying the
|
||||
covered work in a country, or your recipient's use of the covered work
|
||||
in a country, would infringe one or more identifiable patents in that
|
||||
country that you have reason to believe are valid.
|
||||
|
||||
If, pursuant to or in connection with a single transaction or
|
||||
arrangement, you convey, or propagate by procuring conveyance of, a
|
||||
covered work, and grant a patent license to some of the parties
|
||||
receiving the covered work authorizing them to use, propagate, modify
|
||||
or convey a specific copy of the covered work, then the patent license
|
||||
you grant is automatically extended to all recipients of the covered
|
||||
work and works based on it.
|
||||
|
||||
A patent license is "discriminatory" if it does not include within
|
||||
the scope of its coverage, prohibits the exercise of, or is
|
||||
conditioned on the non-exercise of one or more of the rights that are
|
||||
specifically granted under this License. You may not convey a covered
|
||||
work if you are a party to an arrangement with a third party that is
|
||||
in the business of distributing software, under which you make payment
|
||||
to the third party based on the extent of your activity of conveying
|
||||
the work, and under which the third party grants, to any of the
|
||||
parties who would receive the covered work from you, a discriminatory
|
||||
patent license (a) in connection with copies of the covered work
|
||||
conveyed by you (or copies made from those copies), or (b) primarily
|
||||
for and in connection with specific products or compilations that
|
||||
contain the covered work, unless you entered into that arrangement,
|
||||
or that patent license was granted, prior to 28 March 2007.
|
||||
|
||||
Nothing in this License shall be construed as excluding or limiting
|
||||
any implied license or other defenses to infringement that may
|
||||
otherwise be available to you under applicable patent law.
|
||||
|
||||
12. No Surrender of Others' Freedom.
|
||||
|
||||
If conditions are imposed on you (whether by court order, agreement or
|
||||
otherwise) that contradict the conditions of this License, they do not
|
||||
excuse you from the conditions of this License. If you cannot convey a
|
||||
covered work so as to satisfy simultaneously your obligations under this
|
||||
License and any other pertinent obligations, then as a consequence you may
|
||||
not convey it at all. For example, if you agree to terms that obligate you
|
||||
to collect a royalty for further conveying from those to whom you convey
|
||||
the Program, the only way you could satisfy both those terms and this
|
||||
License would be to refrain entirely from conveying the Program.
|
||||
|
||||
13. Use with the GNU Affero General Public License.
|
||||
|
||||
Notwithstanding any other provision of this License, you have
|
||||
permission to link or combine any covered work with a work licensed
|
||||
under version 3 of the GNU Affero General Public License into a single
|
||||
combined work, and to convey the resulting work. The terms of this
|
||||
License will continue to apply to the part which is the covered work,
|
||||
but the special requirements of the GNU Affero General Public License,
|
||||
section 13, concerning interaction through a network will apply to the
|
||||
combination as such.
|
||||
|
||||
14. Revised Versions of this License.
|
||||
|
||||
The Free Software Foundation may publish revised and/or new versions of
|
||||
the GNU General Public License from time to time. Such new versions will
|
||||
be similar in spirit to the present version, but may differ in detail to
|
||||
address new problems or concerns.
|
||||
|
||||
Each version is given a distinguishing version number. If the
|
||||
Program specifies that a certain numbered version of the GNU General
|
||||
Public License "or any later version" applies to it, you have the
|
||||
option of following the terms and conditions either of that numbered
|
||||
version or of any later version published by the Free Software
|
||||
Foundation. If the Program does not specify a version number of the
|
||||
GNU General Public License, you may choose any version ever published
|
||||
by the Free Software Foundation.
|
||||
|
||||
If the Program specifies that a proxy can decide which future
|
||||
versions of the GNU General Public License can be used, that proxy's
|
||||
public statement of acceptance of a version permanently authorizes you
|
||||
to choose that version for the Program.
|
||||
|
||||
Later license versions may give you additional or different
|
||||
permissions. However, no additional obligations are imposed on any
|
||||
author or copyright holder as a result of your choosing to follow a
|
||||
later version.
|
||||
|
||||
15. Disclaimer of Warranty.
|
||||
|
||||
THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
|
||||
APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
|
||||
HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
|
||||
OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
|
||||
THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||
PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
|
||||
IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
|
||||
ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
|
||||
|
||||
16. Limitation of Liability.
|
||||
|
||||
IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
|
||||
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
|
||||
THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
|
||||
GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
|
||||
USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
|
||||
DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
|
||||
PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
|
||||
EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
|
||||
SUCH DAMAGES.
|
||||
|
||||
17. Interpretation of Sections 15 and 16.
|
||||
|
||||
If the disclaimer of warranty and limitation of liability provided
|
||||
above cannot be given local legal effect according to their terms,
|
||||
reviewing courts shall apply local law that most closely approximates
|
||||
an absolute waiver of all civil liability in connection with the
|
||||
Program, unless a warranty or assumption of liability accompanies a
|
||||
copy of the Program in return for a fee.
|
||||
|
||||
END OF TERMS AND CONDITIONS
|
||||
|
||||
How to Apply These Terms to Your New Programs
|
||||
|
||||
If you develop a new program, and you want it to be of the greatest
|
||||
possible use to the public, the best way to achieve this is to make it
|
||||
free software which everyone can redistribute and change under these terms.
|
||||
|
||||
To do so, attach the following notices to the program. It is safest
|
||||
to attach them to the start of each source file to most effectively
|
||||
state the exclusion of warranty; and each file should have at least
|
||||
the "copyright" line and a pointer to where the full notice is found.
|
||||
|
||||
<one line to give the program's name and a brief idea of what it does.>
|
||||
Copyright (C) <year> <name of author>
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
Also add information on how to contact you by electronic and paper mail.
|
||||
|
||||
If the program does terminal interaction, make it output a short
|
||||
notice like this when it starts in an interactive mode:
|
||||
|
||||
<program> Copyright (C) <year> <name of author>
|
||||
This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
|
||||
This is free software, and you are welcome to redistribute it
|
||||
under certain conditions; type `show c' for details.
|
||||
|
||||
The hypothetical commands `show w' and `show c' should show the appropriate
|
||||
parts of the General Public License. Of course, your program's commands
|
||||
might be different; for a GUI interface, you would use an "about box".
|
||||
|
||||
You should also get your employer (if you work as a programmer) or school,
|
||||
if any, to sign a "copyright disclaimer" for the program, if necessary.
|
||||
For more information on this, and how to apply and follow the GNU GPL, see
|
||||
<http://www.gnu.org/licenses/>.
|
||||
|
||||
The GNU General Public License does not permit incorporating your program
|
||||
into proprietary programs. If your program is a subroutine library, you
|
||||
may consider it more useful to permit linking proprietary applications with
|
||||
the library. If this is what you want to do, use the GNU Lesser General
|
||||
Public License instead of this License. But first, please read
|
||||
<http://www.gnu.org/philosophy/why-not-lgpl.html>.
|
27
xorriso/COPYRIGHT_gnu_xorriso
Normal file
27
xorriso/COPYRIGHT_gnu_xorriso
Normal file
@ -0,0 +1,27 @@
|
||||
Derek Foreman <derek@signalmarketing.com>
|
||||
Ben Jansens <xor@orodu.net>
|
||||
Thomas Schmitt <scdbackup@gmx.net>
|
||||
Mario Danic <mario.danic@gmail.com>,
|
||||
Vreixo Formoso <metalpain2002@yahoo.es>
|
||||
|
||||
GNU xorriso is a compilation of
|
||||
xorriso Copyright (C) 2007-2010 Thomas Schmitt
|
||||
libisoburn Copyright (C) 2007-2010 Vreixo Formoso, Thomas Schmitt
|
||||
libisofs Copyright (C) 2007-2010 Vreixo Formoso, Mario Danic, Thomas Schmitt
|
||||
libburn Copyright (C) 2002-2006 Derek Foreman, Ben Jansens
|
||||
2006-2010 Mario Danic, Thomas Schmitt
|
||||
from libburnia-project.org with a license derived from GPLv2+.
|
||||
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License version 3
|
||||
or later as published by the Free Software Foundation.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program; if not, write to the Free Software
|
||||
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
@ -1,27 +1,30 @@
|
||||
------------------------------------------------------------------------------
|
||||
libburnia-project.org scdbackup.sourceforge.net/xorriso_eng.html
|
||||
Contribution of libburnia-project.org to the GNU Operating System
|
||||
------------------------------------------------------------------------------
|
||||
xorriso. By Thomas Schmitt <scdbackup@gmx.net>
|
||||
Integrated sub project of libburnia-project.org but also published via:
|
||||
http://scdbackup.sourceforge.net/xorriso_eng.html
|
||||
http://scdbackup.sourceforge.net/xorriso-0.2.7.tar.gz
|
||||
Copyright (C) 2006-2008 Thomas Schmitt, provided under GPL version 2.
|
||||
GNU xorriso. By Thomas Schmitt <scdbackup@gmx.net>
|
||||
Derived from and supported by libburnia-project.org, published via:
|
||||
http://www.gnu.org/software/xorriso/xorriso_eng.html
|
||||
ftp://ftp.gnu.org/gnu/xorriso/xorriso-0.5.0.tar.gz
|
||||
Provided under GPL version 3 or later. No warranty.
|
||||
------------------------------------------------------------------------------
|
||||
|
||||
|
||||
xorriso is a program which maps file objects from POSIX compliant
|
||||
xorriso is a program which copies file objects from POSIX compliant
|
||||
filesystems into Rock Ridge enhanced ISO 9660 filesystems and allows
|
||||
session-wise manipulation of such filesystems. It can load the management
|
||||
information of existing ISO images and it writes the session results to
|
||||
optical media or to filesystem objects.
|
||||
Vice versa xorriso is able to restore file objects from ISO 9660 filesystems.
|
||||
|
||||
Currently it is only supported on Linux with kernels >= 2.4.
|
||||
|
||||
A special property of xorriso is that it needs neither an external ISO 9660
|
||||
formatter program nor an external burn program for CD or DVD but rather
|
||||
incorporates the libraries of libburnia-project.org .
|
||||
|
||||
Currently it is fully supported on GNU/Linux with kernels >= 2.4 and on
|
||||
FreeBSD versions with ATAPI/CAM support enabled in the kernel, see atapicam(4).
|
||||
On other X/Open compliant systems there will only be POSIX i/o with disk
|
||||
file objects, but no direct MMC operation on CD/DVD/BD drives.
|
||||
|
||||
By using this software you agree to the disclaimer at the end of this text:
|
||||
"... without even the implied warranty ..."
|
||||
|
||||
@ -32,14 +35,21 @@ The most simple way to get xorriso from source code is the xorriso standalone
|
||||
tarball.
|
||||
|
||||
Prerequisites:
|
||||
The tarball contains anything that is needed except libc and libpthread.
|
||||
libreadline and the readline-dev headers will make dialog mode more convenient,
|
||||
but are not mandatory.
|
||||
The tarball contains everything that is needed except the following system
|
||||
components:
|
||||
libc, libpthread
|
||||
plus on FreeBSD: libiconv, libcam, IDE and SATA drives need atapicam
|
||||
Optional at compile time are:
|
||||
libreadline and the readline-dev headers make dialog mode more convenient.
|
||||
on GNU/Linux: libacl and libacl-devel allow getting and setting ACLs.
|
||||
zlib and zlib-devel allow zisofs compression.
|
||||
If they were present at compile time, then the optional libraries have to
|
||||
be present at runtime, too.
|
||||
|
||||
Obtain xorriso-0.2.7.tar.gz, take it to a directory of your choice and do:
|
||||
Obtain xorriso-0.5.0.tar.gz, take it to a directory of your choice and do:
|
||||
|
||||
tar xzf xorriso-0.2.7.tar.gz
|
||||
cd xorriso-0.2.7
|
||||
tar xzf xorriso-0.5.0.tar.gz
|
||||
cd xorriso-0.5.0
|
||||
|
||||
Within that directory execute:
|
||||
|
||||
@ -49,12 +59,15 @@ Within that directory execute:
|
||||
This will produce a binary named
|
||||
./xorriso/xorriso
|
||||
|
||||
which you may strip to reduce it in size
|
||||
If you want xorriso to report a "Build timestamp" with its option -version :
|
||||
make buildstamped
|
||||
|
||||
You may strip the binary to reduce it in size
|
||||
strip ./xorriso/xorriso
|
||||
|
||||
You may copy or move it to a directory where it can be found by the shell,
|
||||
you may execute xorriso at the place where it was built, or you may execute
|
||||
as superuser:
|
||||
or you may execute xorriso at the place where it was built,
|
||||
or you may execute as superuser:
|
||||
make install
|
||||
|
||||
For general concepts, options and usage examples see
|
||||
@ -79,11 +92,41 @@ development package is installed, then rather build xorriso by:
|
||||
./configure --prefix=/usr --disable-libreadline
|
||||
make clean ; make
|
||||
Never omit the "make clean" command after switching libreadline enabling.
|
||||
Other deliberate dependency reduction options of ./configure are:
|
||||
--disable-libacl avoid use of ACL functions like acl_to_text()
|
||||
--disable-xattr avoid use of xattr functions like listxattr()
|
||||
--disable-zlib avoid use of zlib functions like compress2()
|
||||
|
||||
xorriso brings own system adapters which allow burning optical media on
|
||||
GNU/Linux and FreeBSD. Alternatively it can use libcdio-0.83 or later for
|
||||
sending commands to optical drives:
|
||||
--enable-libcdio
|
||||
|
||||
xorriso allows to use external processes as file content filters. This is
|
||||
a potential security risk which may be avoided by ./configure option
|
||||
--disable-external-filters
|
||||
|
||||
By default the filter feature is disabled if effective user id and real
|
||||
user id differ. This ban can be lifted by
|
||||
--enable-external-filters-setuid
|
||||
|
||||
Sometimes xorriso will yield better write performance on GNU/Linux if 64 KB are
|
||||
transmitted in each write operation rather than 32 KB. See option -dvd_obs .
|
||||
64k can be made default at configure time by:
|
||||
--enable-dvd-obs-64k
|
||||
|
||||
For xorriso -as cdrecord emulation only:
|
||||
In some situations GNU/Linux may deliver a better write performance to drives
|
||||
if the track input is read with O_DIRECT (see man 2 open). The included libburn
|
||||
and the cdrecord emulation of xorriso can be told to use this peculiar read
|
||||
mode by:
|
||||
--enable-track-src-odirect
|
||||
|
||||
|
||||
Drives and Disk File Objects
|
||||
|
||||
The user of xorriso needs rw-permission for the CD burner device.
|
||||
The user of libisoburn applications needs rw-permission for the CD/DVD/BD
|
||||
drives which shall be used, even if only reading is intended.
|
||||
A list of rw-accessible drives can be obtained by
|
||||
|
||||
xorriso -devices
|
||||
@ -119,9 +162,14 @@ Better try to unmount an eventually mounted media before a write run.
|
||||
|
||||
|
||||
Besides true optical drives, xorriso can also address disk files as input or
|
||||
output drives. The addresses of the disk files have to be preceded by "stdio:".
|
||||
output drives. By default paths to files under /dev are accepted only if the
|
||||
device represents a real optical drive. Other device files may be addressed
|
||||
by prepending "stdio:" to the path.
|
||||
Like:
|
||||
xorriso -dev stdio:/tmp/pseudo_drive ...more arguments...
|
||||
xorriso -dev stdio:/dev/sdb ...more arguments...
|
||||
This rule may be changed by xorriso option -drive_class.
|
||||
Prefix "mmc:" causes a path to be accepted only if it is a real optical drive
|
||||
which is accessible by generic SCSI/MMC commands.
|
||||
|
||||
|
||||
Testing
|
||||
@ -155,8 +203,9 @@ and vice versa:
|
||||
|
||||
File Formats
|
||||
|
||||
Currently there is only one file format peculiar to xorriso : sector maps
|
||||
which describe the valid and invalid blocks on a media or a disk copy of
|
||||
Sector Maps
|
||||
|
||||
Sector maps describe the valid and invalid blocks on a media or a disk copy of
|
||||
a media. xorriso creates and reads these file with its option -check_media.
|
||||
|
||||
The file begins with 32 bytes of cleartext of which the last one is a
|
||||
@ -172,6 +221,45 @@ bit in the map. Then come the bits in form of 8-bit bytes.
|
||||
Data block M is covered by bit B=M/S in the map, bit number B is stored in
|
||||
byte B/8 as bit B%8. A valid readable data block has its bit set to 1.
|
||||
|
||||
Checksum Tags
|
||||
|
||||
Checksum tags are data blocks inside an ISO 9660 image which do not belong to
|
||||
any file but rather tell the MD5 of a certain range of data blocks.
|
||||
|
||||
The superblock checksum tag is written after the ECMA-119 volume descriptors.
|
||||
The tree checksum tag is written after the ECMA-119 directory entries.
|
||||
The session checksum tag is written after all payload including the checksum
|
||||
array. (Then follows eventual padding.)
|
||||
|
||||
The tags are single lines of printable text, padded by 0 bytes. They have
|
||||
the following format:
|
||||
|
||||
Tag_id pos=# range_start=# range_size=# [session_start|next=#] md5=# self=#\n
|
||||
|
||||
Parameters md5= and self= are 32 digit hex, the others are decimal numbers.
|
||||
|
||||
Tag_id distinguishes the following tag types
|
||||
"libisofs_rlsb32_checksum_tag_v1" Relocated 64 kB superblock tag
|
||||
"libisofs_sb_checksum_tag_v1" Superblock tag
|
||||
"libisofs_tree_checksum_tag_v1" Directory tree tag
|
||||
"libisofs_checksum_tag_v1" Session end tag
|
||||
|
||||
A relocated superblock may appear at LBA 0 of an image which was produced for
|
||||
being stored in a disk file or on overwriteable media (e.g. DVD+R, BD-RE).
|
||||
xorriso records the first session at LBA 32. An eventual follow-up session
|
||||
begins at the next block address which is divisible by 32 and higher than the
|
||||
address of the previous session's end tag. Normally no session starts after the
|
||||
address given by relocated superblock parameter session_start=.
|
||||
Session oriented media like CD-R[W], DVD+R, BD-R will have no relocated
|
||||
superblock but rather bear a table-of-content on media level.
|
||||
|
||||
A tag is valid if pos= tells its own block address and self= tells its own MD5
|
||||
up to the last hex digit of md5=. range_start= tells the first block that is
|
||||
covered by md5=, range_size= tells the number of blocks covered by md5=.
|
||||
Relocated superblocks tell the block address of their session by session_start=.
|
||||
Superblock and tree tag tell the block address of the next tag by next=.
|
||||
The newline character at the end is mandatory.
|
||||
|
||||
|
||||
libisoburn
|
||||
|
||||
@ -192,9 +280,9 @@ and a matching dynamically linked xorriso binary.
|
||||
This binary is leaner but depends on properly installed libraries of suitable
|
||||
revision.
|
||||
|
||||
Dynamic library and compile time header requirements for libisoburn-0.2.7 :
|
||||
- libburn.so.4 , version libburn-0.5.2 or higher
|
||||
- libisofs.so.6 , version libisofs-0.6.9 or higher
|
||||
Dynamic library and compile time header requirements for libisoburn-0.5.0 :
|
||||
- libburn.so.4 , version libburn-0.7.6 or higher
|
||||
- libisofs.so.6 , version libisofs-0.6.28 or higher
|
||||
libisoburn and xorriso will not start with libraries which are older than their
|
||||
headers seen at compile time. So compile in the oldest possible installation
|
||||
setup unless you have reason to enforce a newer bug fix level.
|
||||
@ -205,8 +293,8 @@ Standalone xorriso has less runtime dependencies and can be moved more freely.
|
||||
------------------------------------------------------------------------------
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License version 2 as
|
||||
published by the Free Software Foundation.
|
||||
it under the terms of the GNU General Public License version 3 or later
|
||||
as published by the Free Software Foundation.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
@ -218,16 +306,36 @@ Standalone xorriso has less runtime dependencies and can be moved more freely.
|
||||
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
|
||||
------------------------------------------------------------------------------
|
||||
Based on and sub project of:
|
||||
libburnia-project.org
|
||||
By Mario Danic <mario.danic@gmail.com>,
|
||||
Vreixo Formoso <metalpain2002@yahoo.es>
|
||||
Thomas Schmitt <scdbackup@gmx.net>
|
||||
Copyright (C) 2006-2008 Mario Danic, Vreixo Formoso, Thomas Schmitt.
|
||||
|
||||
libburnia-project.org is inspired by and in other components still containing
|
||||
parts of old
|
||||
GNU xorriso is feature-wise equivalent to the dynamic compilation of
|
||||
libburnia libraries and libburnia program xorriso.
|
||||
It restricts itself to a technical form where the legal commitments of the
|
||||
libburnia project and the legal intentions of FSF match completely.
|
||||
|
||||
Libburnia project is committed to provide support for this copy in the same
|
||||
way as for its own software releases. It is further committed to keep its
|
||||
own licenses open for obtaining future copies under GPLv2+.
|
||||
|
||||
------------------------------------------------------------------------------
|
||||
libburnia program xorriso is based on and sub project of:
|
||||
libburnia-project.org
|
||||
By Mario Danic <mario.danic@gmail.com>, libburn, libisofs
|
||||
Vreixo Formoso <metalpain2002@yahoo.es>, libisofs, libisoburn
|
||||
Thomas Schmitt <scdbackup@gmx.net>, libburn, libisofs,
|
||||
libisoburn, xorriso
|
||||
Copyright (C) 2006-2010 Mario Danic, Vreixo Formoso, Thomas Schmitt.
|
||||
|
||||
libburnia-project.org is inspired by and in libburn still containing parts
|
||||
of old
|
||||
Libburn. By Derek Foreman <derek@signalmarketing.com> and
|
||||
Ben Jansens <xor@orodu.net>
|
||||
Copyright (C) 2002-2006 Derek Foreman and Ben Jansens
|
||||
------------------------------------------------------------------------------
|
||||
|
||||
This text itself is
|
||||
Copyright (c) 2007 - 2010 Thomas Schmitt <scdbackup@gmx.net>
|
||||
and is freely distributable.
|
||||
It shall only be modified in sync with the technical properties of xorriso.
|
||||
If you make use of the license to derive modified versions of xorriso
|
||||
then you are entitled to modify this text under that same license.
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -1,22 +1,24 @@
|
||||
#!/bin/sh
|
||||
|
||||
# compile_xorriso.sh
|
||||
# Copyright 2005 - 2008 Thomas Schmitt, scdbackup@gmx.net, GPL
|
||||
# Copyright 2005 - 2010 Thomas Schmitt, scdbackup@gmx.net, GPL version 2
|
||||
#
|
||||
# Not intended for general use in production installations !
|
||||
# Rather use: ./bootstrap ; ./configure ; make
|
||||
#
|
||||
# This is a development tool which expects a special setup of directories.
|
||||
# This is a development tool which expects a special setup of directories
|
||||
# on a Linux system (e.g. SuSE 10.2).
|
||||
# It is to be executed in a common parent of the directories given with
|
||||
# $isofs $isoburn $burn $xorr
|
||||
|
||||
isofs=./nglibisofs-develop/libisofs
|
||||
isofs=./nglibisofs-develop/libisofs/libisofs_libisofs_la-
|
||||
isofs_filter=./nglibisofs-develop/libisofs/filters/libisofs_libisofs_la-
|
||||
burn=./libburn-develop/libburn
|
||||
isoburn=./libisoburn-develop/libisoburn
|
||||
xorr=./libisoburn-develop/xorriso
|
||||
|
||||
debug_opts="-O2"
|
||||
def_opts=
|
||||
def_opts="-DXorriso_allow_external_filterS"
|
||||
largefile_opts="-D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE=1"
|
||||
do_strip=0
|
||||
static_opts=
|
||||
@ -24,6 +26,7 @@ warn_opts="-Wall"
|
||||
nglibisofs=1
|
||||
def_libreadline="-DXorriso_with_readlinE"
|
||||
link_libreadline="-lreadline"
|
||||
link_libcdio=
|
||||
|
||||
for i in "$@"
|
||||
do
|
||||
@ -41,12 +44,20 @@ do
|
||||
then
|
||||
def_libreadline=""
|
||||
link_libreadline=""
|
||||
elif test "$i" = "-dvd_obs_64k"
|
||||
then
|
||||
def_opts="$def_opts -DXorriso_dvd_obs_default_64K"
|
||||
elif test "$i" = "-use_libcdio"
|
||||
then
|
||||
link_libcdio="-lcdio"
|
||||
elif test "$i" = "-help" -o "$i" = "--help" -o "$i" = "-h"
|
||||
then
|
||||
echo \
|
||||
"$xorr/compile_xorriso.sh : to be executed above top level directories"
|
||||
echo "Options:"
|
||||
echo " -dvd_obs_64k 64 KB default size for DVD/BD writing."
|
||||
echo " -no_libreadline do not compile for and link with libreadline."
|
||||
echo " -use_libcdio link with -lcdio because libburn uses it."
|
||||
echo " -do_diet produce capability reduced lean version."
|
||||
echo " -do_strip apply program strip to compiled programs."
|
||||
echo " -g produce debuggable programm."
|
||||
@ -59,38 +70,45 @@ do
|
||||
done
|
||||
|
||||
libisofs=
|
||||
libisofs="$libisofs $isofs"/buffer.o
|
||||
libisofs="$libisofs $isofs"/builder.o
|
||||
libisofs="$libisofs $isofs"/data_source.o
|
||||
libisofs="$libisofs $isofs"/ecma119.o
|
||||
libisofs="$libisofs $isofs"/ecma119_tree.o
|
||||
libisofs="$libisofs $isofs"/eltorito.o
|
||||
libisofs="$libisofs $isofs"/filesrc.o
|
||||
libisofs="$libisofs $isofs"/fs_image.o
|
||||
libisofs="$libisofs $isofs"/fs_local.o
|
||||
libisofs="$libisofs $isofs"/fsource.o
|
||||
libisofs="$libisofs $isofs"/image.o
|
||||
libisofs="$libisofs $isofs"/iso1999.o
|
||||
libisofs="$libisofs $isofs"/joliet.o
|
||||
libisofs="$libisofs $isofs"/libiso_msgs.o
|
||||
libisofs="$libisofs $isofs"/messages.o
|
||||
libisofs="$libisofs $isofs"/node.o
|
||||
libisofs="$libisofs $isofs"/rockridge.o
|
||||
libisofs="$libisofs $isofs"/rockridge_read.o
|
||||
libisofs="$libisofs $isofs"/stream.o
|
||||
libisofs="$libisofs $isofs"/tree.o
|
||||
libisofs="$libisofs $isofs"/util.o
|
||||
libisofs="$libisofs $isofs"/util_htable.o
|
||||
libisofs="$libisofs $isofs"/util_rbtree.o
|
||||
|
||||
libisofs="$libisofs $isofs"buffer.o
|
||||
libisofs="$libisofs $isofs"builder.o
|
||||
libisofs="$libisofs $isofs"data_source.o
|
||||
libisofs="$libisofs $isofs"ecma119.o
|
||||
libisofs="$libisofs $isofs"ecma119_tree.o
|
||||
libisofs="$libisofs $isofs"eltorito.o
|
||||
libisofs="$libisofs $isofs"filesrc.o
|
||||
libisofs="$libisofs $isofs"fs_image.o
|
||||
libisofs="$libisofs $isofs"fs_local.o
|
||||
libisofs="$libisofs $isofs"fsource.o
|
||||
libisofs="$libisofs $isofs"image.o
|
||||
libisofs="$libisofs $isofs"iso1999.o
|
||||
libisofs="$libisofs $isofs"joliet.o
|
||||
libisofs="$libisofs $isofs"libiso_msgs.o
|
||||
libisofs="$libisofs $isofs"messages.o
|
||||
libisofs="$libisofs $isofs"node.o
|
||||
libisofs="$libisofs $isofs"rockridge.o
|
||||
libisofs="$libisofs $isofs"rockridge_read.o
|
||||
libisofs="$libisofs $isofs"stream.o
|
||||
libisofs="$libisofs $isofs"tree.o
|
||||
libisofs="$libisofs $isofs"util.o
|
||||
libisofs="$libisofs $isofs"util_htable.o
|
||||
libisofs="$libisofs $isofs"util_rbtree.o
|
||||
libisofs="$libisofs $isofs"system_area.o
|
||||
libisofs="$libisofs $isofs"make_isohybrid_mbr.o
|
||||
libisofs="$libisofs $isofs"aaip_0_2.o
|
||||
libisofs="$libisofs $isofs"filter.o
|
||||
libisofs="$libisofs $isofs_filter"external.o
|
||||
libisofs="$libisofs $isofs_filter"zisofs.o
|
||||
libisofs="$libisofs $isofs_filter"gzip.o
|
||||
libisofs="$libisofs $isofs"md5.o
|
||||
|
||||
echo "Version timestamp : $(sed -e 's/#define Xorriso_timestamP "//' -e 's/"$//' "$xorr"/xorriso_timestamp.h)"
|
||||
|
||||
date -u '+#define Xorriso_build_timestamP "%Y.%m.%d.%H%M%S"' >"$xorr"/xorriso_buildstamp.h
|
||||
echo "Build timestamp : $(sed -e 's/#define Xorriso_build_timestamP "//' -e 's/"$//' "$xorr"/xorriso_buildstamp.h)"
|
||||
|
||||
echo "compiling program $xorr/xorriso.c $static_opts $debug_opts $def_opts"
|
||||
cc -I. -DXorriso_with_maiN -DXorriso_with_regeX $def_libreadline \
|
||||
echo "compiling program $xorr/xorriso.c $static_opts $debug_opts $def_opts $link_libcdio"
|
||||
cc -I. -DXorriso_with_maiN $def_libreadline \
|
||||
$warn_opts \
|
||||
$static_opts \
|
||||
$debug_opts \
|
||||
@ -128,7 +146,7 @@ cc -I. -DXorriso_with_maiN -DXorriso_with_regeX $def_libreadline \
|
||||
"$burn"/toc.o \
|
||||
\
|
||||
"$burn"/crc.o \
|
||||
"$burn"/lec.o \
|
||||
"$burn"/ecma130ab.o \
|
||||
\
|
||||
"$isoburn"/isoburn.o \
|
||||
"$isoburn"/burn_wrap.o \
|
||||
@ -138,8 +156,11 @@ cc -I. -DXorriso_with_maiN -DXorriso_with_regeX $def_libreadline \
|
||||
$libisofs \
|
||||
\
|
||||
$link_libreadline \
|
||||
$link_libcdio \
|
||||
\
|
||||
-lpthread
|
||||
-lpthread \
|
||||
-lacl \
|
||||
-lz
|
||||
|
||||
ret=$?
|
||||
if test "$ret" = 0
|
||||
|
@ -1,22 +1,29 @@
|
||||
AC_INIT([xorriso], [0.2.7], [http://libburnia-project.org])
|
||||
|
||||
# configure.ac stems from xorriso/configure_ac.txt and leads to ./configure
|
||||
# Copyright (c) 2007 - 2010 Thomas Schmitt <scdbackup@gmx.net>
|
||||
# Provided under GPL version 2 or later.
|
||||
|
||||
AC_INIT([xorriso], [0.5.0], [http://libburnia-project.org])
|
||||
AC_PREREQ([2.50])
|
||||
dnl AC_CONFIG_HEADER([config.h])
|
||||
|
||||
AC_CANONICAL_HOST
|
||||
AC_CANONICAL_TARGET
|
||||
|
||||
LIBBURNIA_SET_FLAGS
|
||||
|
||||
AM_INIT_AUTOMAKE([subdir-objects])
|
||||
|
||||
BURN_MAJOR_VERSION=0
|
||||
BURN_MINOR_VERSION=5
|
||||
BURN_MICRO_VERSION=5
|
||||
BURN_MINOR_VERSION=7
|
||||
BURN_MICRO_VERSION=7
|
||||
AC_SUBST(BURN_MAJOR_VERSION)
|
||||
AC_SUBST(BURN_MINOR_VERSION)
|
||||
AC_SUBST(BURN_MICRO_VERSION)
|
||||
|
||||
LIBISOFS_MAJOR_VERSION=0
|
||||
LIBISOFS_MINOR_VERSION=6
|
||||
LIBISOFS_MICRO_VERSION=10
|
||||
LIBISOFS_MICRO_VERSION=29
|
||||
AC_SUBST(LIBISOFS_MAJOR_VERSION)
|
||||
AC_SUBST(LIBISOFS_MINOR_VERSION)
|
||||
AC_SUBST(LIBISOFS_MICRO_VERSION)
|
||||
@ -43,6 +50,12 @@ if test ! $ac_cv_func_fseeko; then
|
||||
AC_ERROR([Libburn requires largefile support.])
|
||||
fi
|
||||
|
||||
dnl If iconv(3) is in an extra libiconv, then it gets added to variable LIBS.
|
||||
dnl If not, then no -liconv will be added.
|
||||
AC_CHECK_LIB(iconv, iconv, , )
|
||||
dnl GNU iconv has no function iconv() but libiconv() and a macro iconv()
|
||||
AC_CHECK_LIB(iconv, libiconv, , )
|
||||
|
||||
AC_PROG_LIBTOOL
|
||||
AC_SUBST(LIBTOOL_DEPS)
|
||||
LIBTOOL="$LIBTOOL --silent"
|
||||
@ -74,8 +87,19 @@ AC_SUBST(THREAD_LIBS)
|
||||
|
||||
TARGET_SHIZZLE
|
||||
AC_SUBST(ARCH)
|
||||
AC_SUBST(LIBBURNIA_PKGCONFDIR)
|
||||
AC_SUBST(LIBBURN_ARCH_LIBS)
|
||||
|
||||
|
||||
dnl ts A90303
|
||||
dnl Check the preconditions for using statvfs() in sg-dummy
|
||||
dnl (sg-linux and sg-freebsd use statvfs() unconditionally)
|
||||
STATVFS_DEF=-DLibburn_os_has_statvfS
|
||||
AC_CHECK_HEADER(sys/statvfs.h, X=, STATVFS_DEF=)
|
||||
AC_CHECK_FUNC([statvfs], X=, STATVFS_DEF=)
|
||||
CFLAGS="$CFLAGS $STATVFS_DEF"
|
||||
|
||||
|
||||
dnl Add compiler-specific flags
|
||||
|
||||
dnl See if the user wants aggressive optimizations of the code
|
||||
@ -95,6 +119,13 @@ else
|
||||
CFLAGS="$CFLAGS -DDEBUG"
|
||||
fi
|
||||
|
||||
|
||||
dnl Determine target directory for libisoburn-*.pc
|
||||
dnl Important: Must be performed _after_ TARGET_SHIZZLE
|
||||
dnl
|
||||
LIBBURNIA_SET_PKGCONFIG
|
||||
|
||||
|
||||
AC_ARG_ENABLE(libreadline,
|
||||
[ --enable-libreadline Enable use of libreadline by xorriso, default=yes],
|
||||
, enable_libreadline=yes)
|
||||
@ -112,9 +143,131 @@ fi
|
||||
AC_SUBST(READLINE_DEF)
|
||||
|
||||
|
||||
AC_ARG_ENABLE(libacl,
|
||||
[ --enable-libacl Enable use of libacl by libisofs, default=yes],
|
||||
, enable_libacl=yes)
|
||||
if test x$enable_libacl = xyes; then
|
||||
dnl Check whether there is libacl-devel and libacl-runtime.
|
||||
dnl If not, erase this macro which would enable use of acl_to_text and others
|
||||
LIBACL_DEF="-DLibisofs_with_aaip_acL"
|
||||
dnl The empty yes case obviously causes -lacl to be linked
|
||||
AC_CHECK_HEADER(sys/acl.h, AC_CHECK_LIB(acl, acl_to_text, , LIBACL_DEF= ), LIBACL_DEF= )
|
||||
else
|
||||
LIBACL_DEF=
|
||||
fi
|
||||
AC_SUBST(LIBACL_DEF)
|
||||
|
||||
|
||||
AC_ARG_ENABLE(xattr,
|
||||
[ --enable-xattr Enable use of xattr by libisofs, default=yes],
|
||||
, enable_xattr=yes)
|
||||
if test x$enable_xattr = xyes; then
|
||||
dnl Check whether there is the header for GNU/Linux xattr.
|
||||
dnl If not, erase this macro which would enable use of listxattr and others
|
||||
XATTR_DEF="-DLibisofs_with_aaip_xattR"
|
||||
AC_CHECK_HEADER(attr/xattr.h, AC_CHECK_LIB(c, listxattr, X= , XATTR_DEF= ), XATTR_DEF= )
|
||||
else
|
||||
XATTR_DEF=
|
||||
fi
|
||||
AC_SUBST(XATTR_DEF)
|
||||
|
||||
|
||||
AC_ARG_ENABLE(zlib,
|
||||
[ --enable-zlib Enable use of zlib by libisofs, default=yes],
|
||||
, enable_zlib=yes)
|
||||
if test x$enable_zlib = xyes; then
|
||||
dnl Check whether there is the header for zlib.
|
||||
dnl If not, erase this macro which would enable use of compress2() and others.
|
||||
dnl Linking fails on SuSE 9.0 because zlib has compress2() but lacks
|
||||
dnl compressBound(). So compressBound is the more modern thing to test.
|
||||
dnl The empty parameter after "compressBound" causes -lz.
|
||||
ZLIB_DEF="-DLibisofs_with_zliB"
|
||||
AC_CHECK_HEADER(zlib.h, AC_CHECK_LIB(z, compressBound, , ZLIB_DEF= ), ZLIB_DEF= )
|
||||
else
|
||||
ZLIB_DEF=
|
||||
fi
|
||||
AC_SUBST(ZLIB_DEF)
|
||||
|
||||
|
||||
AC_ARG_ENABLE(libcdio,
|
||||
[ --enable-libcdio Enable EXPERIMENTAL use of libcdio as system adapter, default=no],
|
||||
, enable_libcdio=no)
|
||||
if test x$enable_libcdio = xyes; then
|
||||
dnl Check whether there is libcdio-devel and libcdio-runtime.
|
||||
dnl If not, erase this macro
|
||||
LIBCDIO_DEF="-DLibburn_use_libcdiO"
|
||||
dnl The empty yes case obviously causes -lcdio to be linked
|
||||
AC_CHECK_HEADER(cdio/cdio.h, AC_CHECK_LIB(cdio, mmc_last_cmd_sense, , LIBCDIO_DEF= ), LIBCDIO_DEF= )
|
||||
else
|
||||
LIBCDIO_DEF=
|
||||
fi
|
||||
if test x$LIBCDIO_DEF = x
|
||||
then
|
||||
if test x$enable_libcdio = xyes
|
||||
then
|
||||
echo "WARNING: could not enable use of libcdio as system adapter"
|
||||
fi
|
||||
else
|
||||
echo "enabled EXPERIMENTAL use of libcdio as system adapter"
|
||||
|
||||
LIBCDIO_REQUIRED=0.83
|
||||
PKG_CHECK_MODULES(LIBCDIO, libcdio >= $LIBCDIO_REQUIRED)
|
||||
fi
|
||||
AC_SUBST(LIBCDIO_DEF)
|
||||
|
||||
|
||||
AC_ARG_ENABLE(external-filters,
|
||||
[ --enable-external-filters Enable use of external filter programs by xorriso, default=yes],
|
||||
, enable_external_filters=yes)
|
||||
if test x"$enable_external_filters" = xyes; then
|
||||
EXTF_DEF="-DXorriso_allow_external_filterS"
|
||||
echo "enabled xorriso external filter programs"
|
||||
else
|
||||
EXTF_DEF=
|
||||
echo "disabled xorriso external filter programs"
|
||||
fi
|
||||
AC_SUBST(EXTF_DEF)
|
||||
|
||||
AC_ARG_ENABLE(external-filters-setuid,
|
||||
[ --enable-external-filters-setuid Enable xorriso external filter programs under setuid, default=no],
|
||||
, enable_external_filters_setuid=no)
|
||||
if test x$enable_external_filters_setuid = xyes; then
|
||||
EXTF_SUID_DEF="-DXorriso_allow_extf_suiD"
|
||||
echo "enabled xorriso external filter programs under setuid"
|
||||
else
|
||||
EXTF_SUID_DEF=
|
||||
echo "disabled xorriso external filter programs under setuid"
|
||||
fi
|
||||
AC_SUBST(EXTF_SUID_DEF)
|
||||
|
||||
AC_ARG_ENABLE(dvd-obs-64k,
|
||||
[ --enable-dvd-obs-64k 64 KB default size for DVD/BD writing, default=no],
|
||||
, enable_dvd_obs=no)
|
||||
if test x$enable_dvd_obs_64k = xyes; then
|
||||
XORRISO_DVD_OBS_64K="-DXorriso_dvd_obs_default_64K"
|
||||
echo "enabled xorriso write size default 64 KB on DVD and BD"
|
||||
else
|
||||
XORRISO_DVD_OBS_64K=
|
||||
echo "disabled xorriso write size default 64 KB on DVD and BD"
|
||||
fi
|
||||
AC_SUBST(XORRISO_DVD_OBS_64K)
|
||||
|
||||
AC_ARG_ENABLE(track-src-odirect,
|
||||
[ --enable-track-src-odirect Enable use of O_DIRECT with -as cdrskin, default=no],
|
||||
, enable_track_src_odirect=no)
|
||||
if test x$enable_track_src_odirect = xyes; then
|
||||
LIBBURN_O_DIRECT_DEF="-DLibburn_read_o_direcT"
|
||||
echo "enabled use of O_DIRECT with input of -as cdrskin"
|
||||
else
|
||||
LIBBURN_O_DIRECT_DEF=
|
||||
echo "disabled use of O_DIRECT with input of -as cdrskin"
|
||||
fi
|
||||
AC_SUBST(LIBBURN_O_DIRECT_DEF)
|
||||
|
||||
AC_CONFIG_FILES([
|
||||
Makefile
|
||||
version.h
|
||||
xorriso.pc
|
||||
])
|
||||
AC_OUTPUT
|
||||
|
||||
# xorriso.pc
|
||||
|
@ -51,7 +51,7 @@ then
|
||||
-e 's/<b>Libburn drives:<\/b>/\ <BR><b>Libburn drives:<\/b>/' \
|
||||
-e 's/^-dev /\ \ -dev /' \
|
||||
-e 's/^-devices /\ \ -devices /' \
|
||||
-e 's/<b>Rock Ridge, POSIX, X\/Open, and El Torito:<\/b>/\ <BR><b>Rock Ridge, POSIX, X\/Open, and El Torito:<\/b>/' \
|
||||
-e 's/<b>Rock Ridge, POSIX, X\/Open, El Torito, ACL,/\ <BR><b>Rock Ridge, POSIX, X\/Open, El Torito, ACL,/' \
|
||||
-e 's/<b>Command processing:<\/b>/\ <BR><b>Command processing:<\/b>/' \
|
||||
-e 's/<b>Dialog, Readline, Result pager:<\/b>/\ <BR><b>Dialog, Readline, Result pager:<\/b>/' \
|
||||
-e 's/<b>Aquiring source and target drive:<\/b>/\ <BR><b>Aquiring source and target drive:<\/b><BR>\ <BR>/' \
|
||||
@ -65,6 +65,7 @@ then
|
||||
-e 's/<b>Settings for result writing:<\/b>/\ <BR><b>Settings for result writing:<\/b><BR>\ <BR>/' \
|
||||
-e 's/^706k = 706kB/\ \ 706k = 706kB/' \
|
||||
-e 's/^5540k = 5540kB/\ \ 5540k = 5540kB/' \
|
||||
-e 's/<b>Character sets:<\/b>/\ <BR><b>Character sets:<\/b><BR>\ <BR>/' \
|
||||
-e 's/<b>Exception processing:<\/b>/\ <BR><b>Exception processing:<\/b><BR>\ <BR>/' \
|
||||
-e 's/<b>El Torito bootable ISO images:<\/b>/\ <BR><b>El Torito bootable ISO images:<\/b><BR>\ <BR>/' \
|
||||
-e 's/<b>Dialog mode control:<\/b>/\ <BR><b>Dialog mode control:<\/b><BR>\ <BR>/' \
|
||||
|
@ -1,35 +1,50 @@
|
||||
#!/bin/sh
|
||||
|
||||
# make_xorriso_standalone.sh
|
||||
# Copyright 2008 Thomas Schmitt, scdbackup@gmx.net, GPL
|
||||
# Copyright 2008 - 2010 Thomas Schmitt, scdbackup@gmx.net, GPLv2+
|
||||
#
|
||||
# Not intended for general use in production installations !
|
||||
#
|
||||
# This is a development tool which expects a special setup of directories.
|
||||
# It is to be executed in a common parent of the directories
|
||||
# nglibisofs-develop libburn-develop libisoburn-develop
|
||||
# where tarballs or repository copies have been installed of
|
||||
# libisofs libburn libisoburn
|
||||
# obtained by following instructions on http://libburnia-project.org.
|
||||
#
|
||||
# Creates a standalone tree for building xorriso
|
||||
# from the contents of a unified libburnia development tree.
|
||||
# It creates a new directory tree
|
||||
# xorriso-standalone
|
||||
# for building GNU xorriso.
|
||||
#
|
||||
# The ./bootstrap script gets applied and a source tarball
|
||||
# is made.
|
||||
#
|
||||
# From that tree can be build a binary xorriso/xorriso
|
||||
# which at runtime depends only on libc and libpthread.
|
||||
# Execute in $lone_dir :
|
||||
# From that tree can be build a binary xorriso/xorriso which at runtime
|
||||
# does not depend on installed libburnia libraries.
|
||||
# Execute in xorriso-standalone :
|
||||
#
|
||||
# ./configure && make
|
||||
#
|
||||
|
||||
# By the variable setting create_gnu_xorriso="yes"
|
||||
# the result will become a GNU xorriso tarball under GPLv3+.
|
||||
# Without this setting, the result is technically equivalent but
|
||||
# stays under GPLv2+. In that case the files xorriso/*_gnu_xorriso
|
||||
# are merely informative.
|
||||
# Note that it is not permissible to revert the transition from
|
||||
# GPLv2+ to GPLv3+. (Rather derive a new GPLv2+ from libburnia.)
|
||||
|
||||
create_gnu_xorriso="yes"
|
||||
|
||||
|
||||
current_dir=$(pwd)
|
||||
lone_dir="$current_dir"/"xorriso-standalone"
|
||||
|
||||
xorriso_rev=0.2.7
|
||||
# For unstable uploads:
|
||||
xorriso_rev=0.5.0
|
||||
# For unstable uploads and patch level 0 of stable releases:
|
||||
xorriso_pl=""
|
||||
# For stable releases:
|
||||
# xorriso_pl=".pl00"
|
||||
# For higher patch levels of stable releases:
|
||||
## xorriso_pl=".pl01"
|
||||
|
||||
with_bootstrap_tarball=1
|
||||
|
||||
@ -103,9 +118,7 @@ copy_files xorriso/configure_ac.txt "$lone_dir"/configure.ac
|
||||
|
||||
copy_files xorriso/xorriso_makefile_am.txt "$lone_dir"/Makefile.am
|
||||
|
||||
copy_files xorriso/xorriso_pc_in.txt "$lone_dir"/xorriso.pc.in
|
||||
|
||||
copy_files xorriso/README "$lone_dir"/README
|
||||
# copy_files xorriso/xorriso_pc_in.txt "$lone_dir"/xorriso.pc.in
|
||||
|
||||
# echo "See end of xorriso/changelog.txt" >"$lone_dir"/TODO
|
||||
|
||||
@ -134,6 +147,8 @@ copy_files \
|
||||
|
||||
copy_files xorriso/xorriso_buildstamp_none.h \
|
||||
"$lone_dir"/xorriso/xorriso_buildstamp.h
|
||||
copy_files xorriso/xorriso_buildstamp_none.h \
|
||||
"$lone_dir"/xorriso/xorriso_buildstamp_none.h
|
||||
|
||||
create_dir "$lone_dir"/test
|
||||
copy_files \
|
||||
@ -145,10 +160,15 @@ copy_files \
|
||||
|
||||
create_dir "$lone_dir"/libisofs
|
||||
create_dir "$lone_dir"/libisofs/filters
|
||||
create_dir "$lone_dir"/doc
|
||||
goto_dir "$current_dir"/nglibisofs-develop
|
||||
copy_files libisofs/*.[ch] "$lone_dir"/libisofs
|
||||
copy_files libisofs/filters/*.[ch] "$lone_dir"/libisofs/filters
|
||||
copy_files doc/susp_aaip*.txt "$lone_dir"/doc
|
||||
copy_files doc/zisofs_format.txt "$lone_dir"/doc
|
||||
copy_files doc/checksums.txt "$lone_dir"/doc
|
||||
copy_files COPYRIGHT "$lone_dir"/libisofs
|
||||
test -e CONTRIBUTORS && cat CONTRIBUTORS >>"$lone_dir"/CONTRIBUTORS
|
||||
|
||||
# To get a common version.h
|
||||
cat version.h.in >> "$lone_dir"/version.h.in
|
||||
@ -191,18 +211,43 @@ create_dir "$lone_dir"/libburn
|
||||
goto_dir "$current_dir"/libburn-develop
|
||||
copy_files libburn/*.[ch] "$lone_dir"/libburn
|
||||
copy_files COPYRIGHT "$lone_dir"/libburn
|
||||
cat CONTRIBUTORS >>"$lone_dir"/CONTRIBUTORS
|
||||
|
||||
# Delete a source module of yet unclear ancestry.
|
||||
# The build process will avoid to use it.
|
||||
rm "$lone_dir"/libburn/crc.c
|
||||
|
||||
|
||||
# To get a common version.h
|
||||
cat version.h.in >> "$lone_dir"/version.h.in
|
||||
|
||||
# Decision about legal situation
|
||||
goto_dir "$current_dir"/libisoburn-develop
|
||||
if test "$create_gnu_xorriso" = "yes"
|
||||
then
|
||||
copy_files xorriso/README_gnu_xorriso "$lone_dir"/README
|
||||
copy_files xorriso/COPYRIGHT_gnu_xorriso "$lone_dir"/COPYRIGHT
|
||||
copy_files xorriso/COPYING_gnu_xorriso "$lone_dir"/COPYING
|
||||
copy_files xorriso/AUTHORS_gnu_xorriso "$lone_dir"/AUTHORS
|
||||
|
||||
# patch xorriso/xorriso.c to be GNU xorriso
|
||||
sed -e's/define Xorriso_libburnia_xorrisO/define Xorriso_GNU_xorrisO/' \
|
||||
-e's/This may be changed to Xorriso_GNU_xorrisO in order to c/C/' \
|
||||
<xorriso/xorriso.c >"$lone_dir"/xorriso/xorriso.c
|
||||
|
||||
else
|
||||
|
||||
copy_files README "$lone_dir"/README
|
||||
|
||||
fi
|
||||
|
||||
|
||||
# tarball
|
||||
|
||||
if test "$with_bootstrap_tarball" = 1
|
||||
then
|
||||
|
||||
tarball_dir="$current_dir"/xorriso-"$xorriso_rev"
|
||||
tarball_dir="$current_dir"/xorriso-"$xorriso_rev""$xorriso_pl"
|
||||
mv "$lone_dir" "$tarball_dir"
|
||||
|
||||
goto_dir "$tarball_dir"
|
||||
@ -225,6 +270,17 @@ rm -r ./autom4te.cache
|
||||
chmod a+rx,go-w,u+w ./configure
|
||||
)
|
||||
|
||||
if test "$create_gnu_xorriso" = "yes"
|
||||
then
|
||||
# ftp-upload@gnu.org dislikes my automake 1.9 and its chmod a+rwx
|
||||
sed -e 's/by automake 1.9.6/by automake 1.11.1/' \
|
||||
-e 's/-perm -777 -exec chmod a+rwx/-perm -755 -exec chmod u+rwx,go+rx/' \
|
||||
< Makefile.in > new_Makefile.in
|
||||
|
||||
mv new_Makefile.in Makefile.in
|
||||
fi
|
||||
|
||||
|
||||
cd "$current_dir"
|
||||
tar czf ./xorriso-"$xorriso_rev""$xorriso_pl".tar.gz $(basename "$tarball_dir")
|
||||
|
||||
|
197
xorriso/makefile_libxorriso_am.txt
Normal file
197
xorriso/makefile_libxorriso_am.txt
Normal file
@ -0,0 +1,197 @@
|
||||
|
||||
# ts A90315 : LIBBURNIA_PKGCONFDIR is defined OS specific in acinclude.m4
|
||||
# was: pkgconfigdir=$(libdir)/pkgconfig
|
||||
pkgconfigdir=$(LIBBURNIA_PKGCONFDIR)
|
||||
|
||||
libincludedir=$(includedir)/libisoburn
|
||||
|
||||
lib_LTLIBRARIES = libisoburn/libisoburn.la libxorriso/libxorriso.la
|
||||
|
||||
## ========================================================================= ##
|
||||
|
||||
# Build libraries
|
||||
libisoburn_libisoburn_la_LDFLAGS = \
|
||||
-version-info $(LT_CURRENT):$(LT_REVISION):$(LT_AGE)
|
||||
libisoburn_libisoburn_la_SOURCES = \
|
||||
libisoburn/burn_wrap.c \
|
||||
libisoburn/data_source.c \
|
||||
libisoburn/isoburn.c \
|
||||
libisoburn/isoburn.h \
|
||||
libisoburn/isofs_wrap.c \
|
||||
libisoburn/libisoburn.h \
|
||||
version.h
|
||||
|
||||
libisoburn_libisoburn_la_LIBADD = \
|
||||
-lisofs \
|
||||
-lburn
|
||||
|
||||
libxorriso_libxorriso_la_LDFLAGS = \
|
||||
-version-info $(LT_CURRENT):$(LT_REVISION):$(LT_AGE)
|
||||
libxorriso_libxorriso_la_SOURCES = \
|
||||
xorriso/xorriso.h \
|
||||
xorriso/xorriso_private.h \
|
||||
xorriso/xorriso.c \
|
||||
xorriso/xorrisoburn.h \
|
||||
xorriso/xorrisoburn.c \
|
||||
xorriso/xorriso_timestamp.h \
|
||||
xorriso/xorriso_buildstamp.h \
|
||||
version.h
|
||||
|
||||
libxorriso_libxorriso_la_LIBADD = \
|
||||
-lisofs \
|
||||
-lburn \
|
||||
-lisoburn
|
||||
|
||||
libinclude_HEADERS = \
|
||||
libisoburn/libisoburn.h \
|
||||
xorriso/xorriso.h
|
||||
|
||||
## ========================================================================= ##
|
||||
|
||||
|
||||
# This is the reference application of libisoburn. See man xorriso/xorriso.1
|
||||
#
|
||||
bin_PROGRAMS = \
|
||||
xorriso/xorriso
|
||||
|
||||
# This looks quite ugly with make install: xorriso.c is compiled twice again
|
||||
#
|
||||
# Trying to create a build timestamp file
|
||||
#
|
||||
# BUILT_SOURCES = xorriso/xorriso_buildstamp.h
|
||||
#
|
||||
# phony targets get rebuilt every time
|
||||
#
|
||||
# .PHONY: xorriso/xorriso_buildstamp.h
|
||||
# xorriso/xorriso_buildstamp.h:
|
||||
# date -u '+#define Xorriso_build_timestamP "%Y.%m.%d.%H%M%S"' >xorriso/xorriso_buildstamp.h
|
||||
# cat xorriso/xorriso_buildstamp.h
|
||||
|
||||
xorriso_xorriso_CPPFLAGS = -Ilibisoburn
|
||||
xorriso_xorriso_CFLAGS = -DXorriso_with_maiN -DXorriso_without_subS \
|
||||
$(READLINE_DEF) $(LIBACL_DEF) $(XATTR_DEF) \
|
||||
$(EXTF_DEF) $(EXTF_SUID_DEF) $(ZLIB_DEF) \
|
||||
$(XORRISO_DVD_OBS_64K)
|
||||
|
||||
xorriso_xorriso_LDADD = libisoburn/libisoburn.la -lisofs -lburn \
|
||||
libxorriso/libxorriso.la \
|
||||
$(THREAD_LIBS) $(LIBBURN_ARCH_LIBS)
|
||||
|
||||
xorriso_xorriso_SOURCES = \
|
||||
xorriso/xorriso.h \
|
||||
xorriso/xorriso_private.h \
|
||||
xorriso/xorriso.c \
|
||||
xorriso/xorrisoburn.h \
|
||||
xorriso/xorriso_timestamp.h \
|
||||
xorriso/xorriso_buildstamp.h
|
||||
|
||||
# xorriso/xorrisoburn.c \
|
||||
#
|
||||
|
||||
# Install symbolic links to the xorriso binary
|
||||
#
|
||||
install-exec-hook:
|
||||
if test -e "$(DESTDIR)$(bindir)"/xorrisofs ; then rm "$(DESTDIR)$(bindir)"/xorrisofs ; else echo ; fi
|
||||
ln -s xorriso "$(DESTDIR)$(bindir)"/xorrisofs
|
||||
if test -e "$(DESTDIR)$(bindir)"/osirrox ; then rm "$(DESTDIR)$(bindir)"/osirrox ; else echo ; fi
|
||||
ln -s xorriso "$(DESTDIR)$(bindir)"/osirrox
|
||||
if test -e "$(DESTDIR)$(bindir)"/xorrecord ; then rm "$(DESTDIR)$(bindir)"/xorrecord ; else echo ; fi
|
||||
ln -s xorriso "$(DESTDIR)$(bindir)"/xorrecord
|
||||
|
||||
|
||||
# Alternative to the disabled .PHONY above.
|
||||
# Trying to create a build timestamp file semi-manually: make buildstamped
|
||||
#
|
||||
buildstamp:
|
||||
date -u '+#define Xorriso_build_timestamP "%Y.%m.%d.%H%M%S"' >xorriso/xorriso_buildstamp.h
|
||||
cat xorriso/xorriso_buildstamp.h
|
||||
|
||||
# For now make buildstamped has to be performed explicitely.
|
||||
buildstamped: buildstamp
|
||||
make
|
||||
|
||||
|
||||
|
||||
## Build test applications
|
||||
noinst_PROGRAMS = \
|
||||
test/compare_file
|
||||
|
||||
# A program to compare two files in mirrored trees in mounted filesystems
|
||||
# To compare tree /media/dvd and /original/dir :
|
||||
# find /media/dvd -exec test/compare_file '{}' /media/dvd /original/dir ';'
|
||||
#
|
||||
test_compare_file_CPPFLAGS =
|
||||
test_compare_file_CFLAGS =
|
||||
test_compare_file_LDADD =
|
||||
test_compare_file_SOURCES = test/compare_file.c
|
||||
|
||||
|
||||
## ========================================================================= ##
|
||||
|
||||
## Build documentation (You need Doxygen for this to work)
|
||||
webhost = http://libburn-api.pykix.org
|
||||
webpath = /
|
||||
docdir = $(DESTDIR)$(prefix)/share/doc/$(PACKAGE)-$(VERSION)
|
||||
|
||||
doc: doc/html
|
||||
|
||||
doc/html: doc/doxygen.conf
|
||||
if [ -f ./doc/doc.lock ]; then \
|
||||
$(RM) -r doc/html; \
|
||||
doxygen doc/doxygen.conf; \
|
||||
fi
|
||||
|
||||
doc-upload: doc/html
|
||||
scp -r $</* $(webhost):$(webpath)
|
||||
|
||||
all: doc
|
||||
|
||||
install-data-local:
|
||||
if [ -f ./doc/doc.lock ]; then \
|
||||
$(mkinstalldirs) $(docdir)/html; \
|
||||
$(INSTALL_DATA) doc/html/* $(docdir)/html; \
|
||||
fi
|
||||
|
||||
uninstall-local:
|
||||
rm -rf $(docdir)
|
||||
|
||||
## ========================================================================= ##
|
||||
|
||||
# Indent source files
|
||||
indent_files = \
|
||||
$(libisoburn_libisoburn_la_SOURCES)
|
||||
|
||||
|
||||
indent: $(indent_files)
|
||||
indent -bad -bap -nbbb -nbbo -nbc -bli0 -br -bls \
|
||||
-cdw -ce -cli0 -ncs -nbfda -i8 -l79 -lc79 \
|
||||
-lp -saf -sai -nprs -npsl -saw -sob -ss -ut \
|
||||
-sbi0 -nsc -ts8 -npcs -ncdb -fca \
|
||||
$^
|
||||
|
||||
.PHONY: indent
|
||||
|
||||
## ========================================================================= ##
|
||||
|
||||
# Extra things
|
||||
nodist_pkgconfig_DATA = \
|
||||
libisoburn-1.pc
|
||||
|
||||
man_MANS = xorriso/xorriso.1
|
||||
|
||||
EXTRA_DIST = \
|
||||
libisoburn-1.pc.in \
|
||||
version.h.in \
|
||||
doc/comments \
|
||||
doc/doxygen.conf.in \
|
||||
README \
|
||||
AUTHORS \
|
||||
CONTRIBUTORS \
|
||||
COPYRIGHT \
|
||||
COPYING \
|
||||
INSTALL \
|
||||
xorriso/changelog.txt \
|
||||
xorriso/xorriso_buildstamp_none.h \
|
||||
xorriso/README \
|
||||
$(man_MANS)
|
||||
|
1661
xorriso/xorriso.1
1661
xorriso/xorriso.1
File diff suppressed because it is too large
Load Diff
7427
xorriso/xorriso.c
7427
xorriso/xorriso.c
File diff suppressed because it is too large
Load Diff
@ -2,9 +2,9 @@
|
||||
/* Command line oriented batch and dialog tool which creates, loads,
|
||||
manipulates and burns ISO 9660 filesystem images.
|
||||
|
||||
Copyright 2007-2008 Thomas Schmitt, <scdbackup@gmx.net>
|
||||
Copyright 2007-2010 Thomas Schmitt, <scdbackup@gmx.net>
|
||||
|
||||
Provided under GPL version 2.
|
||||
Provided under GPL version 2 or later.
|
||||
|
||||
This file contains the public option interface of xorriso.
|
||||
*/
|
||||
@ -16,35 +16,191 @@
|
||||
struct XorrisO;
|
||||
|
||||
|
||||
#define Xorriso_program_versioN "0.5.0"
|
||||
#define Xorriso_program_patch_leveL ""
|
||||
|
||||
|
||||
/* --------------------- Fundamental Management ------------------- */
|
||||
|
||||
/* Create a new xorriso object and tell it the program name to be used
|
||||
|
||||
/* Get the version text (e.g. "0.4.2") of the program code.
|
||||
This may differ from Xorriso_program_versioN if xorriso is dynamically
|
||||
linked to an application.
|
||||
@param flag unused yet, submit 0
|
||||
@return readonly character string
|
||||
*/
|
||||
char *Xorriso__get_version_text(int flag);
|
||||
|
||||
|
||||
/* Get the patch level text (e.g. "" or ".pl01") of the program code.
|
||||
@param flag unused yet, submit 0
|
||||
@return readonly character string
|
||||
*/
|
||||
char *Xorriso__get_patch_level_text(int flag);
|
||||
|
||||
|
||||
/* Mandatory call:
|
||||
Create a new xorriso object and tell it the program name to be used
|
||||
with messages and for decision of special behavior.
|
||||
@param xorriso returns the newly created XorrisO object
|
||||
@param progname typically argv[0] of main(). Some leafnames of the progname
|
||||
path have special meaning and trigger special behavior:
|
||||
"osirrox" allows image-to-disk copying: -osirrox "on"
|
||||
"xorrisofs" activates permanent mkisofs emulation
|
||||
"xorrisofs" activates -as "mkisofs" emulation from start
|
||||
"genisofs" alias of "xorrisofs"
|
||||
"mkisofs" alias of "xorrisofs"
|
||||
"genisoimage" alias of "xorrisofs"
|
||||
@parm flag unused yet, submit 0
|
||||
"xorrecord" activates -as "cdrecord" emulation from start
|
||||
"cdrecord" alias of "xorrecord"
|
||||
"wodim" alias of "xorrecord"
|
||||
"cdrskin" alias of "xorrecord"
|
||||
@param flag unused yet, submit 0
|
||||
@return >0 success , <=0 failure, no object created
|
||||
*/
|
||||
int Xorriso_new(struct XorrisO ** xorriso, char *progname, int flag);
|
||||
|
||||
|
||||
/* Make global library initializations.
|
||||
/* Interpret certain commands which shall get into effect before the
|
||||
libraries get initialized:
|
||||
-abort_on , -report_about , -return_with , -list_delimiter
|
||||
Some commands get executed only if they are the only command in argv:
|
||||
-prog_help , -help , -no_rc
|
||||
Some get examined for the need to redirect stdout messages
|
||||
-dev , -outdev , -indev , -as
|
||||
@param xorriso The context object in which to perform the commands.
|
||||
@param argc Number of arguments.
|
||||
@param argv The arguments. argv[0] contains the program name.
|
||||
argv[1] to argv[argc-1] contain commands and parameters.
|
||||
@param idx Argument cursor. When this function is called, *idx must
|
||||
be at least 1, argv[*idx] must be to a command.
|
||||
*idx will iterate over commands and parameters until this
|
||||
function aborts or until argc is reached.
|
||||
@param flag bit0= do not interpret argv[1]
|
||||
@return <0 error
|
||||
0 end program
|
||||
1 ok, go on
|
||||
*/
|
||||
int Xorriso_prescan_args(struct XorrisO *xorriso, int argc, char **argv,
|
||||
int flag);
|
||||
|
||||
|
||||
/* Mandatory call:
|
||||
It has to be made before calling any function listed below this point.
|
||||
|
||||
Make global library initializations.
|
||||
This must be done with the first xorriso object that gets created and
|
||||
with the first xorriso object that gets created after Xorriso_destroy(,1).
|
||||
@param xorriso The context object.
|
||||
@param flag unused yet, submit 0
|
||||
@return <=0 error , >0 success
|
||||
*/
|
||||
int Xorriso_startup_libraries(struct XorrisO *xorriso, int flag);
|
||||
|
||||
|
||||
/* Destroy xorriso object when it is no longer needed.
|
||||
@param flag bit0= Make global librariy shutdown.
|
||||
Use only with last xorriso object to be destroyed.
|
||||
|
||||
/* Read and interpret commands from eventual startup files as listed in
|
||||
man xorriso.
|
||||
@param xorriso The context object in which to perform the commands.
|
||||
@param flag unused yet, submit 0
|
||||
@return <=0 = error
|
||||
1 = success
|
||||
3 = end program run (e.g. because command -end was encountered)
|
||||
*/
|
||||
int Xorriso_read_rc(struct XorrisO *xorriso, int flag);
|
||||
|
||||
|
||||
/* Check whether program arguments shall be backslash decoded and eventually
|
||||
replace *argv by a new argument vector. The old one will not be freed
|
||||
by this call. If it is dynamic memory then you need to keep a copy of
|
||||
the pointer and free it yourself after this call.
|
||||
@param xorriso The context object
|
||||
@param argc Number of arguments.
|
||||
@param argv The arguments. (*argv)[0] contains the program name.
|
||||
(*argv)[1] to (*argv)[argc-1] contain commands and parameters
|
||||
If argv after the call differs from argv before the call,
|
||||
then one should dispose it later by:
|
||||
for(i= 0; i < argc; i++)
|
||||
if(argv[i] != NULL)
|
||||
free(argv[i]);
|
||||
free(argv);
|
||||
@param flag unused yet, submit 0
|
||||
@return <= 0 error , > 0 success
|
||||
*/
|
||||
int Xorriso_program_arg_bsl(struct XorrisO *xorriso, int argc, char ***argv,
|
||||
int flag);
|
||||
|
||||
|
||||
/* Interpret argv as xorriso command options and their parameters.
|
||||
(An alternative is to call functions of the options API directly and to
|
||||
perform own error status evaluation. See below: Options API.)
|
||||
After the first command and its parameters there may be more commands and
|
||||
parameters. All parameters must be given in the same call as their command.
|
||||
@param xorriso The context object in which to perform the commands.
|
||||
@param argc Number of arguments.
|
||||
@param argv The arguments. argv[0] contains the program name.
|
||||
argv[1] to argv[argc-1] contain commands and parameters.
|
||||
@param idx Argument cursor. When this function is called, *idx must
|
||||
be at least 1, argv[*idx] must be a command.
|
||||
*idx will iterate over commands and parameters until this
|
||||
function aborts or until argc is reached.
|
||||
@param flag bit0= recursion
|
||||
bit1= these are the main() program start arguments
|
||||
@return <=0 = error
|
||||
1 = success
|
||||
2 = problem event ignored
|
||||
3 = end program run (e.g. because command -end was encountered)
|
||||
*/
|
||||
int Xorriso_interpreter(struct XorrisO *xorriso,
|
||||
int argc, char **argv, int *idx, int flag);
|
||||
|
||||
|
||||
/* Parse a command line into words and use them as argv for a call of
|
||||
Xorriso_interpreter(). Put out some info lines about the outcome.
|
||||
@param xorriso The context object in which to perform the commands.
|
||||
@param line A text of one or more words according to man xorriso
|
||||
paragraph "Command processing" up to and including
|
||||
"Backslash Interpretation".
|
||||
@param flag bit0 to bit15 are forwarded to Xorriso_interpreter()
|
||||
bit16= no pageing of info lines
|
||||
bit17= print === bar even if xorriso->found<0
|
||||
@return see return of Xorriso_interpreter()
|
||||
*/
|
||||
int Xorriso_execute_option(struct XorrisO *xorriso, char *line, int flag);
|
||||
|
||||
|
||||
/* Enter xorriso command line dialog mode, eventually using libreadline.
|
||||
This call returns immediately if not option -dialog "on" was performed
|
||||
before.
|
||||
@param xorriso The context object in which to perform the commands.
|
||||
@param flag unused yet, submit 0
|
||||
@return <=0 error, 1= dialog mode ended normally ,
|
||||
3= dialog mode ended normally,interpreter asks to end program
|
||||
*/
|
||||
int Xorriso_dialog(struct XorrisO *xorriso, int flag);
|
||||
|
||||
|
||||
/* Inquire whether option -commit would make sense.
|
||||
@param xorriso The context object to inquire.
|
||||
@param flag unused yet, submit 0
|
||||
@return 0= -commit would have nothing to do
|
||||
1= a new image session would emerge at -commit
|
||||
*/
|
||||
int Xorriso_change_is_pending(struct XorrisO *xorriso, int flag);
|
||||
|
||||
|
||||
/* Compute the exit value from the recorded maximum event severity.
|
||||
@param xorriso The context object to inquire.
|
||||
@param flag unused yet, submit 0
|
||||
@return The computed exit value
|
||||
*/
|
||||
int Xorriso_make_return_value(struct XorrisO *xorriso, int flag);
|
||||
|
||||
|
||||
/* Mandatory call:
|
||||
Destroy xorriso object when it is no longer needed.
|
||||
@param xorriso The context object to destroy. *xorriso will become NULL.
|
||||
@param flag bit0= Perform global library shutdown.
|
||||
Use only with last xorriso object to be destroyed.
|
||||
@return <=0 error, >0 success
|
||||
*/
|
||||
int Xorriso_destroy(struct XorrisO **xorriso, int flag);
|
||||
|
||||
@ -93,7 +249,7 @@ int Xorriso_msgs_submit_void(void *xorriso,
|
||||
/** Evaluate an advise whether to abort or whether to go on with option
|
||||
processing. This should be called after any option function was processed.
|
||||
It updates the problem status by processing the library message queues
|
||||
and then it uses this status and the submitted return value ot the
|
||||
and then it uses this status and the submitted return value of the
|
||||
option function to evaluate the situation.
|
||||
@param xorriso The environment handle
|
||||
@param ret The return value of the previously called option function
|
||||
@ -122,8 +278,7 @@ int Xorriso_set_problem_status(struct XorrisO *xorriso, char *severity,
|
||||
|
||||
|
||||
/* The next two functions are part of Xorriso_eval_problem_status().
|
||||
You may use them to build an own advisor function or to drain the
|
||||
library message queues more frequently.
|
||||
You may use them to build an own advisor function.
|
||||
*/
|
||||
|
||||
/** Obtain the current problem status of the xorriso handle.
|
||||
@ -141,7 +296,10 @@ int Xorriso_get_problem_status(struct XorrisO *xorriso, char severity[80],
|
||||
the severity of the library events like the severity of a message submitted
|
||||
via Xorriso_msgs_submit().
|
||||
xorriso sets the message queues of the libraries to queuing "ALL".
|
||||
So it is essential that they get drained regularly.
|
||||
Many inner functions of xorriso call Xorriso_process_msg_queues() on their
|
||||
own because they expect library output pending. Nevertheless, a loop of
|
||||
xorriso option calls should either call Xorriso_eval_problem_status() or
|
||||
Xorriso_process_msg_queues() with each cycle.
|
||||
@param xorriso The environment handle
|
||||
@param flag Unused yet. Submit 0.
|
||||
@return 1 on success, <=0 if failure
|
||||
@ -149,6 +307,23 @@ int Xorriso_get_problem_status(struct XorrisO *xorriso, char severity[80],
|
||||
int Xorriso_process_msg_queues(struct XorrisO *xorriso, int flag);
|
||||
|
||||
|
||||
/** Write a message for option -errfile_log.
|
||||
@param xorriso The environment handle
|
||||
@param error_code The unique error code of your message.
|
||||
Submit 0 if you do not have reserved error codes within
|
||||
the libburnia project.
|
||||
@param msg_text Not more than 8196 characters of message text.
|
||||
@param os_errno Eventual errno related to the message. Submit 0 if
|
||||
the message is not related to a operating system error.
|
||||
@param flag bit0-7= meaning of msg_text
|
||||
( 0= ERRFILE path , for internal use mainly )
|
||||
1= mark line text (only to be put out if enabled)
|
||||
@return <=0 error , >0 success
|
||||
*/
|
||||
int Xorriso_process_errfile(struct XorrisO *xorriso,
|
||||
int error_code, char msg_text[], int os_errno,
|
||||
int flag);
|
||||
|
||||
|
||||
/* The outlist stack allows to redirect the info and result messages from
|
||||
their normal channels into a pair of string lists which can at some
|
||||
@ -257,12 +432,27 @@ int Xorriso_lst_destroy_all(struct Xorriso_lsT **lstring, int flag);
|
||||
After each call to an option function, there should happen:
|
||||
Xorriso_eval_problem_status()
|
||||
One should follow its eventual advice to abort.
|
||||
|
||||
Options with a varying number of arguments get them passed like
|
||||
Xorriso_interpreter(). E.g.:
|
||||
int Xorriso_option_add(struct XorrisO *xorriso, int argc, char **argv,
|
||||
int *idx, int flag);
|
||||
They begin to read the arguments at position *idx and will see the list
|
||||
end either at the next argv which contains the -list_delimiter text or
|
||||
at argv[argc-1]. After the call, *idx will be the index of the first not
|
||||
yet interpreted argv.
|
||||
|
||||
*/
|
||||
|
||||
|
||||
/* Option -abort_on */
|
||||
int Xorriso_option_abort_on(struct XorrisO *xorriso, char *severity, int flag);
|
||||
|
||||
|
||||
/* Option -acl "on"|"off" */
|
||||
int Xorriso_option_acl(struct XorrisO *xorriso, char *mode, int flag);
|
||||
|
||||
|
||||
/* Option -add */
|
||||
/* @param flag bit0=do not report the added item
|
||||
bit1=do not reset pacifier, no final pacifier message
|
||||
@ -282,6 +472,28 @@ int Xorriso_option_alter_date(struct XorrisO *xorriso,
|
||||
char *time_type, char *timestring,
|
||||
int argc, char **argv, int *idx, int flag);
|
||||
|
||||
/* Option -application_id */
|
||||
int Xorriso_option_application_id(struct XorrisO *xorriso, char *name,
|
||||
int flag);
|
||||
|
||||
/* Option -as */
|
||||
/* @param flag bit0=do not report the added item
|
||||
bit1=do not reset pacifier, no final pacifier message
|
||||
*/
|
||||
int Xorriso_option_as(struct XorrisO *xorriso, int argc, char **argv,
|
||||
int *idx, int flag);
|
||||
|
||||
/* Option -assert_volid */
|
||||
int Xorriso_option_assert_volid(struct XorrisO *xorriso, char *pattern,
|
||||
char *severity, int flag);
|
||||
|
||||
/* Option -auto_charset "on"|"off" */
|
||||
int Xorriso_option_auto_charset(struct XorrisO *xorriso, char *mode, int flag);
|
||||
|
||||
/* Option -backslash_codes */
|
||||
int Xorriso_option_backslash_codes(struct XorrisO *xorriso, char *mode,
|
||||
int flag);
|
||||
|
||||
/* Option -ban_stdio_write */
|
||||
int Xorriso_option_ban_stdio_write(struct XorrisO *xorriso, int flag);
|
||||
|
||||
@ -295,12 +507,30 @@ int Xorriso_option_blank(struct XorrisO *xorriso, char *mode, int flag);
|
||||
int Xorriso_option_boot_image(struct XorrisO *xorriso, char *form,
|
||||
char *treatment, int flag);
|
||||
|
||||
/* Option -calm_drive */
|
||||
int Xorriso_option_calm_drive(struct XorrisO *xorriso, char *which, int flag);
|
||||
|
||||
/* Option -cd alias -cdi */
|
||||
int Xorriso_option_cdi(struct XorrisO *xorriso, char *iso_rr_path, int flag);
|
||||
|
||||
/* Option -cdx */
|
||||
int Xorriso_option_cdx(struct XorrisO *xorriso, char *disk_path, int flag);
|
||||
|
||||
/* Option -charset */
|
||||
/* @param flag bit0= set in_charset
|
||||
bit1= set out_charset
|
||||
*/
|
||||
int Xorriso_option_charset(struct XorrisO *xorriso, char *name, int flag);
|
||||
|
||||
/* Options -check_md5 and -check_md5_r
|
||||
@param flag bit0= issue summary message
|
||||
bit1= do not reset pacifier, no final pacifier message
|
||||
bit2= do not issue pacifier messages at all
|
||||
bit3= recursive: -check_md5_r
|
||||
*/
|
||||
int Xorriso_option_check_md5(struct XorrisO *xorriso,
|
||||
int argc, char **argv, int *idx, int flag);
|
||||
|
||||
/* Option -check_media */
|
||||
int Xorriso_option_check_media(struct XorrisO *xorriso,
|
||||
int argc, char **argv, int *idx, int flag);
|
||||
@ -381,12 +611,22 @@ int Xorriso_option_devices(struct XorrisO *xorriso, int flag);
|
||||
/* Option -dialog "on"|"off" */
|
||||
int Xorriso_option_dialog(struct XorrisO *xorriso, char *mode, int flag);
|
||||
|
||||
/* Option -disk_dev_ino "on"|"off" */
|
||||
int Xorriso_option_disk_dev_ino(struct XorrisO *xorriso, char *mode, int flag);
|
||||
|
||||
/* Option -disk_pattern "on"|"ls"|"off" */
|
||||
int Xorriso_option_disk_pattern(struct XorrisO *xorriso, char *mode, int flag);
|
||||
|
||||
/* Option -drive_class */
|
||||
int Xorriso_option_drive_class(struct XorrisO *xorriso,
|
||||
char *d_class, char *pattern, int flag);
|
||||
|
||||
/* Option -dummy "on"|"off" */
|
||||
int Xorriso_option_dummy(struct XorrisO *xorriso, char *mode, int flag);
|
||||
|
||||
/* Option -dvd_obs "default"|"32k"|"64k" */
|
||||
int Xorriso_option_dvd_obs(struct XorrisO *xorriso, char *obs, int flag);
|
||||
|
||||
/* Option -eject */
|
||||
/* @param flag bit0=do not report toc of eventually remaining drives
|
||||
*/
|
||||
@ -406,6 +646,10 @@ int Xorriso_option_errfile_log(struct XorrisO *xorriso,
|
||||
int Xorriso_option_error_behavior(struct XorrisO *xorriso,
|
||||
char *occasion, char *behavior, int flag);
|
||||
|
||||
/* Option -external_filter */
|
||||
int Xorriso_option_external_filter(struct XorrisO *xorriso,
|
||||
int argc, char **argv, int *idx, int flag);
|
||||
|
||||
/* Options -extract , -extract_single */
|
||||
/* @param flag bit0=do not report the restored item
|
||||
bit1=do not reset pacifier, no final pacifier message
|
||||
@ -432,12 +676,21 @@ int Xorriso_option_find(struct XorrisO *xorriso, int argc, char **argv,
|
||||
/* Option -fs */
|
||||
int Xorriso_option_fs(struct XorrisO *xorriso, char *size, int flag);
|
||||
|
||||
/* Option -getfacl alias -getfacli, -getfacl_r alias -getfacl_ri */
|
||||
/* @param flag bit0=recursive -getfacl_r
|
||||
*/
|
||||
int Xorriso_option_getfacli(struct XorrisO *xorriso,
|
||||
int argc, char **argv, int *idx, int flag);
|
||||
|
||||
/* Option -gid */
|
||||
int Xorriso_option_gid(struct XorrisO *xorriso, char *gid, int flag);
|
||||
|
||||
/* Option -grow_blindly */
|
||||
int Xorriso_option_grow_blindly(struct XorrisO *xorriso, char *msc2, int flag);
|
||||
|
||||
/* Option -hardlinks "on"|"off" */
|
||||
int Xorriso_option_hardlinks(struct XorrisO *xorriso, char *mode, int flag);
|
||||
|
||||
/* Option -help and part of -prog_help */
|
||||
int Xorriso_option_help(struct XorrisO *xorriso, int flag);
|
||||
|
||||
@ -458,6 +711,10 @@ int Xorriso_option_list_delimiter(struct XorrisO *xorriso, char *text,
|
||||
/* Option -list_formats */
|
||||
int Xorriso_option_list_formats(struct XorrisO *xorriso, int flag);
|
||||
|
||||
/* Option -list_profiles */
|
||||
int Xorriso_option_list_profiles(struct XorrisO *xorriso, char *which,
|
||||
int flag);
|
||||
|
||||
/* Option -load session|track|sbsector value */
|
||||
/* @param flag bit0= with adr_mode sbsector: adr_value is possibly 16 too high
|
||||
@return <=0 error , 1 success, 2 revoked by -reassure
|
||||
@ -508,10 +765,24 @@ int Xorriso_option_map_l(struct XorrisO *xorriso, int argc, char **argv,
|
||||
/* Option -mark */
|
||||
int Xorriso_option_mark(struct XorrisO *xorriso, char *mark, int flag);
|
||||
|
||||
/* Option -md5 */
|
||||
int Xorriso_option_md5(struct XorrisO *xorriso, char *mode, int flag);
|
||||
|
||||
/* Option -mkdir alias -mkdiri */
|
||||
int Xorriso_option_mkdiri(struct XorrisO *xorriso, int argc, char **argv,
|
||||
int *idx, int flag);
|
||||
|
||||
/* Options -mount , -mount_cmd , -session_string */
|
||||
/* @param bit0= -mount_cmd: print mount command to result channel rather
|
||||
than performing it
|
||||
bit1= perform -session_string rather than -mount_cmd
|
||||
*/
|
||||
int Xorriso_option_mount(struct XorrisO *xorriso, char *dev, char *adr_mode,
|
||||
char *adr, char *cmd, int flag);
|
||||
|
||||
/* Option -mount_opts option[:...] */
|
||||
int Xorriso_option_mount_opts(struct XorrisO *xorriso, char *mode, int flag);
|
||||
|
||||
/* Option -mv alias -mvi */
|
||||
int Xorriso_option_mvi(struct XorrisO *xorriso, int argc, char **argv,
|
||||
int *idx, int flag);
|
||||
@ -522,14 +793,15 @@ int Xorriso_option_no_rc(struct XorrisO *xorriso, int flag);
|
||||
/* Option -not_leaf */
|
||||
int Xorriso_option_not_leaf(struct XorrisO *xorriso, char *pattern, int flag);
|
||||
|
||||
/* Option -not_list */
|
||||
/* Option -not_list , -quoted_not_list */
|
||||
/* @param flag bit0= -quoted_not_list */
|
||||
int Xorriso_option_not_list(struct XorrisO *xorriso, char *adr, int flag);
|
||||
|
||||
/* Option -not_paths */
|
||||
int Xorriso_option_not_paths(struct XorrisO *xorriso, int argc, char **argv,
|
||||
int *idx, int flag);
|
||||
|
||||
/* Option -options_from_file*/
|
||||
/* Option -options_from_file */
|
||||
/* @return <=0 error , 1 = success , 3 = request to end program run */
|
||||
int Xorriso_option_options_from_file(struct XorrisO *xorriso, char *adr,
|
||||
int flag);
|
||||
@ -553,7 +825,8 @@ int Xorriso_option_page(struct XorrisO *xorriso, int len, int width, int flag);
|
||||
int Xorriso_option_paste_in(struct XorrisO *xorriso, char *iso_rr_path,
|
||||
char *disk_path, char *start, char *count, int flag);
|
||||
|
||||
/* Option -path-list */
|
||||
/* Option -path_list , -quoted_path_list */
|
||||
/* @param flag bit0= -quoted_path_list */
|
||||
int Xorriso_option_path_list(struct XorrisO *xorriso, char *adr, int flag);
|
||||
|
||||
/* Option -pathspecs */
|
||||
@ -579,6 +852,9 @@ int Xorriso_option_prog_help(struct XorrisO *xorriso, char *name, int flag);
|
||||
/* Option -publisher */
|
||||
int Xorriso_option_publisher(struct XorrisO *xorriso, char *name, int flag);
|
||||
|
||||
/* Option -pvd_info */
|
||||
int Xorriso_option_pvd_info(struct XorrisO *xorriso, int flag);
|
||||
|
||||
/* Option -pwd alias -pwdi */
|
||||
int Xorriso_option_pwdi(struct XorrisO *xorriso, int flag);
|
||||
|
||||
@ -588,6 +864,10 @@ int Xorriso_option_pwdx(struct XorrisO *xorriso, int flag);
|
||||
/* Option -reassure "on"|"tree"|"off" */
|
||||
int Xorriso_option_reassure(struct XorrisO *xorriso, char *mode, int flag);
|
||||
|
||||
/* Option -relax_compliance */
|
||||
int Xorriso_option_relax_compliance(struct XorrisO *xorriso, char *mode,
|
||||
int flag);
|
||||
|
||||
/* Option -report_about */
|
||||
int Xorriso_option_report_about(struct XorrisO *xorriso, char *severity,
|
||||
int flag);
|
||||
@ -614,9 +894,41 @@ int Xorriso_option_rollback(struct XorrisO *xorriso, int flag);
|
||||
int Xorriso_option_rom_toc_scan(struct XorrisO *xorriso, char *mode,
|
||||
int flag);
|
||||
|
||||
/* Option -scdbackup_tag */
|
||||
int Xorriso_option_scdbackup_tag(struct XorrisO *xorriso, char *list_path,
|
||||
char *record_name, int flag);
|
||||
/* Option -scsi_log */
|
||||
int Xorriso_option_scsi_log(struct XorrisO *xorriso, char *mode, int flag);
|
||||
|
||||
/* Option -session_log */
|
||||
int Xorriso_option_session_log(struct XorrisO *xorriso, char *path, int flag);
|
||||
|
||||
/* Option -setfacl_list alias -setfacl_listi */
|
||||
int Xorriso_option_setfacl_listi(struct XorrisO *xorriso, char *disk_path,
|
||||
int flag);
|
||||
|
||||
/* Option -setfacl alias -setfacli , -setfacl_r alias -setfacl_ri */
|
||||
/* @param flag bit0=recursive -setfacl_r
|
||||
*/
|
||||
int Xorriso_option_setfacli(struct XorrisO *xorriso, char *acl_text,
|
||||
int argc, char **argv, int *idx, int flag);
|
||||
|
||||
/* Options -setfattr alias -setfattri, -setfattr_r alias -setfattr_ri */
|
||||
/* @param flag bit0=recursive -setfattr_r
|
||||
*/
|
||||
int Xorriso_option_setfattri(struct XorrisO *xorriso, char *name, char *value,
|
||||
int argc, char **argv, int *idx, int flag);
|
||||
|
||||
/* Option -setfattr_list alias -setfattr_listi */
|
||||
int Xorriso_option_setfattr_listi(struct XorrisO *xorriso, char *path,
|
||||
int flag);
|
||||
|
||||
/* Options -set_filter , -set_filter_r */
|
||||
/* @param flag bit0=recursive -set_filter_r
|
||||
*/
|
||||
int Xorriso_option_set_filter(struct XorrisO *xorriso, char *name,
|
||||
int argc, char **argv, int *idx, int flag);
|
||||
|
||||
/* Option -speed */
|
||||
int Xorriso_option_speed(struct XorrisO *xorriso, char *speed, int flag);
|
||||
|
||||
@ -630,10 +942,16 @@ int Xorriso_option_status(struct XorrisO *xorriso, char *mode, int flag);
|
||||
int Xorriso_option_status_history_max(struct XorrisO *xorriso, int num1,
|
||||
int flag);
|
||||
|
||||
/* Option -stdio_sync "on"|"off"|size */
|
||||
int Xorriso_option_stdio_sync(struct XorrisO *xorriso, char *rythm, int flag);
|
||||
|
||||
/* Option -stream_recording */
|
||||
int Xorriso_option_stream_recording(struct XorrisO *xorriso, char *mode,
|
||||
int flag);
|
||||
|
||||
/* Option -system_id */
|
||||
int Xorriso_option_system_id(struct XorrisO *xorriso, char *name, int flag);
|
||||
|
||||
/* Option -tell_media_space */
|
||||
int Xorriso_option_tell_media_space(struct XorrisO *xorriso, int flag);
|
||||
|
||||
@ -647,6 +965,10 @@ int Xorriso_option_toc(struct XorrisO *xorriso, int flag);
|
||||
/* Option -uid */
|
||||
int Xorriso_option_uid(struct XorrisO *xorriso, char *uid, int flag);
|
||||
|
||||
/* Option -unregister_filter */
|
||||
int Xorriso_option_unregister_filter(struct XorrisO *xorriso, char *name,
|
||||
int flag);
|
||||
|
||||
/* Options -update and -update_r
|
||||
@param flag bit0= issue summary message
|
||||
bit1= do not reset pacifier, no final pacifier message
|
||||
@ -665,6 +987,15 @@ int Xorriso_option_version(struct XorrisO *xorriso, int flag);
|
||||
/* Option -volid */
|
||||
int Xorriso_option_volid(struct XorrisO *xorriso, char *volid, int flag);
|
||||
|
||||
/* Option -volset_id */
|
||||
int Xorriso_option_volset_id(struct XorrisO *xorriso, char *name, int flag);
|
||||
|
||||
/* Option -xattr "on"|"off" */
|
||||
int Xorriso_option_xattr(struct XorrisO *xorriso, char *mode, int flag);
|
||||
|
||||
/* Option -zisofs */
|
||||
int Xorriso_option_zisofs(struct XorrisO *xorriso, char *mode, int flag);
|
||||
|
||||
|
||||
#endif /* Xorriso_includeD */
|
||||
|
||||
|
@ -1,31 +1,33 @@
|
||||
<HTML>
|
||||
|
||||
<HEAD>
|
||||
<META NAME="description" CONTENT="xorriso, creates, loads, manipulates and writes ISO 9660 filesystem images with Rock Ridge extensions">
|
||||
<META NAME="keywords" CONTENT="xorriso, libburn, libburnia, burn, CD, DVD, ISO, ISO 9660, RockRidge, Rock Ridge, linux, recording, burning, CD-R, CD-RW, DVD-R, DVD-RW, DVD+RW, DVD+R, DVD+R DL, BD-RE, scdbackup">
|
||||
<META NAME="description" CONTENT="GNU xorriso, creates, loads, manipulates and writes ISO 9660 filesystem images with Rock Ridge extensions">
|
||||
<META NAME="keywords" CONTENT="xorriso, libburn, libburnia, burn, CD, DVD, ISO, ISO 9660, RockRidge, Rock Ridge, GNU/Linux, Linux, FreeBSD, recording, burning, CD-R, CD-RW, DVD-R, DVD-RW, DVD+RW, DVD+R, DVD+R DL, BD-RE, BD-R, scdbackup">
|
||||
<META NAME="robots" CONTENT="follow">
|
||||
<TITLE>xorriso homepage english</TITLE>
|
||||
<TITLE>GNU xorriso - GNU Project - Free Software Foundation</TITLE>
|
||||
<LINK rev="made" href="mailto:webmasters@gnu.org">
|
||||
</HEAD>
|
||||
|
||||
<BODY BGCOLOR="#F5DEB3" TEXT=#000000 LINK=#0000A0 VLINK=#800000>
|
||||
<BODY BGCOLOR="#F5DEB3" TEXT=#000000 LINK=#0000A0 VLINK=#800000 ALINK=#A000A0>
|
||||
<FONT SIZE=+1>
|
||||
|
||||
<CENTER>
|
||||
<P><H2> Homepage of </H2>
|
||||
<H1> xorriso </H1>
|
||||
<P>
|
||||
<H1>GNU xorriso</H1>
|
||||
|
||||
<H2>ISO 9660 Rock Ridge Filesystem Manipulator for Linux</H2>
|
||||
<H2>ISO 9660 Rock Ridge Filesystem Manipulator for GNU/Linux and FreeBSD</H2>
|
||||
</P>
|
||||
</CENTER>
|
||||
|
||||
<P>
|
||||
<H2>Purpose:</H2>
|
||||
xorriso maps file objects from POSIX compliant filesystems
|
||||
xorriso copies file objects from POSIX compliant filesystems
|
||||
into Rock Ridge enhanced ISO 9660 filesystems and allows
|
||||
session-wise manipulation of such filesystems. It can load the management
|
||||
information of existing ISO images and it writes the session results to
|
||||
optical media or to filesystem objects.
|
||||
<BR>
|
||||
Vice versa xorriso is able to restore file objects from ISO 9660 filesystems.
|
||||
Vice versa xorriso is able to copy file objects out of ISO 9660 filesystems.
|
||||
</P>
|
||||
<P>
|
||||
|
||||
@ -35,51 +37,53 @@ Vice versa xorriso is able to restore file objects from ISO 9660 filesystems.
|
||||
|
||||
<P>
|
||||
<H2>Hardware requirements:</H2>
|
||||
A CD/DVD/BD recorder suitable for
|
||||
<A HREF="http://libburnia-project.org">http://libburnia-project.org</A> <BR>
|
||||
(SCSI , ATA , USB , or SATA writers compliant to standard MMC-3 for CD
|
||||
and to MMC-5 for DVD or BD).
|
||||
About any CD, DVD, or BD recorder produced in the recent ten years.
|
||||
<BR>
|
||||
<A HREF="http://libburnia-project.org">libburn</A>
|
||||
supports recorders which are compliant to standards MMC-1 for CD and
|
||||
MMC-5 for DVD or BD.
|
||||
<BR>
|
||||
GNU/Linux and FreeBSD allow to access drives connected
|
||||
via SCSI, PATA (aka IDE, ATA), USB, or SATA.
|
||||
<BR>
|
||||
xorriso also operates on ISO images in data files or block devices.
|
||||
Images or add-on sessions may be written to about any kind of file object.
|
||||
</P>
|
||||
|
||||
<P>
|
||||
<H2>Software requirements :</H2>
|
||||
<DL>
|
||||
<DT>Linux with kernel 2.4 or higher (and libc, of course) :</DT>
|
||||
<DD>With kernel 2.4 an ATA drive has to be under ide-scsi emulation.</DD>
|
||||
<DD>With kernel 2.6 the drive should not be under ide-scsi.</DD>
|
||||
<DT>libpthread</DT>
|
||||
<DD>is supposed to be a standard system component.</DD>
|
||||
<DT>libreadline and libreadline-dev</DT>
|
||||
<DD>are optional and eventually make dialog more convenient.</DD>
|
||||
</DL>
|
||||
</P>
|
||||
|
||||
<P>
|
||||
<H2>
|
||||
GPL software included:<BR>
|
||||
</H2>
|
||||
<DL>
|
||||
<DT>libburn-0.5.3</DT>
|
||||
<DD>reads and writes data from and to CD, DVD, BD-RE.</DD>
|
||||
<DD>(founded by Derek Foreman and Ben Jansens,
|
||||
developed and maintained since August 2006 by
|
||||
Thomas Schmitt from team of libburnia-project.org)</DD>
|
||||
<DT>libisofs-0.6.8</DT>
|
||||
<DD>operates on ISO 9660 filesystem images.</DD>
|
||||
<DD>(By Vreixo Formoso and Mario Danic from team of libburnia-project.org)</DD>
|
||||
<DT>libisoburn-0.2.6</DT>
|
||||
<DD>coordinates libburn and libisofs, emulates multi-session where needed.</DD>
|
||||
<DD>(By Vreixo Formoso and Thomas Schmitt
|
||||
from team of libburnia-project.org)</DD>
|
||||
</DL>
|
||||
<DD>The source code of this software is independent of
|
||||
cdrecord and mkisofs.</A>
|
||||
<DT>GNU/Linux with kernel 2.4 or higher, libc, libpthread :</DT>
|
||||
<DD>With kernel 2.4 a PATA/IDE drive has to be under ide-scsi emulation.</DD>
|
||||
<DD>With kernel 2.6 ide-scsi is not needed.</DD>
|
||||
<DT>or FreeBSD, libc, libpthread :</DT>
|
||||
<DD>PATA/IDE and SATA drives need atapicam running.</DD>
|
||||
<DD>libcam has to be installed.</DD>
|
||||
<DD>libiconv has to be installed.</DD>
|
||||
<DT>or some other X/Open system, libc, libpthread :</DT>
|
||||
<DD>
|
||||
There will be no direct operation of optical drives, but only POSIX i/o
|
||||
with objects of the local filesystem.
|
||||
</DD>
|
||||
<DD>
|
||||
Might work with DVD-RAM, DVD+RW, BD-RE
|
||||
but rather not with CD, DVD-R, DVD+R, BD-R.
|
||||
</DD>
|
||||
</DL>
|
||||
|
||||
<H3>Optional supporting software:</H2>
|
||||
<DL>
|
||||
<DT>libreadline and libreadline-dev</DT>
|
||||
<DD>eventually make dialog more convenient.</DD>
|
||||
<DT>libacl and libacl-devel</DT>
|
||||
<DD>eventually allow on GNU/Linux to get and set ACLs.</DD>
|
||||
<DT>zlib and zlib-devel</DT>
|
||||
<DD>eventually allow zisofs and gzip compression.</DD>
|
||||
</DL>
|
||||
</P>
|
||||
|
||||
<P>
|
||||
This program system has been tested on Intel/AMD Linux systems only.<BR>
|
||||
This program has been tested on GNU/Linux, FreeBSD, and Solaris systems.<BR>
|
||||
For ports to other usable systems <A HREF="#contact">contact us</A>.
|
||||
</P>
|
||||
|
||||
@ -89,13 +93,13 @@ For ports to other usable systems <A HREF="#contact">contact us</A>.
|
||||
<H2>Special features:</H2>
|
||||
<UL>
|
||||
<LI>
|
||||
ISO 9660 formatter and burner for CD, DVD, BD-RE are fixely integrated.
|
||||
ISO 9660 formatter and burner for CD, DVD, BD are fixely integrated.
|
||||
</LI>
|
||||
<LI>
|
||||
Operates on an existing ISO image or creates a new one.
|
||||
</LI>
|
||||
<LI>
|
||||
Copies files from filesystem into the ISO image.
|
||||
Copies files from filesystem into the ISO image and vice versa.
|
||||
</LI>
|
||||
<LI>
|
||||
Changes file properties, renames or deletes file objects in the ISO image.
|
||||
@ -104,21 +108,27 @@ Changes file properties, renames or deletes file objects in the ISO image.
|
||||
Updates ISO subtrees incrementally to match given disk subtrees.
|
||||
</LI>
|
||||
<LI>
|
||||
Can record and restore hard link relations, ACL, and xattr.
|
||||
</LI>
|
||||
<LI>
|
||||
Can attach MD5 checksums to each data file and the whole session.
|
||||
</LI>
|
||||
<LI>
|
||||
File content may get zisofs or gzip compressed or filtered by external
|
||||
processes.
|
||||
</LI>
|
||||
<LI>
|
||||
Writes result as completely new image or as add-on session
|
||||
to optical media or filesystem objects.
|
||||
</LI>
|
||||
|
||||
<!--
|
||||
<LI>
|
||||
Can activate ISOLINUX boot images via El Torito.
|
||||
Can activate ISOLINUX boot images by El Torito boot record.
|
||||
</LI>
|
||||
-->
|
||||
|
||||
<LI>
|
||||
Can perform multi-session tasks as emulation of mkisofs and cdrecord.
|
||||
</LI>
|
||||
<LI>
|
||||
Can restore single files and whole trees from ISO image to disk filesystem.
|
||||
Can issue commands to mount older sessions on GNU/Linux or FreeBSD.
|
||||
</LI>
|
||||
<LI>
|
||||
Can check media for damages and copy readable blocks to disk.
|
||||
@ -128,7 +138,7 @@ Scans for optical drives, blanks re-useable optical media, formats media.
|
||||
</LI>
|
||||
<LI>
|
||||
Suitable for:
|
||||
CD-R, CD-RW, DVD-R, DVD-RW, DVD+R, DVD+R DL, DVD+RW, DVD-RAM, BD-RE.
|
||||
CD-R, CD-RW, DVD-R, DVD-RW, DVD+R, DVD+R DL, DVD+RW, DVD-RAM, BD-R, BD-RE.
|
||||
</LI>
|
||||
<LI>
|
||||
Reads its instructions from command line arguments, dialog, and batch files.
|
||||
@ -136,9 +146,6 @@ Reads its instructions from command line arguments, dialog, and batch files.
|
||||
<LI>
|
||||
Provides navigation commands for interactive ISO image manipulation.
|
||||
</LI>
|
||||
<LI>
|
||||
Adjustable thresholds for abort, exit value, and problem reporting.
|
||||
</LI>
|
||||
|
||||
</UL>
|
||||
</P>
|
||||
@ -146,6 +153,7 @@ Adjustable thresholds for abort, exit value, and problem reporting.
|
||||
<P>
|
||||
<H2>Command Examples:</H2>
|
||||
<DL>
|
||||
|
||||
<DT>Get an overview of drives and their addresses</DT>
|
||||
<DD>#<KBD> xorriso -devices</KBD></DD>
|
||||
<DD><KBD>...</KBD></DD>
|
||||
@ -181,7 +189,7 @@ eventually prepare yet unused BD-RE:</DT>
|
||||
<DD>$<KBD> xorriso -dev /dev/sr0 -add /home/me/sounds /home/me/pictures
|
||||
</KBD></DD>
|
||||
|
||||
<DT>Check the result:</DT>
|
||||
<DT>Have a look at the result:</DT>
|
||||
<DD>$<KBD> xorriso -indev /dev/sr0 -du / -- -toc 2>&1 | less</KBD></DD>
|
||||
|
||||
<DT>
|
||||
@ -243,16 +251,21 @@ Important: -indev and -outdev have to be different drives.
|
||||
</DT>
|
||||
|
||||
<DT>Dialog mode accepts one or more options per line. An option and all its
|
||||
arguments have to be given in one single line. Command -end stops the program
|
||||
run. It will write eventually pending changes to media, if that has not
|
||||
already been done by a previous -commit.</DT>
|
||||
arguments have to be given in one single line. Backslash may be used to mark
|
||||
a line as incomplete so it gets continued by the next input line.
|
||||
<BR>
|
||||
Command -end stops the program run. It will write eventually pending changes
|
||||
to media, if that has not already been done by a previous -commit.</DT>
|
||||
<DD>$<KBD> xorriso -dialog on</KBD></DD>
|
||||
<DD><KBD>enter option and arguments :</KBD></DD>
|
||||
<DD><KBD><B>-dev /dev/sr0</B></KBD></DD>
|
||||
<DD><KBD>enter option and arguments :</KBD></DD>
|
||||
<DD><KBD><B>-map /home/me/prepared_for_dvd/sounds_dummy /sounds</B></KBD></DD>
|
||||
<DD><KBD>enter option and arguments :</KBD></DD>
|
||||
<DD><KBD><B>-map /home/me/prepared_for_dvd/movies /movies</B></KBD></DD>
|
||||
<DD><KBD><B>-map /home/me/prepared_for_dvd/movies \</B></KBD></DD>
|
||||
<DD><KBD>Trailing backslash : Enter rest of line (or @@@ to clear it) :
|
||||
</KBD></DD>
|
||||
<DD><KBD><B> /movies</B></KBD></DD>
|
||||
<DD>Available navigation commands: -cd, -ls, -du, -find</DD>
|
||||
<DD><KBD>enter option and arguments :</KBD></DD>
|
||||
<DD><KBD><B>-commit</B></KBD></DD>
|
||||
@ -264,40 +277,109 @@ already been done by a previous -commit.</DT>
|
||||
<HR>
|
||||
</DT>
|
||||
|
||||
<DT>The following command can be run on blank media to create a
|
||||
copy of the mentioned disk directory trees, and it can be run on appendable
|
||||
media to perform a minimal set of change operations which update the
|
||||
old ISO copies to match the new disk trees.
|
||||
Older states can be retrieved by help of mount option "session=" from CD-R[W],
|
||||
by help of "sbsector=" from other media.
|
||||
So this constitutes true incremental backup.
|
||||
<DT>The following command performs incremental backup.
|
||||
It can be run on blank media to create a copy of the mentioned disk
|
||||
directory trees, and it can be run on appendable media to perform a
|
||||
minimal set of change operations which update the old ISO copies
|
||||
to match the new disk trees.
|
||||
Older states can be retrieved by help of mount options like "sbsector="
|
||||
or by help of xorriso option -mount.
|
||||
<BR>
|
||||
The copies will be complete, except all file names ending
|
||||
with ".o" or ".swp" which are excluded by options -not_leaf.
|
||||
Eventual ACL, xattr and hardlink relations will be recorded. MD5 checksums
|
||||
will be computed and recorded. Data comparison will be avoided by accelerator
|
||||
option -disk_dev_ino. After writing, the new session will be checked
|
||||
by its recorded MD5.
|
||||
<BR>
|
||||
Only blank media or media with volume id "PROJECTS_MAIL_..." will be accepted.
|
||||
Files with names ending by ".o" or ".swp" are excluded by options -not_leaf.
|
||||
</DT>
|
||||
<DD>$<KBD> xorriso -dev /dev/sr0 \</KBD></DD>
|
||||
<DD>$<KBD> xorriso -for_backup -disk_dev_ino on \</KBD></DD>
|
||||
<DD><KBD> -assert_volid 'PROJECTS_MAIL_*' FATAL \</KBD></DD>
|
||||
<DD><KBD> -dev /dev/sr0 \</KBD></DD>
|
||||
<DD><KBD> -volid PROJECTS_MAIL_"$(date '+%Y_%m_%d_%H%M%S')" \</KBD></DD>
|
||||
<DD><KBD> -not_leaf '*.o' -not_leaf '*.swp' \</KBD></DD>
|
||||
<DD><KBD> -update_r /home/thomas/open_source_projects /open_source_projects \</KBD></DD>
|
||||
<DD><KBD> -update_r /home/thomas/projects /projects \</KBD></DD>
|
||||
<DD><KBD> -update_r /home/thomas/personal_mail /personal_mail \</KBD></DD>
|
||||
<DD><KBD> -commit -toc -eject all</KBD></DD>
|
||||
<DD><KBD> -commit -toc -check_md5 FAILURE -- -eject all</KBD></DD>
|
||||
|
||||
<DT>
|
||||
To apply zisofs compression to those data files which get newly copied from
|
||||
the local filesystem, perform immediately before -commit :
|
||||
<DD><KBD> -hardlinks perform_update \</KBD></DD>
|
||||
<DD>
|
||||
<KBD> -find / -type f -pending_data -exec set_filter --zisofs -- \</KBD></DD>
|
||||
</DD>
|
||||
</DT>
|
||||
|
||||
<DT>
|
||||
<HR>
|
||||
</DT>
|
||||
|
||||
<DT>
|
||||
Operating systems usually mount the most recent session on media.
|
||||
xorriso can issue the appropriate mount commands for older sessions.
|
||||
First get an overview of the sessions on the media:
|
||||
</DT>
|
||||
<DD>$<KBD> xorriso -outdev /dev/sr0 -toc</KBD></DD>
|
||||
<PRE>
|
||||
TOC layout : Idx , sbsector , Size , Volume Id
|
||||
ISO session : 1 , 0 , 104719s , PROJECTS_MAIL_2008_08_10_231435
|
||||
ISO session : 2 , 106928 , 6785s , PROJECTS_MAIL_2008_08_14_184548
|
||||
...
|
||||
ISO session : 76 , 820384 , 11035s , PROJECTS_MAIL_2009_01_04_191150
|
||||
</PRE>
|
||||
|
||||
<DT>
|
||||
Then become superuser and let xorriso mount the session of August 14, 2008
|
||||
to directory /mnt:
|
||||
</DT>
|
||||
<DD>#<KBD>
|
||||
xorriso -osirrox on -mount /dev/sr0 volid '*_2008_08_14_*' /mnt
|
||||
</KBD></DD>
|
||||
<DT>
|
||||
To be later unmounted by: <KBD>umount /mnt</KBD>
|
||||
</DT>
|
||||
|
||||
<DT>
|
||||
<HR>
|
||||
</DT>
|
||||
|
||||
<DT>
|
||||
After the user has already created a suitable file tree on disk
|
||||
and copied the ISOLINUX files into subdirectory ./boot/isolinux of
|
||||
that tree, xorriso can burn an El Torito bootable media:
|
||||
</DT>
|
||||
<DD>$<KBD> xorriso -outdev /dev/sr0 -blank as_needed \</KBD></DD>
|
||||
<DD><KBD> -map /home/me/ISOLINUX_prepared_tree / \</KBD></DD>
|
||||
<DD><KBD> -boot_image isolinux dir=/boot/isolinux</KBD></DD>
|
||||
<DT>
|
||||
An additional MBR is generated if the file isolinux.bin is modern enough
|
||||
(syslinux version 3.72) and ready for "isohybrid". An MBR enables booting
|
||||
from hard disk or USB stick.
|
||||
<HR>
|
||||
</DT>
|
||||
|
||||
<DT>ISO images may not only be stored on optical media but also in
|
||||
regular disk files or block devices for full multi-session operation.
|
||||
The prefix "stdio:" indicates that normal file operations are
|
||||
desired rather than MMC drive commands:
|
||||
</DT>
|
||||
<DD>$<KBD> xorriso -dev stdio:/tmp/regular_file ...other.options...</DD>
|
||||
<DD>$<KBD> xorriso -dev /tmp/regular_file ...other.options...</DD>
|
||||
<DT>
|
||||
A default setting for safety reasons requires that files below /dev/
|
||||
need prefix "stdio:" if they do not lead to MMC burner devices.
|
||||
Be cautious not to overwrite your hard disk instead of your USB stick:
|
||||
</DT>
|
||||
<DD>$<KBD> xorriso -dev stdio:/dev/sdb ...other.options...</DD>
|
||||
|
||||
<DT>Other file types are suitable only for writing but not for reading:</DT>
|
||||
<DD>$<KBD> xorriso -outdev stdio:/tmp/named_pipe ...other.options...</DD>
|
||||
<DD>$<KBD> xorriso -outdev /tmp/named_pipe ...other.options...</DD>
|
||||
|
||||
<DT>In batch mode it is possible to operate xorriso in a pipeline
|
||||
with an external consumer of the generated ISO image. Any message
|
||||
output will be redirected to stderr in this case.</DT>
|
||||
output will be redirected to stderr in this case.
|
||||
Examples for consumers are cdrecord or growisofs on operating systems
|
||||
where xorriso cannot operate the burner drive directly,
|
||||
or a ssh pipe to another system which has the desired drive
|
||||
and a suitable burn program.</DT>
|
||||
<DD>$<KBD> xorriso -outdev - ...other.options... | consumer</KBD></DD>
|
||||
|
||||
|
||||
@ -322,14 +404,18 @@ One may switch from mkisofs emulation to xorriso's own command mode:
|
||||
<HR>
|
||||
</DT>
|
||||
|
||||
<DT>Enable reverse operation of xorriso and copy some files and a tree to disk:
|
||||
<DD>$<KBD> xorriso -indev /dev/sr0 \</KBD></DD>
|
||||
<DT>If for any reason the reading operating system mishandles the ISO image
|
||||
or some files in it, one may enable reverse operation of xorriso and copy
|
||||
files or trees to disk:
|
||||
<DD>$<KBD> xorriso -acl on -xattr on \</KBD></DD>
|
||||
<DD><KBD> -indev /dev/sr0 \</KBD></DD>
|
||||
<DD><KBD> -osirrox on \</KBD></DD>
|
||||
<DD><KBD> -cpx /pictures/private/horses*/*buttercup* \</KBD></DD>
|
||||
<DD><KBD> -cpx '/pictures/private/horses*/*buttercup*' \</KBD></DD>
|
||||
<DD><KBD> /home/her/buttercup_dir -- \</KBD>
|
||||
<DD><KBD> -extract /sounds /home/her/sounds_from_me</KBD></DD>
|
||||
</DD>
|
||||
|
||||
<DT>Consider to enter dialog mode and use commands like
|
||||
<KBD>-cd , -du , -lsl , -find<KBD>.
|
||||
<DT>
|
||||
<HR>
|
||||
</DT>
|
||||
@ -342,10 +428,6 @@ One may switch from mkisofs emulation to xorriso's own command mode:
|
||||
<DD>$<KBD> <A HREF="man_1_xorriso.html">man xorriso</A></KBD></DD>
|
||||
</DL>
|
||||
|
||||
|
||||
Testers wanted who are willing to risk some double layer DVD media or
|
||||
are interested in using BD-R media.
|
||||
|
||||
</P>
|
||||
|
||||
<HR>
|
||||
@ -353,8 +435,14 @@ are interested in using BD-R media.
|
||||
<P>
|
||||
<DL>
|
||||
<DT><H3>Download as source code (see README):</H3></DT>
|
||||
<DD><A HREF="xorriso-0.2.6.pl01.tar.gz">xorriso-0.2.6.pl01.tar.gz</A>
|
||||
(1050 KB).
|
||||
<DD><A HREF="xorriso-0.5.0.tar.gz">xorriso-0.5.0.tar.gz</A>
|
||||
(1370 KB).
|
||||
<DD>(Released 22 Feb 2010)</DD>
|
||||
</DD>
|
||||
<DD>
|
||||
Also on <A HREF="http://www.gnu.org/prep/ftp.html">
|
||||
mirrors of ftp://ftp.gnu.org/gnu/ </A>
|
||||
as xorriso/xorriso-0.5.0.tar.gz
|
||||
</DD>
|
||||
</DL>
|
||||
</DD>
|
||||
@ -367,12 +455,14 @@ are interested in using BD-R media.
|
||||
<A NAME="contact"></A>
|
||||
<DL><DT>Contact:</DT>
|
||||
<DD>Thomas Schmitt, <A HREF="mailto:scdbackup@gmx.net">scdbackup@gmx.net</A></DD>
|
||||
<DD>libburn development mailing list,
|
||||
<DD>GNU xorriso support mailing list,
|
||||
<A HREF="mailto:bug-xorriso@gnu.org">bug-xorriso@gnu.org</A></DD>
|
||||
<DD>libburnia development mailing list,
|
||||
<A HREF="mailto:libburn-hackers@pykix.org">libburn-hackers@pykix.org</A></DD>
|
||||
</DL>
|
||||
<DL><DT>License:</DT>
|
||||
<DD><A HREF="COPYING_xorriso">GPL version 2</A>,
|
||||
an <A HREF="http://www.opensource.org/">Open Source</A> approved license</DD>
|
||||
<DD><A HREF="COPYING_xorriso">GPL version 3 or later.</A>
|
||||
</DD>
|
||||
<DD> </DD>
|
||||
</DL>
|
||||
</P>
|
||||
@ -380,65 +470,110 @@ an <A HREF="http://www.opensource.org/">Open Source</A> approved license</DD>
|
||||
<HR>
|
||||
|
||||
<P>
|
||||
Bug fixes towards xorriso-0.2.6.pl00:
|
||||
Bug fixes towards xorriso-0.4.8.pl00:
|
||||
<UL>
|
||||
<LI>A potential buffer overflow has been fixed</LI>
|
||||
</UL>
|
||||
</P>
|
||||
|
||||
<P>
|
||||
Bug fixes towards xorriso-0.2.4.pl00:
|
||||
<UL>
|
||||
|
||||
<LI>-format full did not re-format already formatted DVD+RW</LI>
|
||||
|
||||
<LI>
|
||||
Regression in libisofs introduced with xorriso-0.4.2:
|
||||
-boot_image isolinux patch could lead to SIGSEGV
|
||||
</LI>
|
||||
<LI>
|
||||
On FreeBSD: xorriso could leave the drive tray locked
|
||||
</LI>
|
||||
<LI>
|
||||
On FreeBSD: Piped input was falsely attributed a small fixed size
|
||||
</LI>
|
||||
<LI>
|
||||
xorriso -update_r could lead to SIGSEGV if applied to a data file
|
||||
</LI>
|
||||
<!--
|
||||
<LI>- none -</LI>
|
||||
-->
|
||||
|
||||
</UL>
|
||||
</P>
|
||||
|
||||
<!--
|
||||
<P>
|
||||
Enhancements towards previous stable version xorriso-0.2.4.pl00:
|
||||
Bug fixes towards xorriso-0.4.8.pl00:
|
||||
<UL>
|
||||
|
||||
<LI>Capability to insert and extract files far larger than 4 GB</LI>
|
||||
<LI>New option -file_size_limit, -as mkisofs now supports -iso-level 1 to 3
|
||||
<LI>
|
||||
</LI>
|
||||
<LI>New option -extract_cut to retrieve data from oversized files</LI>
|
||||
<LI>New option -check_media_defaults</LI>
|
||||
<LI>New -error_behavior "file_extraction" behavior "best_effort"</LI>
|
||||
<LI>New option -list_delimiter</LI>
|
||||
|
||||
</UL>
|
||||
</P>
|
||||
-->
|
||||
|
||||
<P>
|
||||
Enhancements towards previous stable version xorriso-0.4.8.pl00:
|
||||
<UL>
|
||||
<LI>Transition of documentation and program messages towards GNU xorriso</LI>
|
||||
<LI>
|
||||
New option -scsi_log
|
||||
</LI>
|
||||
<!--
|
||||
<LI>- none -</LI>
|
||||
-->
|
||||
</UL>
|
||||
</P>
|
||||
|
||||
<HR>
|
||||
|
||||
<P>
|
||||
<H3>
|
||||
Libburnia software copies included in GNU xorriso:
|
||||
</H3>
|
||||
<DL>
|
||||
<DT>
|
||||
GNU xorriso is feature-wise equivalent to the dynamic compilation of
|
||||
<A HREF="http://libburnia-project.org/"> libburnia </A>
|
||||
libraries and libburnia program xorriso.
|
||||
It restricts itself to a technical form where the legal commitments of the
|
||||
libburnia project and the legal intentions of
|
||||
<A HREF="http://www.fsf.org/"> FSF </A> match completely.
|
||||
</DT>
|
||||
<DD> </DD>
|
||||
<DT>libburn-0.7.7</DT>
|
||||
<DD>reads and writes data from and to CD, DVD, BD.</DD>
|
||||
<DD>(founded by Derek Foreman and Ben Jansens,
|
||||
developed and maintained since August 2006 by
|
||||
Thomas Schmitt from team of libburnia-project.org)</DD>
|
||||
<DT>libisofs-0.6.29</DT>
|
||||
<DD>operates on ISO 9660 filesystem images.</DD>
|
||||
<DD>(By Vreixo Formoso, Mario Danic and Thomas Schmitt
|
||||
from team of libburnia-project.org)</DD>
|
||||
<DT>libisoburn-0.5.0</DT>
|
||||
<DD>coordinates libburn and libisofs, emulates multi-session where needed,
|
||||
and hosts the original source code of program xorriso.</DD>
|
||||
<DD>(By Vreixo Formoso and Thomas Schmitt
|
||||
from team of libburnia-project.org)</DD>
|
||||
<DD> </DD>
|
||||
<DT>The source code of this software is independent of
|
||||
cdrecord and mkisofs.</DT>
|
||||
</DL>
|
||||
</P>
|
||||
|
||||
<HR>
|
||||
|
||||
<P>
|
||||
<DL>
|
||||
<DT><H3>Development snapshot, version 0.2.7 :</H3></DT>
|
||||
<DD>Bug fixes towards xorriso-0.2.6.pl00:
|
||||
<DT><H3>Development snapshot, version 0.5.1 :</H3></DT>
|
||||
<DD>Bug fixes towards xorriso-0.5.0:
|
||||
<UL>
|
||||
<LI>A potential buffer overflow has been fixed</LI>
|
||||
<LI>-as mkisofs -iso-level was accused to be an unknown option</LI>
|
||||
<!--
|
||||
<LI>- none yet -</LI>
|
||||
<!--
|
||||
-->
|
||||
</UL>
|
||||
</DD>
|
||||
<DD>Enhancements towards stable version 0.2.6.pl00:
|
||||
<DD>Enhancements towards stable version 0.5.0:
|
||||
<UL>
|
||||
<LI>Ability to write and maintain bootable ISO images based on ISOLINUX</LI>
|
||||
<!--
|
||||
|
||||
<LI>- none yet -</LI>
|
||||
<!--
|
||||
-->
|
||||
</UL>
|
||||
</DD>
|
||||
<DD> </DD>
|
||||
<DD><A HREF="README_xorriso_devel">README 0.2.7</A>
|
||||
<DD><A HREF="xorriso_help_devel">xorriso_0.2.7 -help</A></DD>
|
||||
<DD><A HREF="man_1_xorriso_devel.html">man xorriso (as of 0.2.7)</A></DD>
|
||||
<DD><A HREF="README_xorriso_devel">README 0.5.1</A>
|
||||
<DD><A HREF="xorriso_help_devel">xorriso_0.5.1 -help</A></DD>
|
||||
<DD><A HREF="man_1_xorriso_devel.html">man xorriso (as of 0.5.1)</A></DD>
|
||||
<DD> </DD>
|
||||
<DT>If you want to distribute development versions of xorriso, then use
|
||||
this tarball which produces static linking between xorriso and the
|
||||
@ -448,8 +583,8 @@ libburnia libraries.
|
||||
installation see README)
|
||||
</DD>
|
||||
<DD>
|
||||
<A HREF="xorriso-0.2.7.tar.gz">xorriso-0.2.7.tar.gz</A>
|
||||
(1050 KB).
|
||||
<A HREF="xorriso-0.5.1.tar.gz">xorriso-0.5.1.tar.gz</A>
|
||||
(1370 KB).
|
||||
</DD>
|
||||
<DT>A dynamically linked development version of xorriso can be obtained
|
||||
from repositories of
|
||||
@ -464,7 +599,9 @@ versions for dynamic linking. Only release versions are safe for that.
|
||||
</KBD></DD>
|
||||
<DD>Install: <KBD><B>cd libburn ; ./bootstrap ; ./configure --prefix /usr ; make ; make install</B>
|
||||
</KBD></DD>
|
||||
<DD>Download: <KBD><B>bzr branch lp:libisofs</B></KBD></DD>
|
||||
<DD>Download:
|
||||
<KBD><B>bzr branch lp:~libburnia-team/libisofs/scdbackup</B></KBD>
|
||||
</DD>
|
||||
<DD>Install: <KBD><B>cd libisofs ; ./bootstrap ; ./configure --prefix /usr ; make ; make install</B>
|
||||
</KBD></DD>
|
||||
<DD>Download: <KBD><B>svn co http://svn.libburnia-project.org/libisoburn/trunk libisoburn</B>
|
||||
@ -490,39 +627,48 @@ Very special thanks to Andy Polyakov whose
|
||||
provide the libburnia project with invaluable examples on how to deal
|
||||
with DVD media and how to emulate multi-session on overwriteable media.
|
||||
</P>
|
||||
|
||||
<HR>
|
||||
|
||||
|
||||
<P>
|
||||
<CENTER><FONT SIZE=+0>
|
||||
<!-- <A NAME="bottom" HREF="main_ger.html#bottom">deutsch (german)</A>
|
||||
<BR><BR>
|
||||
-->
|
||||
<BR><BR>
|
||||
<FONT SIZE=+0>Enjoying free Open Source hosting by <A HREF="http://www.webframe.org">www.webframe.org</A><BR>
|
||||
<A HREF="http://www.webframe.org">
|
||||
<IMG SRC="msfree.gif" ALT="100 % Microsoft free" BORDER=0></A><BR>
|
||||
and by <A HREF="http://sourceforge.net">sourceforge.net</A><BR>
|
||||
<A href="http://sourceforge.net">
|
||||
<IMG src="sflogo-88-1.png" BORDER="0" ALT="SourceForge Logo"></A>
|
||||
<!-- on sourceforge use : <IMG src="http://sourceforge.net/sflogo.php?group_id=16010" width="88" height="31" border="0" alt="SourceForge Logo"></A> -->
|
||||
<FONT SIZE=+0>Enjoying free hosting by<BR>
|
||||
<A HREF="http://www.gnu.org">www.gnu.org</A><BR>
|
||||
<A HREF="http://www.webframe.org">www.webframe.org</A><BR>
|
||||
<A HREF="http://sourceforge.net">sourceforge.net</A><BR>
|
||||
|
||||
Enjoying a FreeBSD shell account with the opportunity to
|
||||
build, install and test xorriso at<BR>
|
||||
<A HREF="http://www.en.free-shells.com.ar">free-shells.com.ar</A>
|
||||
</FONT></CENTER>
|
||||
</P>
|
||||
|
||||
<HR>
|
||||
<DL>
|
||||
<DT>Links to my other published software projects :</DT>
|
||||
<DT>Links to related free software projects of Thomas Schmitt:</DT>
|
||||
<DD><A HREF=http://scdbackup.webframe.org/cdrskin_eng.html>
|
||||
cdrskin, a cdrecord emulator</A></DD>
|
||||
<DD><A HREF=http://scdbackup.webframe.org/main_eng.html>
|
||||
scdbackup, multi volume CD backup</A></DD>
|
||||
scdbackup, multi volume CD/DVD/BD backup</A></DD>
|
||||
<DL><DD><A HREF=http://scdbackup.sourceforge.net/main_eng.html>
|
||||
(a second source of above)</A></DD></DL>
|
||||
<DD><A HREF=http://stic.sourceforge.net>Some Tools for Image Collectors</A></DD>
|
||||
<DD><A HREF=http://scdbackup.webframe.org/pppoem>
|
||||
pppoem, a DSL throughput monitor (mainly for Linux kernel 2.4)</A></DD>
|
||||
</DL>
|
||||
<BR>
|
||||
Legal statement: This website does not serve any commercial purpose.
|
||||
<BR><BR>
|
||||
Legal statement: This website does not serve any commercial purpose.<BR>
|
||||
<BR><BR>
|
||||
Copyright © 2008 - 2010 Thomas Schmitt.
|
||||
<BR>
|
||||
This text is freely distributable. It shall only be modified in sync with
|
||||
the factual properties of xorriso and its public storage locations.
|
||||
If you make use of the license to derive modified versions of xorriso
|
||||
then you are entitled to modify this text under that same license.
|
||||
<DL>
|
||||
<DT>Contact for issues of this web page or the described program:</DT>
|
||||
<DD>Thomas Schmitt, <A HREF="mailto:scdbackup@gmx.net">scdbackup@gmx.net</A></DD>
|
||||
<DD>GNU xorriso support mailing list,
|
||||
<A HREF="mailto:bug-xorriso@gnu.org">bug-xorriso@gnu.org</A></DD>
|
||||
<DD>libburnia development mailing list,
|
||||
<A HREF="mailto:libburn-hackers@pykix.org">libburn-hackers@pykix.org</A></DD>
|
||||
</DL>
|
||||
</FONT>
|
||||
</BODY>
|
||||
</HTML>
|
||||
|
@ -1,4 +1,11 @@
|
||||
pkgconfigdir=$(libdir)/pkgconfig
|
||||
|
||||
# Copyright (c) 2007 - 2010 Thomas Schmitt <scdbackup@gmx.net>
|
||||
# Provided under GPL version 2 or later.
|
||||
|
||||
# ts A90315 : LIBBURNIA_PKGCONFDIR is defined OS specific in acinclude.m4
|
||||
# was: pkgconfigdir=$(libdir)/pkgconfig
|
||||
pkgconfigdir=$(LIBBURNIA_PKGCONFDIR)
|
||||
|
||||
libincludedir=
|
||||
|
||||
lib_LTLIBRARIES =
|
||||
@ -16,9 +23,13 @@ xorriso_xorriso_CPPFLAGS = -I./libburn -I./libisofs -I./libisoburn -I./xorriso
|
||||
|
||||
# No readline in the vanilla version because the necessary headers
|
||||
# are in a separate readline-development package.
|
||||
xorriso_xorriso_CFLAGS = -DXorriso_standalonE -DXorriso_with_maiN -DXorriso_with_regeX $(READLINE_DEF)
|
||||
xorriso_xorriso_CFLAGS = -DXorriso_standalonE -DXorriso_with_maiN \
|
||||
$(READLINE_DEF) $(LIBACL_DEF) $(XATTR_DEF) \
|
||||
$(EXTF_DEF) $(EXTF_SUID_DEF) $(ZLIB_DEF) \
|
||||
$(LIBCDIO_DEF) \
|
||||
$(XORRISO_DVD_OBS_64K) $(LIBBURN_O_DIRECT_DEF)
|
||||
|
||||
xorriso_xorriso_LDADD = $(THREAD_LIBS)
|
||||
xorriso_xorriso_LDADD = $(THREAD_LIBS) $(LIBBURN_ARCH_LIBS)
|
||||
|
||||
|
||||
# This looks quite ugly with make install: xorriso.c is compiled twice again
|
||||
@ -50,9 +61,9 @@ xorriso_xorriso_SOURCES = \
|
||||
libisoburn/burn_wrap.c \
|
||||
libisoburn/data_source.c \
|
||||
\
|
||||
libisofs/libisofs.h \
|
||||
libisofs/builder.h \
|
||||
libisofs/builder.c \
|
||||
libisofs/error.h \
|
||||
libisofs/node.h \
|
||||
libisofs/node.c \
|
||||
libisofs/tree.h \
|
||||
@ -64,7 +75,6 @@ xorriso_xorriso_SOURCES = \
|
||||
libisofs/fsource.h \
|
||||
libisofs/fsource.c \
|
||||
libisofs/fs_local.c \
|
||||
libisofs/fs_image.h \
|
||||
libisofs/fs_image.c \
|
||||
libisofs/messages.h \
|
||||
libisofs/messages.c \
|
||||
@ -83,6 +93,7 @@ xorriso_xorriso_SOURCES = \
|
||||
libisofs/ecma119_tree.h \
|
||||
libisofs/ecma119_tree.c \
|
||||
libisofs/writer.h \
|
||||
libisofs/buffer.h \
|
||||
libisofs/buffer.c \
|
||||
libisofs/rockridge.h \
|
||||
libisofs/rockridge.c \
|
||||
@ -95,26 +106,34 @@ xorriso_xorriso_SOURCES = \
|
||||
libisofs/find.c \
|
||||
libisofs/filter.h \
|
||||
libisofs/filter.c \
|
||||
libisofs/filters/xor_encrypt.c \
|
||||
libisofs/filters/external.c \
|
||||
libisofs/filters/zisofs.c \
|
||||
libisofs/filters/gzip.c \
|
||||
libisofs/system_area.h \
|
||||
libisofs/system_area.c \
|
||||
libisofs/make_isohybrid_mbr.c \
|
||||
libisofs/aaip_0_2.h \
|
||||
libisofs/aaip_0_2.c \
|
||||
libisofs/md5.h \
|
||||
libisofs/md5.c \
|
||||
\
|
||||
libburn/async.c \
|
||||
libburn/async.h \
|
||||
libburn/back_hacks.h \
|
||||
libburn/cleanup.c \
|
||||
libburn/cleanup.h \
|
||||
libburn/crc.c \
|
||||
libburn/crc.h \
|
||||
libburn/debug.c \
|
||||
libburn/debug.h \
|
||||
libburn/drive.c \
|
||||
libburn/drive.h \
|
||||
libburn/ecma130ab.c \
|
||||
libburn/ecma130ab.h \
|
||||
libburn/error.h \
|
||||
libburn/file.c \
|
||||
libburn/file.h \
|
||||
libburn/init.c \
|
||||
libburn/init.h \
|
||||
libburn/lec.c \
|
||||
libburn/lec.h \
|
||||
libburn/libburn.h \
|
||||
libburn/libdax_audioxtr.h \
|
||||
libburn/libdax_audioxtr.c \
|
||||
@ -151,6 +170,9 @@ xorriso_xorriso_SOURCES = \
|
||||
\
|
||||
version.h
|
||||
|
||||
# Disabled because unneeded and of unclear ancestry
|
||||
# libburn/crc.c
|
||||
|
||||
noinst_PROGRAMS = \
|
||||
test/compare_file
|
||||
|
||||
@ -206,8 +228,8 @@ indent: $(indent_files)
|
||||
## ========================================================================= ##
|
||||
|
||||
# Extra things
|
||||
nodist_pkgconfig_DATA = \
|
||||
xorriso.pc
|
||||
# nodist_pkgconfig_DATA = \
|
||||
# xorriso.pc
|
||||
|
||||
man_MANS = xorriso/xorriso.1
|
||||
|
||||
@ -222,6 +244,18 @@ EXTRA_DIST = \
|
||||
INSTALL \
|
||||
xorriso/changelog.txt \
|
||||
xorriso/xorriso_buildstamp_none.h \
|
||||
$(man_MANS)
|
||||
|
||||
|
||||
$(man_MANS) \
|
||||
doc/susp_aaip_2_0.txt \
|
||||
doc/susp_aaip_isofs_names.txt \
|
||||
doc/zisofs_format.txt \
|
||||
libisofs/aaip-os-dummy.c \
|
||||
libisofs/aaip-os-linux.c \
|
||||
libisofs/aaip-os-freebsd.c \
|
||||
libburn/os-dummy.h \
|
||||
libburn/os-freebsd.h \
|
||||
libburn/os-libcdio.h \
|
||||
libburn/os-linux.h \
|
||||
libburn/sg-dummy.c \
|
||||
libburn/sg-freebsd.c \
|
||||
libburn/sg-libcdio.c \
|
||||
libburn/sg-linux.c
|
||||
|
@ -2,9 +2,9 @@
|
||||
/* Command line oriented batch and dialog tool which creates, loads,
|
||||
manipulates and burns ISO 9660 filesystem images.
|
||||
|
||||
Copyright 2007-2008 Thomas Schmitt, <scdbackup@gmx.net>
|
||||
Copyright 2007-2010 Thomas Schmitt, <scdbackup@gmx.net>
|
||||
|
||||
Provided under GPL version 2.
|
||||
Provided under GPL version 2 or later.
|
||||
|
||||
This file contains inner declarations of xorriso.
|
||||
The public interface is in xorriso.h
|
||||
@ -18,8 +18,6 @@
|
||||
#ifndef Xorriso_private_includeD
|
||||
#define Xorriso_private_includeD yes
|
||||
|
||||
#define Xorriso_program_versioN "0.2.7"
|
||||
|
||||
/** The source code release timestamp */
|
||||
#include "xorriso_timestamp.h"
|
||||
#ifndef Xorriso_timestamP
|
||||
@ -34,11 +32,7 @@
|
||||
#define Xorriso_build_timestamP "-none-given-"
|
||||
#endif
|
||||
|
||||
|
||||
/* Because regex_t is mentioned in struct XorrisO */
|
||||
#ifdef Xorriso_with_regeX
|
||||
#include <regex.h>
|
||||
#endif /* Xorriso_with_regeX */
|
||||
|
||||
|
||||
#define Smem_malloC malloc
|
||||
@ -103,7 +97,46 @@ struct XorrisO { /* the global context of xorriso */
|
||||
|
||||
/* >>> put libisofs aspects here <<< */
|
||||
|
||||
int ino_behavior; /* bit0= at image load time:
|
||||
Do not load PX inode numbers but generate new
|
||||
unique ones for all loaded IsoNode.
|
||||
bit1= at image generation time:
|
||||
Do not consolidate suitable nodes to hardlinks.
|
||||
bit2= at restore-to-disk time:
|
||||
Do not consolidate suitable nodes to hardlinks.
|
||||
bit3= with update:
|
||||
Do not try to detect hardlink splits and joinings.
|
||||
bit4= with extract:
|
||||
Do not create or use hln arrays if sort_lba_on
|
||||
*/
|
||||
|
||||
int do_joliet;
|
||||
|
||||
int do_aaip; /* bit0= ACL in
|
||||
bit1= ACL out
|
||||
bit2= EA in
|
||||
bit3= EA out
|
||||
bit4= record dev,inode per node, isofs_st_out in root
|
||||
bit5= check dev,inode,isofs_st_in
|
||||
bit6= omit content check if bit5 check is conclusive
|
||||
bit7= omit dev check with bit5
|
||||
bit8= store output charset in xattr "isofs.cs"
|
||||
bit9= allow to set input charset from xattr "isofs.cs"
|
||||
*/
|
||||
|
||||
int do_md5; /* bit0= read MD5 array
|
||||
bit1= write session MD5
|
||||
bit2= write MD5 for each data file
|
||||
bit3= make file content stability check by double reading
|
||||
bit4= use recorded MD5 as proxy of ISO file
|
||||
*/
|
||||
|
||||
char scdbackup_tag_name[81];
|
||||
char scdbackup_tag_time[19];
|
||||
char scdbackup_tag_written[512];
|
||||
char scdbackup_tag_listname[SfileadrL];
|
||||
|
||||
int relax_compliance; /* opaque bitfield to be set by xorrisoburn */
|
||||
int do_follow_pattern;
|
||||
int do_follow_param;
|
||||
int do_follow_links;
|
||||
@ -117,14 +150,28 @@ struct XorrisO { /* the global context of xorriso */
|
||||
mode_t global_dir_mode;
|
||||
mode_t global_file_mode;
|
||||
|
||||
struct Xorriso_lsT *filters;
|
||||
int filter_list_closed;
|
||||
|
||||
int zlib_level;
|
||||
int zlib_level_default;
|
||||
int zisofs_block_size;
|
||||
int zisofs_block_size_default;
|
||||
int zisofs_by_magic;
|
||||
|
||||
int do_overwrite; /* 0=off, 1=on, 2=nondir */
|
||||
int do_reassure; /* 0=off, 1=on, 2=tree */
|
||||
|
||||
char volid[33];
|
||||
int volid_default;
|
||||
char loaded_volid[33];
|
||||
char assert_volid[SfileadrL];
|
||||
char assert_volid_sev[80];
|
||||
|
||||
char publisher[129];
|
||||
char application_id[129];
|
||||
char system_id[33];
|
||||
char volset_id[129];
|
||||
|
||||
char session_logfile[SfileadrL];
|
||||
int session_lba;
|
||||
@ -132,10 +179,16 @@ struct XorrisO { /* the global context of xorriso */
|
||||
|
||||
/* >>> put libburn/isoburn aspects here */
|
||||
|
||||
struct Xorriso_lsT *drive_blacklist;
|
||||
struct Xorriso_lsT *drive_greylist;
|
||||
struct Xorriso_lsT *drive_whitelist;
|
||||
|
||||
int toc_emulation_flag; /* bit0= bit3 for isoburn_drive_aquire()
|
||||
scan -ROM profiles for ISO sessions
|
||||
bit1= bit4 for isoburn_drive_aquire()
|
||||
do not emulate TOC on overwriteable media
|
||||
bit2= bit7 for isoburn_drive_aquire()
|
||||
pretend any media to be -ROM
|
||||
*/
|
||||
|
||||
int image_start_mode; /* From what address to load the ISO image
|
||||
@ -155,22 +208,37 @@ struct XorrisO { /* the global context of xorriso */
|
||||
*/
|
||||
char image_start_value[81]; /* value according image_start_mode */
|
||||
|
||||
int drives_exclusive; /* burn_preset_device_open() param exclusive */
|
||||
|
||||
int do_calm_drive; /* bit0= calm down drive after aquiring it */
|
||||
|
||||
char indev[SfileadrL];
|
||||
void *in_drive_handle; /* interpreted only by xorrisoburn.c */
|
||||
void *in_volset_handle; /* interpreted only by xorrisoburn.c */
|
||||
char *in_charset; /* The charset to interpret the filename bytes */
|
||||
int indev_is_exclusive;
|
||||
|
||||
time_t isofs_st_out; /* A time point at least 1 second before image
|
||||
composition began. To be stored with image as
|
||||
xattr "isofs.st". */
|
||||
time_t isofs_st_in; /* That time point as read from "isofs.st" of the
|
||||
loaded image. */
|
||||
|
||||
int volset_change_pending; /* whether -commit would make sense */
|
||||
int no_volset_present; /* set to 1 on first failure */
|
||||
|
||||
struct CheckmediajoB *check_media_default;
|
||||
int check_media_bad_limit; /* values defined as Xorriso_read_quality_* */
|
||||
struct SectorbitmaP *in_sector_map; /* eventual sector validity bitmap */
|
||||
|
||||
|
||||
char outdev[SfileadrL];
|
||||
void *out_drive_handle; /* interpreted only by xorrisoburn.c */
|
||||
char *out_charset; /* The charset to produce the filename bytes for */
|
||||
int dev_fd_1; /* The fd which substitutes for /dev/fd/1 and is
|
||||
connected to externaly perveived stdout.
|
||||
*/
|
||||
int outdev_is_exclusive;
|
||||
|
||||
int grow_blindly_msc2; /* if >= 0 this causes growing from drive to drive.
|
||||
The value is used as block address offset for
|
||||
@ -183,7 +251,16 @@ struct XorrisO { /* the global context of xorriso */
|
||||
int speed; /* in libburn units : 1000 bytes/second , 0 = Max, -1 = Min */
|
||||
int fs; /* fifo size in 2048 byte chunks : at most 1 GB */
|
||||
int padding; /* number of bytes to add after ISO 9660 image */
|
||||
int do_stream_recording;
|
||||
|
||||
int alignment; /* if > 0 : image size alignment in 2048 byt blocks */
|
||||
/* <<< not sure whether to keep this after libisofs will have
|
||||
learned to pad up MBR images to full MB */
|
||||
|
||||
int do_stream_recording; /* 0=no, 1=yes, 2=for data, not for dir
|
||||
>=16 means yes with number as start LBA */
|
||||
|
||||
int dvd_obs; /* DVD write chunk size: 0, 32k or 64k */
|
||||
int stdio_sync; /* stdio fsync interval: -1, 0, >=32 */
|
||||
|
||||
int keep_boot_image;
|
||||
int patch_isolinux_image;
|
||||
@ -194,21 +271,51 @@ struct XorrisO { /* the global context of xorriso */
|
||||
*/
|
||||
char boot_image_cat_path[SfileadrL];
|
||||
off_t boot_image_load_size;
|
||||
int boot_image_isohybrid; /* 0=off , 1=auto , 2=on , 3=force */
|
||||
|
||||
/* LBA of boot image after image loading */
|
||||
int loaded_boot_bin_lba;
|
||||
/* Path of the catalog node after image loading */
|
||||
char loaded_boot_cat_path[SfileadrL];
|
||||
|
||||
/* XORRISO options */
|
||||
int allow_graft_points;
|
||||
|
||||
int allow_restore; /* 0= disallowed, 1=allowed, 2=device files allowed */
|
||||
int allow_restore; /* -1=permanently disallowed
|
||||
0=disallowed, 1=allowed, 2=device files allowed */
|
||||
int do_concat_split; /* 1= restore complete split file directories as
|
||||
regular files
|
||||
*/
|
||||
int do_auto_chmod; /* 1= eventually temporarily open access permissions
|
||||
of self-owned directories during restore
|
||||
*/
|
||||
int do_restore_sort_lba; /* 1= restore via node_array rather than via
|
||||
tree traversal. Better read performance,
|
||||
no directory mtime restore, needs do_auto_chmod
|
||||
*/
|
||||
int mount_opts_flag; /* bit0= "shared" = not "exclusive"
|
||||
Try to emit non-exclusive mount command.
|
||||
Do not give up drives.
|
||||
Linux: use loop device even on block devices
|
||||
in order to circumvent the ban to mount a
|
||||
device twice (with different sbsector=)
|
||||
FreeBSD: ?
|
||||
*/
|
||||
|
||||
int dialog; /* 0=off , 1=single-line , 2=multi-line */
|
||||
|
||||
int bsl_interpretation;
|
||||
/* whether to run input through Sfile_bsl_interpreter():
|
||||
bit0-1= dialog and quoted file reading
|
||||
0= no interpretation, leave unchanged
|
||||
1= only inside double quotes
|
||||
2= outside single quotes
|
||||
3= everywhere
|
||||
bit2-3= reserved as future expansion of bit0-1
|
||||
bit4= interpretation within program start arguments
|
||||
bit5= perform backslash encoding with results
|
||||
bit6= perform backslash encoding with info texts
|
||||
*/
|
||||
|
||||
/* Pattern matching facility. It still carries legacy from scdbackup/askme.c
|
||||
but is fully functional for xorriso.
|
||||
@ -261,6 +368,8 @@ struct XorrisO { /* the global context of xorriso */
|
||||
|
||||
int status_history_max; /* for -status long_history */
|
||||
|
||||
/* 0= no logging of SCSI commands, 1= to stderr */
|
||||
int scsi_log;
|
||||
|
||||
char report_about_text[20];
|
||||
int report_about_severity;
|
||||
@ -284,10 +393,8 @@ struct XorrisO { /* the global context of xorriso */
|
||||
char eternal_problem_status_text[20];
|
||||
|
||||
/* temporary search facilities */
|
||||
#ifdef Xorriso_with_regeX
|
||||
regex_t *re;
|
||||
regmatch_t match[1];
|
||||
#endif /* Xorriso_with_regeX */
|
||||
char **re_constants;
|
||||
int re_count;
|
||||
int re_fill;
|
||||
@ -320,6 +427,38 @@ struct XorrisO { /* the global context of xorriso */
|
||||
void *pacifier_fifo;
|
||||
|
||||
int find_compare_result; /* 1=everything matches , 0=mismatch , -1=error */
|
||||
int find_check_md5_result; /* bit0= seen mismatch
|
||||
bit1= seen error
|
||||
bit2= seen data file without MD5
|
||||
bit3= seen match
|
||||
*/
|
||||
|
||||
/* Tree node collection and LBA sorting facility */
|
||||
int node_counter;
|
||||
int node_array_size;
|
||||
void **node_array;
|
||||
struct Xorriso_lsT *node_disk_prefixes;
|
||||
struct Xorriso_lsT *node_img_prefixes;
|
||||
|
||||
/* Hardlink matching at restore time memorizes hardlink target paths.
|
||||
Array of nodes sorted by LBA. */
|
||||
int hln_count;
|
||||
void **hln_array;
|
||||
void **hln_targets;
|
||||
int hln_change_pending; /* whether a change was made since hln creation */
|
||||
|
||||
/* >>> this should count all temp_mem and thus change its name */
|
||||
off_t node_targets_availmem;
|
||||
|
||||
/* Hardlink matching at update time:
|
||||
Array of all nodes in the tree, sorted by disk dev,ino.
|
||||
Bitmap of nodes which possibly got new hardlink siblings.
|
||||
List of involved disk-iso path pairs. */
|
||||
int di_count;
|
||||
void **di_array;
|
||||
char *di_do_widen;
|
||||
struct Xorriso_lsT *di_disk_paths;
|
||||
struct Xorriso_lsT *di_iso_paths;
|
||||
|
||||
struct PermiteM *perm_stack; /* Temporarily altered dir access permissions */
|
||||
|
||||
@ -344,11 +483,6 @@ int Xorriso_info(struct XorrisO *xorriso, int flag);
|
||||
|
||||
int Xorriso_request_confirmation(struct XorrisO *xorriso, int flag);
|
||||
|
||||
int Xorriso_prescan_args(struct XorrisO *xorriso, int argc, char **argv,
|
||||
int flag);
|
||||
|
||||
int Xorriso_execute_option(struct XorrisO *xorriso, char *line, int flag);
|
||||
|
||||
/* @return 0=match , else no match
|
||||
*/
|
||||
int Xorriso_regexec(struct XorrisO *xorriso, char *to_match, int *failed_at,
|
||||
@ -357,7 +491,7 @@ int Xorriso_regexec(struct XorrisO *xorriso, char *to_match, int *failed_at,
|
||||
int Xorriso_prepare_expansion_pattern(struct XorrisO *xorriso, char *pattern,
|
||||
int flag);
|
||||
|
||||
int Xorriso__mode_to_perms(mode_t st_mode, char perms[10], int flag);
|
||||
int Xorriso__mode_to_perms(mode_t st_mode, char perms[11], int flag);
|
||||
|
||||
int Xorriso_much_too_long(struct XorrisO *xorriso, int len, int flag);
|
||||
|
||||
@ -435,6 +569,10 @@ int Xorriso_pacifier_callback(struct XorrisO *xorriso, char *what_done,
|
||||
off_t count, off_t todo, char *current_object,
|
||||
int flag);
|
||||
|
||||
int Xorriso_pfx_disk_path(struct XorrisO *xorriso, char *iso_path,
|
||||
char *iso_prefix, char *disk_prefix,
|
||||
char disk_path[SfileadrL], int flag);
|
||||
|
||||
/* @param boss_iter Opaque handle to be forwarded to actions in ISO image
|
||||
Set to NULL if calling this function from outside ISO world
|
||||
@param flag bit0= update rather than compare
|
||||
@ -475,6 +613,11 @@ int Xorriso_lsx_filev(struct XorrisO *xorriso, char *wd,
|
||||
int Xorriso_rmx(struct XorrisO *xorriso, off_t boss_mem, char *path, int flag);
|
||||
|
||||
|
||||
/* @param flag bit7= return 4 if restore fails from denied permission
|
||||
do not issue error message
|
||||
@return <=0 failure , 1 success ,
|
||||
4 with bit7: permission to create file was denied
|
||||
*/
|
||||
int Xorriso_make_tmp_path(struct XorrisO *xorriso, char *orig_path,
|
||||
char *tmp_path, int *fd, int flag);
|
||||
|
||||
@ -485,8 +628,24 @@ int Xorriso_make_tmp_path(struct XorrisO *xorriso, char *orig_path,
|
||||
int Xorriso_reassure_restore(struct XorrisO *xorriso, char *path, int flag);
|
||||
|
||||
|
||||
/* @param flag bit0= change regardless of xorriso->do_auto_chmod
|
||||
bit1= desired is only rx
|
||||
*/
|
||||
int Xorriso_auto_chmod(struct XorrisO *xorriso, char *disk_path, int flag);
|
||||
|
||||
int Xorriso_make_accessible(struct XorrisO *xorriso, char *disk_path,int flag);
|
||||
|
||||
/* @param flag bit0= prefer to find a match after *img_prefixes
|
||||
(but deliver img_prefixes if no other can be found)
|
||||
*/
|
||||
int Xorriso_make_restore_path(struct XorrisO *xorriso,
|
||||
struct Xorriso_lsT **img_prefixes, struct Xorriso_lsT **disk_prefixes,
|
||||
char img_path[SfileadrL], char disk_path[SfileadrL], int flag);
|
||||
|
||||
int Xorriso_restore_make_hl(struct XorrisO *xorriso,
|
||||
char *old_path, char *new_path, int flag);
|
||||
|
||||
|
||||
int Xorriso_protect_stdout(struct XorrisO *xorriso, int flag);
|
||||
|
||||
|
||||
@ -501,56 +660,10 @@ int Xorriso_spotlist_to_sectormap(struct XorrisO *xorriso,
|
||||
int Xorriso_toc_to_string(struct XorrisO *xorriso, char **toc_text, int flag);
|
||||
|
||||
|
||||
struct Xorriso_lsT {
|
||||
char *text;
|
||||
struct Xorriso_lsT *prev,*next;
|
||||
};
|
||||
|
||||
/** Create a new list item with arbitrary byte content.
|
||||
@param lstring The newly created object or NULL on failure
|
||||
@param data An array of bytes to be copied into the new object
|
||||
@param data_len Number of bytes to be copied
|
||||
@param link Xorriso_lsT object to which the new object shall be linked
|
||||
@param flag Bitfield for control purposes
|
||||
bit0= insert before link rather than after it
|
||||
bit1= do not copy data (e.g. because *data is invalid)
|
||||
@return <=0 error, 1 ok
|
||||
/* @param flag bit0+1= what to aquire after giving up outdev
|
||||
0=none, 1=indev, 2=outdev, 3=both
|
||||
*/
|
||||
int Xorriso_lst_new_binary(struct Xorriso_lsT **lstring, char *data,
|
||||
int data_len, struct Xorriso_lsT *link, int flag);
|
||||
|
||||
|
||||
/** Create a new list item with a 0-terminated text as content.
|
||||
@param lstring The newly created object or NULL on failure
|
||||
@param text A 0-terminated array of bytes
|
||||
@param link Xorriso_lsT object to which the new object shall be linked
|
||||
@param flag Bitfield for control purposes
|
||||
bit0= insert before link rather than after it
|
||||
@return <=0 error, 1 ok
|
||||
*/
|
||||
int Xorriso_lst_new(struct Xorriso_lsT **lstring, char *text,
|
||||
struct Xorriso_lsT *link, int flag);
|
||||
|
||||
|
||||
/** Create a new list item at the end of a given list.
|
||||
@param lstring Contains as input a pointer to a pointer to any existing
|
||||
list item. As output this list item pointer will be
|
||||
changed to the address of the new list item.
|
||||
@param data An array of bytes to be copied into the new object
|
||||
@param data_len Number of bytes to be copied
|
||||
@param flag unused yet, submit 0
|
||||
@return <=0 error, 1 ok
|
||||
*/
|
||||
int Xorriso_lst_append_binary(struct Xorriso_lsT **entry,
|
||||
char *data, int data_len, int flag);
|
||||
|
||||
|
||||
/** Destroy a single list item and connect its eventual list neighbors.
|
||||
@param lstring pointer to the pointer to be freed and set to NULL
|
||||
@param flag unused yet, submit 0
|
||||
@return 0= *lstring was alredy NULL, 1= ok
|
||||
*/
|
||||
int Xorriso_lst_destroy(struct Xorriso_lsT **lstring, int flag);
|
||||
int Xorriso_reaquire_outdev(struct XorrisO *xorriso, int flag);
|
||||
|
||||
|
||||
/* Opens the -check_media data copy in for reading and writing
|
||||
@ -558,6 +671,47 @@ int Xorriso_lst_destroy(struct Xorriso_lsT **lstring, int flag);
|
||||
int Xorriso_open_job_data_to(struct XorrisO *xorriso,
|
||||
struct CheckmediajoB *job, int flag);
|
||||
|
||||
int Xorriso_no_findjob(struct XorrisO *xorriso, char *cmd, int flag);
|
||||
|
||||
|
||||
int Xorriso_make_mount_cmd(struct XorrisO *xorriso, char *cmd,
|
||||
int lba, int track, int session, char *volid,
|
||||
char *devadr, char result[SfileadrL], int flag);
|
||||
|
||||
|
||||
/* @param flag bit0= use env_path to find the desired program
|
||||
*/
|
||||
int Xorriso_execv(struct XorrisO *xorriso, char *cmd, char *env_path,
|
||||
int *status, int flag);
|
||||
|
||||
int Xorriso_is_in_patternlist(struct XorrisO *xorriso,
|
||||
struct Xorriso_lsT *patternlist, char *path, int flag);
|
||||
|
||||
char *Xorriso_get_pattern(struct XorrisO *xorriso,
|
||||
struct Xorriso_lsT *patternlist, int index, int flag);
|
||||
|
||||
|
||||
/* Normalize ACL and sort apart "access" ACL from "default" ACL.
|
||||
*/
|
||||
int Xorriso_normalize_acl_text(struct XorrisO *xorriso, char *in_text,
|
||||
char **access_acl_text, char **default_acl_text, int flag);
|
||||
|
||||
int Xorriso_path_setfattr(struct XorrisO *xorriso, void *in_node, char *path,
|
||||
char *name, size_t value_length, char *value, int flag);
|
||||
|
||||
int Xorriso_status_result(struct XorrisO *xorriso, char *filter, FILE *fp,
|
||||
int flag);
|
||||
|
||||
int Xorriso_compare_2_files(struct XorrisO *xorriso, char *disk_adr,
|
||||
char *iso_adr, char *adr_common_tail,
|
||||
int *result, int flag);
|
||||
|
||||
int Xorriso_report_md5_outcome(struct XorrisO *xorriso, char *severity,
|
||||
int flag);
|
||||
|
||||
int Xorriso_append_scdbackup_record(struct XorrisO *xorriso, int flag);
|
||||
|
||||
int Xorriso_may_burn(struct XorrisO *xorriso, int flag);
|
||||
|
||||
|
||||
int Sfile_str(char target[SfileadrL], char *source, int flag);
|
||||
@ -595,6 +749,80 @@ int Sfile_count_components(char *path, int flag);
|
||||
*/
|
||||
int Sfile_type(char *filename, int flag);
|
||||
|
||||
/* @param flag bit0= only encode inside quotes
|
||||
bit1= encode < 32 outside quotes except 7, 8, 9, 10, 12, 13
|
||||
bit2= encode in any case above 126
|
||||
bit3= encode in any case shellsafe:
|
||||
<=42 , 59, 60, 62, 63, 92, 94, 96, >=123
|
||||
*/
|
||||
int Sfile_bsl_encoder(char **result, char *text, size_t text_len, int flag);
|
||||
|
||||
int Sfile_argv_bsl(int argc, char ***argv, int flag);
|
||||
|
||||
|
||||
struct Xorriso_lsT {
|
||||
char *text;
|
||||
struct Xorriso_lsT *prev,*next;
|
||||
};
|
||||
|
||||
/** Create a new list item with arbitrary byte content.
|
||||
@param lstring The newly created object or NULL on failure
|
||||
@param data An array of bytes to be copied into the new object
|
||||
@param data_len Number of bytes to be copied
|
||||
@param link Xorriso_lsT object to which the new object shall be linked
|
||||
@param flag Bitfield for control purposes
|
||||
bit0= insert before link rather than after it
|
||||
bit1= do not copy data (e.g. because *data is invalid)
|
||||
bit2= attach data directly by pointer rather than by copying
|
||||
@return <=0 error, 1 ok
|
||||
*/
|
||||
int Xorriso_lst_new_binary(struct Xorriso_lsT **lstring, char *data,
|
||||
int data_len, struct Xorriso_lsT *link, int flag);
|
||||
|
||||
|
||||
/** Create a new list item with a 0-terminated text as content.
|
||||
@param lstring The newly created object or NULL on failure
|
||||
@param text A 0-terminated array of bytes
|
||||
@param link Xorriso_lsT object to which the new object shall be linked
|
||||
@param flag see Xorriso_lst_new_binary
|
||||
@return <=0 error, 1 ok
|
||||
*/
|
||||
int Xorriso_lst_new(struct Xorriso_lsT **lstring, char *text,
|
||||
struct Xorriso_lsT *link, int flag);
|
||||
|
||||
|
||||
/** Create a new list item at the end of a given list.
|
||||
@param entry Contains as input a pointer to a pointer to any existing
|
||||
list item. As output this list item pointer may be
|
||||
changed to the address of the new list item:
|
||||
if ((*entry == 0) || (flag & 1))
|
||||
@param data An array of bytes to be copied into the new object
|
||||
@param data_len Number of bytes to be copied
|
||||
@param flag Bitfield for control purposes
|
||||
bit0= Return new object address in *entry
|
||||
bit1= do not copy data (e.g. because *data is invalid)
|
||||
bit2= attach data directly by pointer rather than by copying
|
||||
@return <=0 error, 1 ok
|
||||
*/
|
||||
int Xorriso_lst_append_binary(struct Xorriso_lsT **entry,
|
||||
char *data, int data_len, int flag);
|
||||
|
||||
|
||||
/** Destroy a single list item and connect its eventual list neighbors.
|
||||
@param lstring pointer to the pointer to be freed and set to NULL
|
||||
@param flag unused yet, submit 0
|
||||
@return 0= *lstring was alredy NULL, 1= ok
|
||||
*/
|
||||
int Xorriso_lst_destroy(struct Xorriso_lsT **lstring, int flag);
|
||||
|
||||
|
||||
struct Xorriso_lsT *Xorriso_lst_get_next(struct Xorriso_lsT *entry, int flag);
|
||||
|
||||
struct Xorriso_lsT *Xorriso_lst_get_prev(struct Xorriso_lsT *entry, int flag);
|
||||
|
||||
char *Xorriso_lst_get_text(struct Xorriso_lsT *entry, int flag);
|
||||
|
||||
int Xorriso_lst_detach_text(struct Xorriso_lsT *entry, int flag);
|
||||
|
||||
|
||||
char *Text_shellsafe(char *in_text, char *out_text, int flag);
|
||||
@ -609,6 +837,9 @@ char *Ftypetxt(mode_t st_mode, int flag);
|
||||
*/
|
||||
char *Ftimetxt(time_t t, char timetext[40], int flag);
|
||||
|
||||
int System_uname(char **sysname, char **release, char **version,
|
||||
char **machine, int flag);
|
||||
|
||||
|
||||
struct DirseQ;
|
||||
|
||||
@ -622,8 +853,253 @@ int Dirseq_next_adr(struct DirseQ *o, char reply[SfileadrL], int flag);
|
||||
int Linkitem_reset_stack(struct LinkiteM **o, struct LinkiteM *to, int flag);
|
||||
|
||||
|
||||
|
||||
|
||||
#define Xorriso_findjob_on_expR yes
|
||||
|
||||
#ifdef Xorriso_findjob_on_expR
|
||||
|
||||
/*
|
||||
A single Testnode.
|
||||
*/
|
||||
struct ExprtesT {
|
||||
|
||||
struct FindjoB *boss;
|
||||
|
||||
int invert; /* 0=normal 1=invert result */
|
||||
|
||||
/*
|
||||
0= -false (with invert : -true)
|
||||
1= -name char *arg1 (regex_t in *arg2)
|
||||
2= -type char *arg1
|
||||
3= -damaged
|
||||
4= -lba_range int *arg1 int *arg2
|
||||
5= -has_acl
|
||||
6= -has_xattr
|
||||
7= -has_aaip
|
||||
8= -has_filter
|
||||
9= -wanted_node IsoNode *arg1 (for internal use, arg1 not allocated)
|
||||
10= -pending_data
|
||||
11= -decision char *arg1 ("yes", "no")
|
||||
12= -prune
|
||||
13= -wholename char *arg1 (regex_t in *arg2)
|
||||
14= -has_any_xattr
|
||||
15= -has_md5
|
||||
*/
|
||||
int test_type;
|
||||
|
||||
void *arg1;
|
||||
void *arg2;
|
||||
|
||||
};
|
||||
|
||||
|
||||
/*
|
||||
A computational node.
|
||||
A tree of these nodes forms the expression.
|
||||
Sequences of AND/OR operations form branches, brackets spawn new branches,
|
||||
NOT inverts node's test resp. subtree result.
|
||||
*/
|
||||
struct ExprnodE {
|
||||
|
||||
struct ExprnodE *up;
|
||||
|
||||
char origin[8];
|
||||
|
||||
/* Operators */
|
||||
int invert; /* 0=normal 1=invert own result (subtree or test, but not op) */
|
||||
|
||||
int assoc; /*
|
||||
0= left : compute own value, combine with left value,
|
||||
compute right value, combine with current value
|
||||
1= right: compute own value, compute right value,
|
||||
combine own and right, combine with left value
|
||||
*/
|
||||
|
||||
int use_shortcuts; /* 0= evaluate all tests of -and and -or,
|
||||
1= evaluate only until the combined result is known
|
||||
*/
|
||||
|
||||
struct ExprnodE *left;
|
||||
int left_op; /* 0=OR , 1=AND */
|
||||
|
||||
struct ExprnodE *right;
|
||||
int right_op; /* see left_op */
|
||||
|
||||
/* Brackets : a pointer to the first node in a subchain */
|
||||
struct ExprnodE *sub;
|
||||
|
||||
int is_if_then_else;
|
||||
struct ExprnodE *true_branch;
|
||||
struct ExprnodE *false_branch;
|
||||
|
||||
/* elementary test : if sub!=NULL , test is ignored */
|
||||
struct ExprtesT *test;
|
||||
|
||||
/* Result */
|
||||
int own_value;
|
||||
int composed_value;
|
||||
|
||||
};
|
||||
|
||||
|
||||
struct FindjoB {
|
||||
|
||||
char *start_path;
|
||||
|
||||
struct ExprnodE *test_tree;
|
||||
|
||||
struct ExprnodE *cursor;
|
||||
int invert; /* 0=normal 1=set invert-property for next new test node */
|
||||
int use_shortcuts;
|
||||
|
||||
/* 0= echo
|
||||
1= rm (also rmdir)
|
||||
2= rm_r
|
||||
>>> 3= mv target
|
||||
4= chown user
|
||||
5= chgrp group
|
||||
6= chmod mode_and mode_or
|
||||
7= alter_date type date
|
||||
8= lsdl
|
||||
9= chown_r user
|
||||
10= chgrp_r group
|
||||
11= chmod_r mode_and mode_or
|
||||
12= alter_date_r type date
|
||||
13= find
|
||||
14= compare disk_equivalent_of_start_path
|
||||
15= in_iso iso_rr_equivalent_of_start_path
|
||||
16= not_in_iso iso_rr_equiv
|
||||
17= update disk_equiv
|
||||
18= add_missing iso_rr_equiv
|
||||
19= empty_iso_dir iso_rr_equiv
|
||||
20= is_full_in_iso iso_rr_equiv
|
||||
21= report_damage
|
||||
22= report_lba
|
||||
23= internal: memorize path of last matching node in found_path
|
||||
24= getfacl
|
||||
25= setfacl access_acl default_acl
|
||||
26= getfattr
|
||||
27= setfattr
|
||||
28= set_filter name
|
||||
29= show_stream
|
||||
30= internal: count by xorriso->node_counter
|
||||
31= internal: register in xorriso->node_array
|
||||
32= internal: widen_hardlinks disk_equiv: update nodes marked in di_do_widen
|
||||
33= get_any_xattr
|
||||
34= get_md5
|
||||
35= check_md5
|
||||
36= make_md5
|
||||
*/
|
||||
int action;
|
||||
int prune;
|
||||
|
||||
/* action specific parameters */
|
||||
char *target;
|
||||
char *text_2;
|
||||
uid_t user;
|
||||
gid_t group;
|
||||
mode_t mode_and, mode_or;
|
||||
int type; /* see Xorriso_set_time flag */
|
||||
time_t date;
|
||||
char *found_path;
|
||||
struct FindjoB *subjob;
|
||||
|
||||
/* Errors */
|
||||
char errmsg[4096];
|
||||
int errn; /*
|
||||
>0 = UNIX errno
|
||||
-1 = close_bracket: no bracket open
|
||||
-2 = binary operator or closing bracket expected
|
||||
-3 = unexpected binary operator or closing bracket
|
||||
-4 = unsupported command
|
||||
-5 = -then -elseif -else -endif without -if or at wrong place
|
||||
*/
|
||||
};
|
||||
|
||||
|
||||
int Exprtest_match(struct XorrisO *xorriso, struct ExprtesT *ftest,
|
||||
void *node_pt, char *name, char *path,
|
||||
struct stat *boss_stbuf, struct stat *stbuf, int flag);
|
||||
|
||||
|
||||
int Exprnode_destroy(struct ExprnodE **fnode, int flag);
|
||||
|
||||
int Exprnode_tree_value(struct XorrisO *xorriso, struct ExprnodE *fnode,
|
||||
int left_value, void *node, char *name, char *path,
|
||||
struct stat *boss_stbuf, struct stat *stbuf, int flag);
|
||||
|
||||
|
||||
int Findjob_new(struct FindjoB **o, char *start_path, int flag);
|
||||
|
||||
int Findjob_destroy(struct FindjoB **o, int flag);
|
||||
|
||||
int Findjob_set_start_path(struct FindjoB *o, char *start_path, int flag);
|
||||
|
||||
int Findjob_get_start_path(struct FindjoB *o, char **start_path, int flag);
|
||||
|
||||
int Findjob_set_commit_filter_2(struct FindjoB *o, int flag);
|
||||
|
||||
int Findjob_set_lba_range(struct FindjoB *o, int start_lba, int count,
|
||||
int flag);
|
||||
|
||||
int Findjob_set_wanted_node(struct FindjoB *o, void *wanted_node, int flag);
|
||||
|
||||
int Findjob_set_decision(struct FindjoB *o, char *decision, int flag);
|
||||
|
||||
int Findjob_open_bracket(struct FindjoB *job, int flag);
|
||||
|
||||
int Findjob_close_bracket(struct FindjoB *job, int flag);
|
||||
|
||||
int Findjob_not(struct FindjoB *job, int flag);
|
||||
|
||||
int Findjob_and(struct FindjoB *job, int flag);
|
||||
|
||||
int Findjob_or(struct FindjoB *job, int flag);
|
||||
|
||||
int Findjob_if(struct FindjoB *job, int flag);
|
||||
|
||||
int Findjob_then(struct FindjoB *job, int flag);
|
||||
|
||||
int Findjob_else(struct FindjoB *job, int flag);
|
||||
|
||||
int Findjob_elseif(struct FindjoB *job, int flag);
|
||||
|
||||
int Findjob_endif(struct FindjoB *job, int flag);
|
||||
|
||||
int Findjob_test_2(struct XorrisO *xorriso, struct FindjoB *o,
|
||||
void *node, char *name, char *path,
|
||||
struct stat *boss_stbuf, struct stat *stbuf, int flag);
|
||||
|
||||
int Findjob_set_action_found_path(struct FindjoB *o, int flag);
|
||||
|
||||
/* @param flag bit0= recursive
|
||||
*/
|
||||
int Findjob_set_action_target(struct FindjoB *o, int action, char *target,
|
||||
int flag);
|
||||
int Findjob_get_action(struct FindjoB *o, int flag);
|
||||
|
||||
int Findjob_get_action_parms(struct FindjoB *o, char **target, char **text_2,
|
||||
uid_t *user, gid_t *group,
|
||||
mode_t *mode_and, mode_t *mode_or,
|
||||
int *type, time_t *date, struct FindjoB **subjob,
|
||||
int flag);
|
||||
|
||||
int Findjob_set_found_path(struct FindjoB *o, char *path, int flag);
|
||||
|
||||
int Findjob_get_found_path(struct FindjoB *o, char **path, int flag);
|
||||
|
||||
#else /* Xorriso_findjob_on_expR */
|
||||
|
||||
|
||||
struct FindjoB;
|
||||
|
||||
|
||||
int Findjob_new(struct FindjoB **o, char *start_path, int flag);
|
||||
|
||||
int Findjob_destroy(struct FindjoB **job, int flag);
|
||||
|
||||
|
||||
/* @return 0=no match , 1=match , <0 = error
|
||||
*/
|
||||
int Findjob_test(struct FindjoB *job, char *name,
|
||||
@ -636,7 +1112,7 @@ int Findjob_get_action(struct FindjoB *o, int flag);
|
||||
|
||||
/* @return <0 error, >=0 see xorriso.c struct FindjoB.action
|
||||
*/
|
||||
int Findjob_get_action_parms(struct FindjoB *o, char **target,
|
||||
int Findjob_get_action_parms(struct FindjoB *o, char **target, char **text_2,
|
||||
uid_t *user, gid_t *group,
|
||||
mode_t *mode_and, mode_t *mode_or,
|
||||
int *type, time_t *date, struct FindjoB **subjob,
|
||||
@ -662,13 +1138,36 @@ int Findjob_set_action_ad(struct FindjoB *o, int type, time_t date, int flag);
|
||||
|
||||
int Findjob_set_start_path(struct FindjoB *o, char *start_path, int flag);
|
||||
|
||||
int Findjob_set_action_found_path(struct FindjoB *o, int flag);
|
||||
|
||||
int Findjob_get_start_path(struct FindjoB *o, char **start_path, int flag);
|
||||
|
||||
int Findjob_set_lba_range(struct FindjoB *o, int start_lba, int count,
|
||||
int flag);
|
||||
|
||||
int Findjob_get_lba_damage_filter(struct FindjoB *o, int *start_lba,
|
||||
int *end_lba, int *damage_filter, int flag);
|
||||
|
||||
int Findjob_get_commit_filter(struct FindjoB *o, int *commit_filter, int flag);
|
||||
|
||||
int Findjob_get_acl_filter(struct FindjoB *o, int *acl_filter, int flag);
|
||||
|
||||
int Findjob_get_xattr_filter(struct FindjoB *o, int *xattr_filter, int flag);
|
||||
|
||||
int Findjob_get_aaip_filter(struct FindjoB *o, int *aaip_filter, int flag);
|
||||
|
||||
int Findjob_get_filter_filter(struct FindjoB *o, int *value, int flag);
|
||||
|
||||
int Findjob_set_wanted_node(struct FindjoB *o, void *wanted_node, int flag);
|
||||
|
||||
int Findjob_get_wanted_node(struct FindjoB *o, void **wanted_node, int flag);
|
||||
|
||||
int Findjob_set_found_path(struct FindjoB *o, char *path, int flag);
|
||||
|
||||
int Findjob_get_found_path(struct FindjoB *o, char **path, int flag);
|
||||
|
||||
#endif /* ! Xorriso_findjob_on_expR */
|
||||
|
||||
|
||||
struct SplitparT;
|
||||
|
||||
@ -687,6 +1186,8 @@ int Splitparts_get(struct SplitparT *o, int idx, char **name, int *partno,
|
||||
int Splitpart__parse(char *name, int *partno, int *total_parts,
|
||||
off_t *offset, off_t *bytes, off_t *total_bytes, int flag);
|
||||
|
||||
int Splitpart__is_part_path(char *path, int flag);
|
||||
|
||||
int Splitpart__compose(char *adr, int partno, int total_parts,
|
||||
off_t offset, off_t bytes, off_t total_bytes, int flag);
|
||||
|
||||
@ -716,10 +1217,12 @@ int Spotlist_sector_size(struct SpotlisT *o, int read_chunk, int flag);
|
||||
int Spotlist_get_item(struct SpotlisT *o, int idx,
|
||||
int *start_lba, int *blocks, int *quality, int flag);
|
||||
|
||||
char *Spotlist__quality_name(int quality, char name[80], int flag);
|
||||
char *Spotlist__quality_name(int quality, char name[80], int bad_limit,
|
||||
int flag);
|
||||
|
||||
|
||||
#define Xorriso_read_quality_gooD 0x7fffffff
|
||||
#define Xorriso_read_quality_md5_matcH 0x70000000
|
||||
#define Xorriso_read_quality_sloW 0x60000000
|
||||
#define Xorriso_read_quality_partiaL 0x50000000
|
||||
#define Xorriso_read_quality_valiD 0x40000000
|
||||
@ -727,9 +1230,65 @@ char *Spotlist__quality_name(int quality, char name[80], int flag);
|
||||
#define Xorriso_read_quality_invaliD 0x3ffffffe
|
||||
#define Xorriso_read_quality_tao_enD 0x28000000
|
||||
#define Xorriso_read_quality_off_tracK 0x20000000
|
||||
#define Xorriso_read_quality_md5_mismatcH 0x10000000
|
||||
#define Xorriso_read_quality_unreadablE 0x00000000
|
||||
|
||||
|
||||
struct CheckmediajoB {
|
||||
int use_dev; /* 0= use indev , 1= use outdev , 2= use sector map*/
|
||||
|
||||
int min_lba; /* if >=0 : begin checking at this address */
|
||||
int max_lba; /* if >=0 : read up to this address, else use mode */
|
||||
|
||||
int min_block_size; /* granularity desired by user
|
||||
*/
|
||||
int mode; /* 0= track by track
|
||||
1= single sweep over libisoburn media capacity
|
||||
>>> 2= single sweep over libburn media capacity
|
||||
*/
|
||||
time_t start_time;
|
||||
int time_limit; /* Number of seconds after which to abort */
|
||||
|
||||
int item_limit; /* Maximum number of media check list items as result */
|
||||
|
||||
char abort_file_path[SfileadrL];
|
||||
|
||||
char data_to_path[SfileadrL];
|
||||
int data_to_fd;
|
||||
off_t data_to_offset; /* usually 0 with image copy, negative with file copy */
|
||||
off_t data_to_limit; /* used with file copy */
|
||||
int patch_lba0;
|
||||
int patch_lba0_msc1;
|
||||
|
||||
char sector_map_path[SfileadrL];
|
||||
struct SectorbitmaP *sector_map;
|
||||
int map_with_volid; /* 0=add quick toc to map file,
|
||||
1=read ISO heads for toc
|
||||
*/
|
||||
|
||||
int retry; /* -1= only try full read_chunk, 1=retry with 2k blocks
|
||||
0= retry with CD, full chunk else
|
||||
*/
|
||||
|
||||
int report_mode; /* 0= print MCL items
|
||||
1= print damaged files
|
||||
*/
|
||||
|
||||
char event_severity[20]; /* If not "ALL": trigger event of given severity
|
||||
at the end of a check job if bad blocks were
|
||||
discovered.
|
||||
*/
|
||||
|
||||
double slow_threshold_seq; /* Time limit in seconds for the decision whether
|
||||
a read operation is considered slow. This does
|
||||
not apply to thr first read of an interval.
|
||||
*/
|
||||
|
||||
int untested_valid; /* 1= mark untested data blocks as valid when calling
|
||||
Xorriso_spotlist_to_sectormap()
|
||||
*/
|
||||
};
|
||||
|
||||
int Checkmediajob_new(struct CheckmediajoB **o, int flag);
|
||||
|
||||
int Checkmediajob_destroy(struct CheckmediajoB **o, int flag);
|
||||
@ -757,5 +1316,12 @@ int Sectorbitmap_get_layout(struct SectorbitmaP *o,
|
||||
int Sectorbitmap_copy(struct SectorbitmaP *from, struct SectorbitmaP *to,
|
||||
int flag);
|
||||
|
||||
/* bit0= append (text!=NULL) */
|
||||
int Sregex_string(char **handle, char *text, int flag);
|
||||
|
||||
/* @param flag bit0= only test expression whether compilable
|
||||
*/
|
||||
int Sregex_match(char *pattern, char *text, int flag);
|
||||
|
||||
#endif /* Xorriso_private_includeD */
|
||||
|
||||
|
@ -1 +1 @@
|
||||
#define Xorriso_timestamP "2008.10.10.134020"
|
||||
#define Xorriso_timestamP "2010.02.22.213001"
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -4,9 +4,9 @@
|
||||
a command line oriented batch and dialog tool which creates, loads,
|
||||
manipulates and burns ISO 9660 filesystem images.
|
||||
|
||||
Copyright 2007-2008 Thomas Schmitt, <scdbackup@gmx.net>
|
||||
Copyright 2007-2010 Thomas Schmitt, <scdbackup@gmx.net>
|
||||
|
||||
Provided under GPL version 2.
|
||||
Provided under GPL version 2 or later.
|
||||
|
||||
This file contains the inner isofs- and burn-library interface of xorriso.
|
||||
*/
|
||||
@ -18,8 +18,13 @@
|
||||
/* The minimum version of libisoburn to be used with this version of xorriso
|
||||
*/
|
||||
#define xorriso_libisoburn_req_major 0
|
||||
#define xorriso_libisoburn_req_minor 2
|
||||
#define xorriso_libisoburn_req_micro 7
|
||||
#define xorriso_libisoburn_req_minor 5
|
||||
#define xorriso_libisoburn_req_micro 0
|
||||
|
||||
|
||||
struct SpotlisT; /* List of intervals with different read qualities */
|
||||
struct CheckmediajoB; /* Parameters for Xorriso_check_media() */
|
||||
|
||||
|
||||
int Xorriso_startup_libraries(struct XorrisO *xorriso, int flag);
|
||||
|
||||
@ -52,9 +57,16 @@ int Xorriso__text_to_sev(char *severity_name, int *severity_number,int flag);
|
||||
|
||||
/* @param flag bit0=report about output drive
|
||||
bit1=short report form
|
||||
bit2=do not try to read ISO heads
|
||||
bit3=report to info channel (else to result channel)
|
||||
*/
|
||||
int Xorriso_toc(struct XorrisO *xorriso, int flag);
|
||||
|
||||
/* @param flag bit0= no output if no boot record was found
|
||||
bit3= report to info channel (else to result channel)
|
||||
*/
|
||||
int Xorriso_show_boot_info(struct XorrisO *xorriso, int flag);
|
||||
|
||||
int Xorriso_show_devices(struct XorrisO *xorriso, int flag);
|
||||
|
||||
int Xorriso_tell_media_space(struct XorrisO *xorriso,
|
||||
@ -67,15 +79,24 @@ int Xorriso_tell_media_space(struct XorrisO *xorriso,
|
||||
int Xorriso_blank_media(struct XorrisO *xorriso, int flag);
|
||||
|
||||
/* @param flag bit0= try to achieve faster formatting
|
||||
bit1= use parameter size (else use default size)
|
||||
bit2= do not re-aquire drive
|
||||
bit7= by_index mode:
|
||||
bit8 to bit15 contain the index of the format to use.
|
||||
@return 0=failure, did not touch media , -1=failure, altered media
|
||||
1=success, altered media , 2=success, did not touch media
|
||||
*/
|
||||
int Xorriso_format_media(struct XorrisO *xorriso, int flag);
|
||||
int Xorriso_format_media(struct XorrisO *xorriso, off_t size, int flag);
|
||||
|
||||
/* @return <=0 error, 1 success
|
||||
*/
|
||||
int Xorriso_list_formats(struct XorrisO *xorriso, int flag);
|
||||
|
||||
/* @param flag bit1= obtain outdrive, else indrive
|
||||
@return <=0 error, 1 success
|
||||
*/
|
||||
int Xorriso_list_profiles(struct XorrisO *xorriso, int flag);
|
||||
|
||||
/* @param flag bit2= formatting rather than blanking
|
||||
@return 0=failure, did not touch media , -1=failure, altered media
|
||||
1=success, altered media , 2=success, did not touch media
|
||||
@ -166,6 +187,12 @@ int Xorriso_findi(struct XorrisO *xorriso, struct FindjoB *job,
|
||||
void *dir_node_generic, char *dir_path,
|
||||
struct stat *dir_stbuf, int depth, int flag);
|
||||
|
||||
/* @param flag bit0= do not dive into trees
|
||||
bit1= do not perform job->action on resulting node array
|
||||
*/
|
||||
int Xorriso_findi_sorted(struct XorrisO *xorriso, struct FindjoB *job,
|
||||
off_t boss_mem, int filec, char **filev, int flag);
|
||||
|
||||
/* @param flag bit0= do not mark image as changed */
|
||||
int Xorriso_set_volid(struct XorrisO *xorriso, char *volid, int flag);
|
||||
|
||||
@ -200,11 +227,8 @@ int Xorriso_burn_track(struct XorrisO *xorriso, off_t write_start_address,
|
||||
int Xorriso_get_profile(struct XorrisO *xorriso, int *profile_number,
|
||||
char profile_name[80], int flag);
|
||||
|
||||
/* @param flag bit0= do not mark image as changed */
|
||||
int Xorriso_set_publisher(struct XorrisO *xorriso, char *name, int flag);
|
||||
|
||||
|
||||
/* @param flag bit0= node_pt is a valid ISO object handle, ignore pathname
|
||||
bit1= dig out the most original stream for reading
|
||||
*/
|
||||
int Xorriso_iso_file_open(struct XorrisO *xorriso, char *pathname,
|
||||
void *node_pt, void **stream, int flag);
|
||||
@ -287,49 +311,35 @@ int Xorriso_update_iso_lba0(struct XorrisO *xorriso, int iso_lba, int isosize,
|
||||
char *head_buffer, struct CheckmediajoB *job,
|
||||
int flag);
|
||||
|
||||
int Xorriso_get_local_charset(struct XorrisO *xorriso, char **name, int flag);
|
||||
|
||||
struct CheckmediajoB {
|
||||
int use_dev; /* 0= use indev , 1= use outdev , 2= use sector map*/
|
||||
int Xorriso_set_local_charset(struct XorrisO *xorriso, char *name, int flag);
|
||||
|
||||
int min_lba; /* if >=0 : begin checking at this address */
|
||||
int max_lba; /* if >=0 : read up to this address, else use mode */
|
||||
int Xorriso_destroy_node_array(struct XorrisO *xorriso, int flag);
|
||||
|
||||
int min_block_size; /* >>> not yet implemented:
|
||||
granularity desired by user
|
||||
*/
|
||||
int mode; /* 0= track by track
|
||||
1= single sweep over libisoburn media capacity
|
||||
>>> 2= single sweep over libburn media capacity
|
||||
*/
|
||||
time_t start_time;
|
||||
int time_limit; /* Number of seconds after which to abort */
|
||||
int Xorriso_destroy_hln_array(struct XorrisO *xorriso, int flag);
|
||||
|
||||
int item_limit; /* Maximum number of media check list items as result */
|
||||
int Xorriso_destroy_di_array(struct XorrisO *xorriso, int flag);
|
||||
|
||||
char abort_file_path[SfileadrL];
|
||||
int Xorriso_new_node_array(struct XorrisO *xorriso, off_t mem_limit,
|
||||
int addon_nodes, int flag);
|
||||
|
||||
char data_to_path[SfileadrL];
|
||||
int data_to_fd;
|
||||
off_t data_to_offset; /* usually 0 with image copy, negative with file copy */
|
||||
off_t data_to_limit; /* used with file copy */
|
||||
int patch_lba0;
|
||||
int patch_lba0_msc1;
|
||||
int Xorriso_sort_node_array(struct XorrisO *xorriso, int flag);
|
||||
|
||||
char sector_map_path[SfileadrL];
|
||||
struct SectorbitmaP *sector_map;
|
||||
int map_with_volid; /* 0=add quick toc to map file,
|
||||
1=read ISO heads for toc
|
||||
*/
|
||||
int Xorriso_new_hln_array(struct XorrisO *xorriso, off_t mem_limit, int flag);
|
||||
|
||||
int retry; /* -1= only try full read_chunk, 1=retry with 2k blocks
|
||||
0= retry with CD, full chunk else
|
||||
*/
|
||||
/* @param flag bit0= allocate xorriso->node_targets too
|
||||
*/
|
||||
int Xorriso_restore_node_array(struct XorrisO *xorriso, int flag);
|
||||
|
||||
int report_mode; /* 0= print MCL items
|
||||
1= print damaged files
|
||||
*/
|
||||
int Xorriso_check_md5(struct XorrisO *xorriso, void *in_node, char *path,
|
||||
int flag);
|
||||
|
||||
int Xorriso_check_session_md5(struct XorrisO *xorriso, char *severity,
|
||||
int flag);
|
||||
|
||||
int Xorriso_image_has_md5(struct XorrisO *xorriso, int flag);
|
||||
|
||||
};
|
||||
|
||||
int Xorriso_check_media(struct XorrisO *xorriso, struct SpotlisT **spotlist,
|
||||
struct CheckmediajoB *job, int flag);
|
||||
@ -339,6 +349,150 @@ int Xorriso_extract_cut(struct XorrisO *xorriso,
|
||||
off_t img_offset, off_t bytes, int flag);
|
||||
|
||||
|
||||
int Xorriso_relax_compliance(struct XorrisO *xorriso, char *mode,
|
||||
int flag);
|
||||
|
||||
/* @return 1=ok 2=ok, is default setting */
|
||||
int Xorriso_get_relax_text(struct XorrisO *xorriso, char mode[1024],
|
||||
int flag);
|
||||
|
||||
|
||||
/**
|
||||
@param flag bit0= print mount command to result channel rather than
|
||||
performing it
|
||||
*/
|
||||
int Xorriso_mount(struct XorrisO *xorriso, char *dev, int adr_mode,
|
||||
char *adr_value, char *cmd, int flag);
|
||||
|
||||
|
||||
|
||||
int Xorriso_auto_driveadr(struct XorrisO *xorriso, char *adr, char *result,
|
||||
int flag);
|
||||
|
||||
|
||||
/* @param node Opaque handle to IsoNode which is to be inquired instead of
|
||||
path if it is not NULL.
|
||||
@param path is used as address if node is NULL.
|
||||
@param acl_text if acl_text is not NULL, then *acl_text will be set to the
|
||||
ACL text (without comments) of the file object. In this
|
||||
case it finally has to be freed by the caller.
|
||||
@param flag bit0= do not report to result but only retrieve ACL text
|
||||
bit1= just check for existence of ACL, do not allocate and
|
||||
set acl_text but return 1 or 2
|
||||
@return 2 ok, no ACL available, eventual *acl_text will be NULL
|
||||
1 ok, ACL available, eventual *acl_text stems from malloc()
|
||||
<=0 error
|
||||
*/
|
||||
int Xorriso_getfacl(struct XorrisO *xorriso, void *node,
|
||||
char *path, char **acl_text, int flag);
|
||||
|
||||
int Xorriso_getfattr(struct XorrisO *xorriso, void *in_node, char *path,
|
||||
char **attr_text, int flag);
|
||||
|
||||
/* Calls iso_image_set_ignore_aclea() according to xorriso->do_aaip */
|
||||
int Xorriso_set_ignore_aclea(struct XorrisO *xorriso, int flag);
|
||||
|
||||
|
||||
/* @param node Opaque handle to IsoNode which is to be manipulated
|
||||
instead of path if it is not NULL.
|
||||
@param path is used as address if node is NULL.
|
||||
@param access_text "access" ACL in long text form
|
||||
@param default_text "default" ACL in long text form
|
||||
@param flag Unused yet, submit 0
|
||||
@return >0 success , <=0 failure
|
||||
*/
|
||||
int Xorriso_setfacl(struct XorrisO *xorriso, void *in_node, char *path,
|
||||
char *access_text, char *default_text, int flag);
|
||||
|
||||
int Xorriso_get_attrs(struct XorrisO *xorriso, void *in_node, char *path,
|
||||
size_t *num_attrs, char ***names,
|
||||
size_t **value_lengths, char ***values, int flag);
|
||||
|
||||
int Xorriso_setfattr(struct XorrisO *xorriso, void *in_node, char *path,
|
||||
size_t num_attrs, char **names,
|
||||
size_t *value_lengths, char **values, int flag);
|
||||
|
||||
int Xorriso_record_dev_inode(struct XorrisO *xorriso, char *disk_path,
|
||||
dev_t dev, ino_t ino,
|
||||
void *in_node, char *iso_path, int flag);
|
||||
|
||||
int Xorriso_local_getfacl(struct XorrisO *xorriso, char *disk_path,
|
||||
char **text, int flag);
|
||||
|
||||
int Xorriso_set_filter(struct XorrisO *xorriso, void *in_node,
|
||||
char *path, char *filter_name, int flag);
|
||||
|
||||
/* @param flag bit0= delete filter with the given name
|
||||
*/
|
||||
int Xorriso_external_filter(struct XorrisO *xorriso,
|
||||
char *name, char *options, char *path,
|
||||
int argc, char **argv, int flag);
|
||||
|
||||
int Xorriso_status_extf(struct XorrisO *xorriso, char *filter, FILE *fp,
|
||||
int flag);
|
||||
|
||||
int Xorriso_destroy_all_extf(struct XorrisO *xorriso, int flag);
|
||||
|
||||
int Xorriso_show_stream(struct XorrisO *xorriso, void *in_node,
|
||||
char *path, int flag);
|
||||
|
||||
int Xorriso_set_zisofs_params(struct XorrisO *xorriso, int flag);
|
||||
|
||||
int Xorriso_status_zisofs(struct XorrisO *xorriso, char *filter, FILE *fp,
|
||||
int flag);
|
||||
|
||||
/* @param flag bit0= overwrite existing di_array (else return 2)
|
||||
*/
|
||||
int Xorriso_make_di_array(struct XorrisO *xorriso, int flag);
|
||||
|
||||
/* @param flag bit0= overwrite existing hln_array (else return 2)
|
||||
*/
|
||||
int Xorriso_make_hln_array(struct XorrisO *xorriso, int flag);
|
||||
|
||||
/*
|
||||
@param flag bit2= -follow: this is not a command parameter
|
||||
@return -1= severe error
|
||||
0= not applicable for hard links
|
||||
1= go on with processing
|
||||
2= iso_rr_path is fully updated
|
||||
*/
|
||||
int Xorriso_hardlink_update(struct XorrisO *xorriso, int *compare_result,
|
||||
char *disk_path, char *iso_rr_path, int flag);
|
||||
|
||||
int Xorriso_finish_hl_update(struct XorrisO *xorriso, int flag);
|
||||
|
||||
int Xorriso_get_md5(struct XorrisO *xorriso, void *in_node, char *path,
|
||||
char md5[16], int flag);
|
||||
|
||||
int Xorriso_make_md5(struct XorrisO *xorriso, void *in_node, char *path,
|
||||
int flag);
|
||||
|
||||
int Xorriso_md5_start(struct XorrisO *xorriso, void **ctx, int flag);
|
||||
|
||||
int Xorriso_md5_compute(struct XorrisO *xorriso, void *ctx,
|
||||
char *data, int datalen, int flag);
|
||||
|
||||
int Xorriso_md5_end(struct XorrisO *xorriso, void **ctx, char md5[16],
|
||||
int flag);
|
||||
|
||||
/* @param flag bit0=input drive
|
||||
bit1=output drive
|
||||
*/
|
||||
int Xorriso_drive_snooze(struct XorrisO *xorriso, int flag);
|
||||
|
||||
int Xorriso_is_plain_image_file(struct XorrisO *xorriso, void *in_node,
|
||||
char *path, int flag);
|
||||
|
||||
int Xorriso_pvd_info(struct XorrisO *xorriso, int flag);
|
||||
|
||||
/* @param flag bit0= do not set hln_change_pending */
|
||||
int Xorriso_set_change_pending(struct XorrisO *xorriso, int flag);
|
||||
|
||||
/* @param flag bit0= enable SCSI command logging to stderr */
|
||||
int Xorriso_scsi_log(struct XorrisO *xorriso, int flag);
|
||||
|
||||
|
||||
|
||||
/* A pseudo file type for El-Torito bootsectors as in man 2 stat :
|
||||
For now take the highest possible value.
|
||||
*/
|
||||
|
Reference in New Issue
Block a user