Compare commits
286 Commits
ZeroTwoTwo
...
ZeroThreeS
Author | SHA1 | Date | |
---|---|---|---|
a2003e8a59 | |||
f0a3c00556 | |||
40e21d51c8 | |||
692383c317 | |||
14a0647072 | |||
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 | |||
04efd40a86 | |||
76770e97bf | |||
cb6646d49e | |||
cd92b00f61 | |||
a0972af58f | |||
8945bce9ff | |||
b4b2572286 | |||
e40ddf8834 | |||
afd2f0cd61 | |||
e93ab421c2 | |||
e65346cd1b | |||
7685ca5d64 | |||
5d939f185c | |||
c1c033900e | |||
e1c4ed7d17 | |||
8898c58d3c | |||
18da5ec3f2 | |||
d5ec0342cc | |||
6af8449f5a | |||
69a6b4f4a1 | |||
daadfc113d | |||
1625db8bbd | |||
2026814a80 | |||
722e091460 | |||
2d1d4d4b37 | |||
fdea98935a | |||
7044f2cba1 | |||
f65dc9aa82 | |||
cd999a3661 | |||
07a137d64c | |||
26f00d4e08 | |||
bffde87102 | |||
73a9c16384 | |||
d56541d237 | |||
d7864bd13c | |||
bc002b24de | |||
8274230e14 | |||
a314fb5e91 | |||
f8154d6fde | |||
b79a0a1f04 | |||
16f6de937e | |||
410d972188 | |||
5f3f860800 | |||
7f40fbce00 | |||
c89012cb1f | |||
5fbc089f44 | |||
dde99a34a4 | |||
1967c876a6 | |||
262d987004 | |||
0987770afa | |||
0be7fe3329 | |||
62dbe3cbd0 | |||
1f1439f774 | |||
74aa1ed45e | |||
993ad6b8b4 | |||
6821aa77b8 | |||
63b4b64230 | |||
ba75c58f0e | |||
1a265f7645 | |||
e80a9626ce | |||
98fef56409 | |||
cec06c2a9a | |||
32486a5ca2 | |||
2745faabd2 | |||
0465f55485 | |||
d889ba7077 | |||
6eef826c60 | |||
fbc3e6992c | |||
5abdf19a48 | |||
feb3c10d1a | |||
96121a70dc | |||
552911da11 | |||
1d1f3a2265 | |||
3d23a621b2 | |||
c6c82c8333 | |||
afc27f89fe | |||
b5d7d75598 | |||
8ab1fcd4f5 | |||
c0cc40121f | |||
9b85bc0fed | |||
235cbe3dfe | |||
0f0a2e4bb5 | |||
1fd02ceba2 | |||
784684eb92 | |||
d3b35b50cd | |||
8bce9569e1 | |||
94f9c9acf8 | |||
aeb98c3abb | |||
a6da71ba36 | |||
ee7f121a25 | |||
0c7086525b | |||
708be0cde6 | |||
becac4eba6 | |||
319ab37ad9 |
@ -1,11 +1,11 @@
|
||||
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-2009 Vreixo Formoso, Thomas Schmitt
|
||||
xorriso is Copyright (C) 2007-2009 Thomas Schmitt
|
||||
libisofs (if included) is Copyright (C) 2007-2009 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-2009 Mario Danic, Thomas Schmitt
|
||||
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
|
48
Makefile.am
48
Makefile.am
@ -32,9 +32,26 @@ libinclude_HEADERS = \
|
||||
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_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)
|
||||
|
||||
xorriso_xorriso_LDADD = libisoburn/libisoburn.la -lisofs -lburn \
|
||||
$(THREAD_LIBS) $(LIBBURN_ARCH_LIBS)
|
||||
|
||||
xorriso_xorriso_SOURCES = \
|
||||
xorriso/xorriso.h \
|
||||
xorriso/xorriso_private.h \
|
||||
@ -48,15 +65,16 @@ xorriso_xorriso_SOURCES = \
|
||||
# Install symbolic links to the xorriso binary
|
||||
#
|
||||
install-exec-hook:
|
||||
if test -e $(bindir)/xorrisofs ; then rm $(bindir)/xorrisofs ; else echo ; fi
|
||||
ln -s xorriso $(bindir)/xorrisofs
|
||||
if test -e $(bindir)/osirrox ; then rm $(bindir)/osirrox ; else echo ; fi
|
||||
ln -s xorriso $(bindir)/osirrox
|
||||
if test -e $(bindir)/xorrecord ; then rm $(bindir)/xorrecord ; else echo ; fi
|
||||
ln -s xorriso $(bindir)/xorrecord
|
||||
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
|
||||
|
||||
|
||||
# Trying to create a build timestamp file
|
||||
# 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
|
||||
@ -65,15 +83,7 @@ buildstamp:
|
||||
# For now make buildstamped has to be performed explicitely.
|
||||
buildstamped: buildstamp
|
||||
make
|
||||
#
|
||||
# Processing of the "all:" rule happens too late.
|
||||
# How to create a dependency of xorriso.c on buildstamp ?
|
||||
# Not working:
|
||||
# Add xorriso_buildstamp.h to xorriso_xorriso_SOURCES and make it depend
|
||||
# on buildstamp. It runs. But at quite random occasions.
|
||||
# xorriso/xorriso_buildstamp.h: buildstamp
|
||||
#
|
||||
# all: buildstamp
|
||||
|
||||
|
||||
|
||||
## Build test applications
|
||||
@ -146,6 +156,8 @@ man_MANS = xorriso/xorriso.1
|
||||
EXTRA_DIST = \
|
||||
libisoburn-1.pc.in \
|
||||
version.h.in \
|
||||
doc/comments \
|
||||
doc/doxygen.conf.in \
|
||||
README \
|
||||
AUTHORS \
|
||||
CONTRIBUTORS \
|
||||
|
38
README
38
README
@ -4,13 +4,13 @@
|
||||
libisoburn. 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.2.pl00.tar.gz
|
||||
Copyright (C) 2006-2008 Vreixo Formoso, Thomas Schmitt.
|
||||
http://files.libburnia-project.org/releases/libisoburn-0.3.6.pl00.tar.gz
|
||||
Copyright (C) 2006-2009 Vreixo Formoso, Thomas Schmitt.
|
||||
Provided under GPL version 2.
|
||||
------------------------------------------------------------------------------
|
||||
|
||||
libisoburn is a frontend for libraries libburn and libisofs which enables
|
||||
creation and expansion of ISO-9660 filesystems on all CD/DVD media supported
|
||||
creation and expansion of ISO-9660 filesystems on all CD/DVD/BD media supported
|
||||
by libburn. This includes media like DVD+RW, which do not support multi-session
|
||||
management on media level and even plain disk files or block devices.
|
||||
|
||||
@ -18,7 +18,10 @@ 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.
|
||||
Currently it is 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 +29,18 @@ 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.2 :
|
||||
- libburn.so.4 , version libburn-0.5.0 or higher
|
||||
- libisofs.so.6 , version libisofs-0.6.6 or higher
|
||||
Dynamic library and compile time header requirements for libisoburn-0.3.6 :
|
||||
- libburn.so.4 , version libburn-0.6.4 or higher
|
||||
- libisofs.so.6 , version libisofs-0.6.16 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.
|
||||
setup unless you have reason to enforce a newer level of bug fixes or features.
|
||||
|
||||
Obtain libisoburn-0.2.2.pl00.tar.gz, take it to a directory of your choice
|
||||
Obtain libisoburn-0.3.6.pl00.tar.gz, take it to a directory of your choice
|
||||
and do:
|
||||
|
||||
tar xzf libisoburn-0.2.2.pl00.tar.gz
|
||||
cd libisoburn-0.2.2
|
||||
tar xzf libisoburn-0.3.6.pl00.tar.gz
|
||||
cd libisoburn-0.3.6
|
||||
|
||||
Within that directory execute:
|
||||
|
||||
@ -57,7 +60,7 @@ as well as
|
||||
|
||||
xorriso
|
||||
|
||||
libisoburn includes a command line and dialog application named xorriso,
|
||||
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.
|
||||
@ -72,6 +75,12 @@ Several alias links point to the xorriso binary:
|
||||
xorrecord starts xorriso with -as cdrecord emulation already enabled
|
||||
osirrox starts with -osirrox image-to-disk copying already enabled
|
||||
|
||||
By default xorriso will depend on libreadline if the readline-dev headers
|
||||
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.
|
||||
|
||||
|
||||
Drives and Disk File Objects
|
||||
|
||||
@ -98,6 +107,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
|
||||
|
||||
@ -149,7 +161,7 @@ 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-2009 Mario Danic, Vreixo Formoso, Thomas Schmitt.
|
||||
|
||||
libburnia-project.org is inspired by and in other components still containing
|
||||
parts of old
|
||||
|
@ -14,7 +14,9 @@ AC_DEFUN([TARGET_SHIZZLE],
|
||||
LIBBURN_ARCH_LIBS=-lcam
|
||||
;;
|
||||
*)
|
||||
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
|
||||
|
||||
|
67
configure.ac
67
configure.ac
@ -1,4 +1,4 @@
|
||||
AC_INIT([libisoburn], [0.2.2], [http://libburnia-project.org])
|
||||
AC_INIT([libisoburn], [0.3.6], [http://libburnia-project.org])
|
||||
AC_PREREQ([2.50])
|
||||
dnl AC_CONFIG_HEADER([config.h])
|
||||
|
||||
@ -8,7 +8,7 @@ AC_CANONICAL_TARGET
|
||||
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 +20,8 @@ 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=2
|
||||
ISOBURN_MINOR_VERSION=3
|
||||
ISOBURN_MICRO_VERSION=6
|
||||
dnl ISOBURN_VERSION=$ISOBURN_MAJOR_VERSION.$ISOBURN_MINOR_VERSION.$ISOBURN_MICRO_VERSION
|
||||
|
||||
AC_SUBST(ISOBURN_MAJOR_VERSION)
|
||||
@ -33,16 +33,16 @@ dnl Libtool versioning
|
||||
dnl Generate libisoburn.so.1.x.y
|
||||
dnl SONAME will become LT_CURRENT - LT_AGE
|
||||
dnl
|
||||
dnl ts A80718
|
||||
dnl This is the release version 0.2.2 = libisoburn.so.1.11.0
|
||||
dnl ts A90316
|
||||
dnl This is the release version 0.3.6 = libisoburn.so.1.25.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++ has happened meanwhile.
|
||||
dnl
|
||||
dnl SONAME = 12 - 11 = 1 . Library name = libburn.so.1.11.0
|
||||
dnl SONAME = 26 - 25 = 1 . Library name = libisoburn.so.1.25.0
|
||||
LT_RELEASE=$ISOBURN_MAJOR_VERSION.$ISOBURN_MINOR_VERSION
|
||||
LT_CURRENT=12
|
||||
LT_AGE=11
|
||||
LT_CURRENT=26
|
||||
LT_AGE=25
|
||||
LT_REVISION=0
|
||||
LT_CURRENT_MINUS_AGE=`expr $LT_CURRENT - $LT_AGE`
|
||||
|
||||
@ -70,6 +70,10 @@ 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, , )
|
||||
|
||||
AC_PROG_LIBTOOL
|
||||
AC_SUBST(LIBTOOL_DEPS)
|
||||
LIBTOOL="$LIBTOOL --silent"
|
||||
@ -86,22 +90,57 @@ AC_SUBST(ARCH)
|
||||
AC_SUBST(LIBBURN_ARCH_LIBS)
|
||||
|
||||
|
||||
AC_ARG_ENABLE(libreadline,
|
||||
[ --enable-libreadline Enable use of libreadline by xorriso, default=yes],
|
||||
, enable_libreadline=yes)
|
||||
if test x$enable_libreadline = xyes; then
|
||||
dnl Check whether there is readline-devel and readline-runtime.
|
||||
dnl If not, erase this macro which would enable use of readline(),add_history()
|
||||
READLINE_DEF="-DXorriso_with_readlinE"
|
||||
READLINE_DEF="-DXorriso_with_readlinE"
|
||||
dnl The empty yes case obviously causes -lreadline to be linked
|
||||
AC_CHECK_HEADER(readline/readline.h, AC_CHECK_LIB(readline, readline, , READLINE_DEF= ), READLINE_DEF= )
|
||||
AC_CHECK_HEADER(readline/readline.h, AC_CHECK_LIB(readline, readline, , READLINE_DEF= ), READLINE_DEF= )
|
||||
dnl The X= in the yes case prevents that -lreadline gets linked twice
|
||||
AC_CHECK_HEADER(readline/history.h, AC_CHECK_LIB(readline, add_history, X= , READLINE_DEF= ), READLINE_DEF= )
|
||||
AC_CHECK_HEADER(readline/history.h, AC_CHECK_LIB(readline, add_history, X= , READLINE_DEF= ), READLINE_DEF= )
|
||||
else
|
||||
READLINE_DEF=
|
||||
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 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_CHECK_HEADER(libburn/libburn.h)
|
||||
AC_CHECK_HEADER(libisofs/libisofs.h)
|
||||
|
||||
dnl Check for proper library versions
|
||||
LIBBURN_REQUIRED=0.5.0
|
||||
LIBISOFS_REQUIRED=0.6.6
|
||||
LIBBURN_REQUIRED=0.6.4
|
||||
LIBISOFS_REQUIRED=0.6.16
|
||||
PKG_CHECK_MODULES(LIBBURN, libburn-1 >= $LIBBURN_REQUIRED)
|
||||
PKG_CHECK_MODULES(LIBISOFS, libisofs-1 >= $LIBISOFS_REQUIRED)
|
||||
|
||||
|
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 .
|
||||
|
||||
*/
|
@ -477,7 +477,7 @@ WARN_LOGFILE =
|
||||
# directories like "/usr/src/myproject". Separate the files or directories
|
||||
# with spaces.
|
||||
|
||||
INPUT = libburn \
|
||||
INPUT = libisoburn \
|
||||
doc \
|
||||
test
|
||||
|
||||
@ -495,9 +495,7 @@ INPUT_ENCODING = UTF-8
|
||||
# *.c *.cc *.cxx *.cpp *.c++ *.java *.ii *.ixx *.ipp *.i++ *.inl *.h *.hh *.hxx
|
||||
# *.hpp *.h++ *.idl *.odl *.cs *.php *.php3 *.inc *.m *.mm *.py
|
||||
|
||||
FILE_PATTERNS = libburn.h \
|
||||
comments \
|
||||
libburner.c
|
||||
FILE_PATTERNS =
|
||||
|
||||
# The RECURSIVE tag can be used to turn specify whether or not subdirectories
|
||||
# should be searched for input files as well. Possible values are YES and NO.
|
||||
|
@ -6,7 +6,7 @@
|
||||
*/
|
||||
/* libburn wrappers for libisoburn
|
||||
|
||||
Copyright 2007 - 2008 Thomas Schmitt, <scdbackup@gmx.net>
|
||||
Copyright 2007 - 2009 Thomas Schmitt, <scdbackup@gmx.net>
|
||||
*/
|
||||
|
||||
/* <<< A70929 : hardcoded CD-RW with fabricated -msinfo
|
||||
@ -24,6 +24,7 @@
|
||||
#include <sys/stat.h>
|
||||
#include <fcntl.h>
|
||||
#include <time.h>
|
||||
#include <regex.h>
|
||||
|
||||
|
||||
#ifndef Xorriso_standalonE
|
||||
@ -58,7 +59,7 @@ extern void *libisoburn_default_msgs_submit_handle;
|
||||
extern int libisoburn_default_msgs_submit_flag;
|
||||
|
||||
|
||||
int isoburn_emulate_toc(struct burn_drive *d, int flag);
|
||||
static int isoburn_emulate_toc(struct burn_drive *d, int flag);
|
||||
|
||||
|
||||
int isoburn_initialize(char msg[1024], int flag)
|
||||
@ -82,11 +83,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 +103,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
|
||||
|
||||
@ -263,6 +264,9 @@ int isoburn_is_intermediate_dvd_rw(struct burn_drive *d, int flag)
|
||||
@param flag bit0= pretent blank on overwriteable media
|
||||
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
|
||||
*/
|
||||
static int isoburn_welcome_media(struct isoburn **o, struct burn_drive *d,
|
||||
int flag)
|
||||
@ -288,6 +292,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 */
|
||||
@ -312,11 +317,13 @@ static int isoburn_welcome_media(struct isoburn **o, struct burn_drive *d,
|
||||
(*o)->emulation_mode= -1;
|
||||
goto ex;
|
||||
}
|
||||
/* try to read emulated toc */
|
||||
ret= isoburn_emulate_toc(d, 0);
|
||||
if(ret<0) {
|
||||
(*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;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -326,9 +333,13 @@ static int isoburn_welcome_media(struct isoburn **o, struct burn_drive *d,
|
||||
|
||||
if(readonly) {
|
||||
/* This might be overwriteable media in a -ROM drive */
|
||||
ret= isoburn_emulate_toc(d, 1);
|
||||
if(ret<0)
|
||||
goto ex;
|
||||
if((flag & 16)) {
|
||||
ret= 0;
|
||||
} else {
|
||||
ret= isoburn_emulate_toc(d, 1);
|
||||
if(ret<0)
|
||||
goto ex;
|
||||
}
|
||||
if(ret==0 && profile !=0x08 && (flag&8)) {
|
||||
/* This might also be multi-session media which do not
|
||||
get shown with a decent TOC.
|
||||
@ -373,29 +384,40 @@ ex:
|
||||
table of content by scanning for ISO image headers.
|
||||
(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
|
||||
*/
|
||||
int isoburn_drive_aquire(struct burn_drive_info *drive_infos[],
|
||||
char *adr, int flag)
|
||||
{
|
||||
int ret, conv_ret, drive_grabbed= 0;
|
||||
char libburn_drive_adr[BURN_DRIVE_ADR_LEN];
|
||||
int ret, drive_grabbed= 0;
|
||||
struct isoburn *o= NULL;
|
||||
char msg[BURN_MSGS_MESSAGE_LEN+4096];
|
||||
|
||||
#ifndef NIX
|
||||
|
||||
/* <<< should be obsolete by new drive addressing of libburn-0.5.2 */
|
||||
/* >>> but helps with kernel 2.4 to use /dev/sr */
|
||||
|
||||
int conv_ret;
|
||||
char libburn_drive_adr[BURN_DRIVE_ADR_LEN];
|
||||
|
||||
conv_ret= burn_drive_convert_fs_adr(adr, libburn_drive_adr);
|
||||
if(conv_ret<=0) {
|
||||
sprintf(msg, "Unsuitable drive address: '%s'\n",adr);
|
||||
msg[BURN_MSGS_MESSAGE_LEN-1]= 0;
|
||||
isoburn_msgs_submit(NULL, 0x00060000, msg, 0, "FAILURE", 0);
|
||||
ret= 0; goto ex;
|
||||
}
|
||||
|
||||
if(conv_ret<=0)
|
||||
strcpy(libburn_drive_adr, adr);
|
||||
ret= burn_drive_scan_and_grab(drive_infos, libburn_drive_adr, flag&1);
|
||||
|
||||
#else
|
||||
|
||||
ret= burn_drive_scan_and_grab(drive_infos, adr, flag & 1);
|
||||
|
||||
#endif /* ! NIX */
|
||||
|
||||
if(ret<=0)
|
||||
goto ex;
|
||||
drive_grabbed= 1;
|
||||
ret= isoburn_welcome_media(&o, (*drive_infos)[0].drive,
|
||||
(flag&8) | !!(flag&2));
|
||||
(flag & (8 | 16 | 32 | 64)) | !!(flag&2));
|
||||
if(ret<=0)
|
||||
goto ex;
|
||||
|
||||
@ -1025,7 +1047,33 @@ 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 ret;
|
||||
struct isoburn_toc_entry *item;
|
||||
|
||||
ret= isoburn_toc_entry_new(&item, o->toc, 0);
|
||||
if(ret<=0) {
|
||||
isoburn_msgs_submit(o, 0x00060000,
|
||||
"Not enough memory for emulated TOC entry object",
|
||||
0, "FATAL", 0);
|
||||
return(-1);
|
||||
}
|
||||
if(o->toc==NULL)
|
||||
o->toc= item;
|
||||
(*session_count)++;
|
||||
item->session= *session_count;
|
||||
item->track_no= *session_count;
|
||||
item->start_lba= lba;
|
||||
item->track_blocks= track_blocks;
|
||||
return(1);
|
||||
}
|
||||
|
||||
|
||||
@ -1037,8 +1085,8 @@ 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;
|
||||
struct isoburn *o;
|
||||
struct isoburn_toc_entry *item;
|
||||
char msg[160], size_text[80], *sev;
|
||||
time_t start_time, last_pacifier, now;
|
||||
|
||||
@ -1058,6 +1106,7 @@ int isoburn_emulate_toc(struct burn_drive *d, int flag)
|
||||
if(ret<=0)
|
||||
{ret= 0; goto failure;}
|
||||
lba= Libisoburn_overwriteable_starT;
|
||||
with_enclosure= 1;
|
||||
}
|
||||
while(lba<image_size || (flag&2)) {
|
||||
now= time(NULL);
|
||||
@ -1066,7 +1115,7 @@ int isoburn_emulate_toc(struct burn_drive *d, int flag)
|
||||
if(scan_count>=10*512)
|
||||
sprintf(size_text, "%.f MB", ((double) scan_count) / 512.0);
|
||||
else
|
||||
sprintf(size_text, "%.f MB", 2 * (double) scan_count);
|
||||
sprintf(size_text, "%.f kB", 2 * (double) scan_count);
|
||||
sprintf(msg, "Found %d ISO sessions by scanning %s in %.f seconds",
|
||||
session_count, size_text, (double) (now - start_time));
|
||||
isoburn_msgs_submit(o, 0x00060000, msg, 0, "UPDATE", 0);
|
||||
@ -1106,27 +1155,25 @@ int isoburn_emulate_toc(struct burn_drive *d, int flag)
|
||||
"Chain of ISO session headers broken at #%d, LBA %ds",
|
||||
session_count+1, lba);
|
||||
isoburn_msgs_submit(o, 0x00060000, msg, 0, "WARNING", 0);
|
||||
|
||||
if(with_enclosure) {
|
||||
ret= isoburn_make_toc_entry(o, &session_count, 0, image_size, 0);
|
||||
if(ret<=0)
|
||||
goto failure;
|
||||
}
|
||||
break; /* do not return failure */
|
||||
|
||||
}
|
||||
{ret= 0; goto failure;}
|
||||
}
|
||||
if(ret==2) /* ISO header was found in first half block */
|
||||
lba-= 16;
|
||||
ret= isoburn_toc_entry_new(&item, o->toc, 0);
|
||||
if(ret<=0) {
|
||||
isoburn_msgs_submit(o, 0x00060000,
|
||||
"Not enough memory for emulated TOC entry object",
|
||||
0, "FATAL", 0);
|
||||
ret= -1; goto failure;
|
||||
}
|
||||
if(o->toc==NULL)
|
||||
o->toc= item;
|
||||
session_count++;
|
||||
scan_count+= 32;
|
||||
item->session= session_count;
|
||||
item->track_no= session_count;
|
||||
item->start_lba= lba;
|
||||
item->track_blocks= track_blocks;
|
||||
|
||||
ret= isoburn_make_toc_entry(o, &session_count, lba, track_blocks, 0);
|
||||
if(ret<=0)
|
||||
goto failure;
|
||||
lba+= track_blocks;
|
||||
scan_count+= 32;
|
||||
|
||||
/* growisofs aligns to 16 rather than 32 */
|
||||
growisofs_nwa= lba;
|
||||
@ -1153,6 +1200,10 @@ int isoburn_emulate_toc(struct burn_drive *d, int flag)
|
||||
return(1);
|
||||
failure:;
|
||||
isoburn_toc_entry_destroy(&(o->toc), 1);
|
||||
if(with_enclosure && o->emulation_mode == 1) {
|
||||
session_count= 0;
|
||||
ret= isoburn_make_toc_entry(o, &session_count, 0, image_size, 0);
|
||||
}
|
||||
return(ret);
|
||||
}
|
||||
|
||||
@ -1297,15 +1348,31 @@ failure:;
|
||||
int isoburn_toc_disc_get_sectors(struct isoburn_toc_disc *disc)
|
||||
{
|
||||
struct isoburn_toc_entry *t;
|
||||
int ret= 0;
|
||||
int ret= 0, num_sessions, num_tracks;
|
||||
struct burn_session **sessions;
|
||||
struct burn_track **tracks;
|
||||
struct burn_toc_entry entry;
|
||||
|
||||
if(disc==NULL)
|
||||
return(0);
|
||||
if(disc->toc!=NULL) {
|
||||
for(t= disc->toc; t!=NULL; t= t->next)
|
||||
ret= t->start_lba + t->track_blocks;
|
||||
} else if(disc->disc!=NULL)
|
||||
} else if(disc->disc!=NULL) {
|
||||
sessions= burn_disc_get_sessions(disc->disc, &num_sessions);
|
||||
if(num_sessions > 0) {
|
||||
tracks = burn_session_get_tracks(sessions[num_sessions - 1],
|
||||
&num_tracks);
|
||||
if(num_tracks > 0) {
|
||||
burn_track_get_entry(tracks[num_tracks - 1], &entry);
|
||||
if(entry.extensions_valid & 1)
|
||||
ret= entry.start_lba + entry.track_blocks;
|
||||
}
|
||||
}
|
||||
/*
|
||||
ret= burn_disc_get_sectors(disc->disc);
|
||||
*/
|
||||
}
|
||||
return(ret);
|
||||
}
|
||||
|
||||
@ -1450,12 +1517,14 @@ 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;
|
||||
char volid[33], msg[160];
|
||||
struct isoburn *o;
|
||||
struct isoburn_toc_disc *disc= NULL;
|
||||
@ -1463,6 +1532,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)
|
||||
@ -1471,7 +1542,7 @@ int isoburn_set_msc1(struct burn_drive *d, int adr_mode, char *adr_value,
|
||||
return(-1);
|
||||
|
||||
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:;
|
||||
@ -1530,6 +1601,13 @@ 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);
|
||||
@ -1540,8 +1618,14 @@ not_found:;
|
||||
ret= isoburn_read_iso_head(d, lba, &size, volid, 1);
|
||||
if(ret<=0)
|
||||
continue;
|
||||
if(strcmp(volid, adr_value)!=0)
|
||||
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;
|
||||
}
|
||||
}
|
||||
@ -1559,7 +1643,64 @@ unknown_mode:;
|
||||
ex:;
|
||||
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,7 +1,7 @@
|
||||
/*
|
||||
data source for libisoburn.
|
||||
|
||||
Copyright 2007 - 2008 Vreixo Formoso Lopes <metalpain2002@yahoo.es>
|
||||
Copyright 2007 - 2009 Vreixo Formoso Lopes <metalpain2002@yahoo.es>
|
||||
and Thomas Schmitt <scdbackup@gmx.net>
|
||||
*/
|
||||
|
||||
@ -147,6 +147,10 @@ int ds_read_block(IsoDataSource *src, uint32_t lba, uint8_t *buffer)
|
||||
return 1;
|
||||
tiles[oldest].last_error_lba = lba;
|
||||
|
||||
#ifdef ISO_DATA_SOURCE_MISHAP
|
||||
ret= ISO_DATA_SOURCE_MISHAP;
|
||||
#else
|
||||
/* <<< pre libisofs-0.6.7 */
|
||||
/* It is not required by the specs of libisofs but implicitely assumed
|
||||
...
|
||||
But it is not possible to ignore FAILURE.
|
||||
@ -159,6 +163,8 @@ int ds_read_block(IsoDataSource *src, uint32_t lba, uint8_t *buffer)
|
||||
enough to make it appear plausible.
|
||||
*/
|
||||
ret= ISO_FILE_CANT_WRITE;
|
||||
#endif
|
||||
|
||||
if(ret >= 0)
|
||||
ret = -1;
|
||||
sprintf(msg, "ds_read_block(%lu) returns %d", (unsigned long) lba, ret);
|
||||
|
@ -6,7 +6,7 @@
|
||||
/*
|
||||
Class core of libisoburn.
|
||||
|
||||
Copyright 2007 - 2008 Vreixo Formoso Lopes <metalpain2002@yahoo.es>
|
||||
Copyright 2007 - 2009 Vreixo Formoso Lopes <metalpain2002@yahoo.es>
|
||||
Thomas Schmitt <scdbackup@gmx.net>
|
||||
*/
|
||||
|
||||
@ -353,6 +353,7 @@ 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];
|
||||
|
||||
@ -404,6 +405,7 @@ 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);
|
||||
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,6 +415,10 @@ 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_replace_mode(wopts, opts->replace_dir_mode,
|
||||
opts->replace_file_mode, opts->replace_uid, opts->replace_gid);
|
||||
@ -465,6 +471,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 +637,9 @@ 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->preferjoliet= 0;
|
||||
o->uid= geteuid();
|
||||
o->gid= getegid();
|
||||
@ -659,6 +673,9 @@ 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);
|
||||
return(1);
|
||||
}
|
||||
|
||||
@ -666,7 +683,8 @@ 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);
|
||||
return(1);
|
||||
}
|
||||
|
||||
@ -773,6 +791,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 +804,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 +841,15 @@ 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->aaip= !!(ext & 32);
|
||||
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->aaip) << 5);
|
||||
return(1);
|
||||
}
|
||||
|
||||
@ -839,6 +864,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 +877,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 +982,9 @@ 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);
|
||||
}
|
||||
|
||||
|
@ -250,6 +250,12 @@ 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 */
|
||||
|
||||
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. */
|
||||
@ -302,6 +308,9 @@ struct isoburn_imgen_opts {
|
||||
unsigned int joliet :1;
|
||||
unsigned int iso1999 :1;
|
||||
|
||||
/* ts A90121 */
|
||||
unsigned int aaip:1; /* Write eventual AAIP info containing ACL and EA */
|
||||
|
||||
/* relaxed constraints */
|
||||
|
||||
/*
|
||||
@ -357,6 +366,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 +430,19 @@ 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;
|
||||
};
|
||||
|
||||
|
||||
|
@ -6,7 +6,7 @@
|
||||
/*
|
||||
libisofs related functions of libisoburn.
|
||||
|
||||
Copyright 2007 - 2008 Vreixo Formoso Lopes <metalpain2002@yahoo.es>
|
||||
Copyright 2007 - 2009 Vreixo Formoso Lopes <metalpain2002@yahoo.es>
|
||||
Thomas Schmitt <scdbackup@gmx.net>
|
||||
*/
|
||||
|
||||
@ -27,6 +27,8 @@
|
||||
|
||||
#endif /* Xorriso_standalonE */
|
||||
|
||||
#define Libisoburn_with_aaiP yes
|
||||
|
||||
#include "isoburn.h"
|
||||
#include "libisoburn.h"
|
||||
|
||||
@ -166,6 +168,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 +202,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);
|
||||
|
||||
#ifdef Libisoburn_with_aaiP
|
||||
iso_read_opts_set_no_aaip(ropts, read_opts->noaaip);
|
||||
#endif /* Libisoburn_with_aaiP */
|
||||
|
||||
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);
|
||||
|
@ -2,7 +2,7 @@
|
||||
/*
|
||||
API definition of libisoburn.
|
||||
|
||||
Copyright 2007-2008 Vreixo Formoso Lopes <metalpain2002@yahoo.es>
|
||||
Copyright 2007-2009 Vreixo Formoso Lopes <metalpain2002@yahoo.es>
|
||||
and Thomas Schmitt <scdbackup@gmx.net>
|
||||
*/
|
||||
|
||||
@ -124,6 +124,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 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 +216,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 6
|
||||
#define isoburn_libisofs_req_micro 16
|
||||
|
||||
/** 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 0
|
||||
#define isoburn_libburn_req_minor 6
|
||||
#define isoburn_libburn_req_micro 4
|
||||
|
||||
|
||||
/** The minimum version of libisofs to be used with this version of libisoburn
|
||||
@ -243,8 +259,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 2
|
||||
#define isoburn_header_version_minor 3
|
||||
#define isoburn_header_version_micro 6
|
||||
/** Note:
|
||||
Above version numbers are also recorded in configure.ac because libtool
|
||||
wants them as parameters at build time.
|
||||
@ -336,7 +352,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 +370,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.
|
||||
@ -364,6 +382,10 @@ int isoburn_drive_scan_and_grab(struct burn_drive_info *drive_infos[],
|
||||
table of content by scanning for ISO image headers.
|
||||
(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
|
||||
@return 1 = success , 0 = drive not found , <0 = other error
|
||||
*/
|
||||
int isoburn_drive_aquire(struct burn_drive_info *drive_infos[],
|
||||
@ -374,6 +396,7 @@ int isoburn_drive_aquire(struct burn_drive_info *drive_infos[],
|
||||
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
|
||||
*/
|
||||
@ -449,12 +472,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);
|
||||
@ -502,7 +527,8 @@ struct isoburn_toc_disc *isoburn_toc_drive_get_disc(struct burn_drive *d);
|
||||
|
||||
|
||||
/** Tell the number of 2048 byte blocks covered by the table of content.
|
||||
Wrapper for: burn_disc_get_sectors()
|
||||
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
|
||||
@ -553,7 +579,7 @@ struct isoburn_toc_track **isoburn_toc_session_get_tracks(
|
||||
struct isoburn_toc_session *s, int *num);
|
||||
|
||||
|
||||
/** Obtain a copy of the entry which describes a particular itrack.
|
||||
/** 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
|
||||
@ -598,6 +624,35 @@ 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 drive 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);
|
||||
|
||||
|
||||
/* ----------------------------------------------------------------------- */
|
||||
/*
|
||||
|
||||
@ -646,6 +701,18 @@ 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).
|
||||
@return 1 success, <=0 failure
|
||||
*/
|
||||
#define isoburn_ropt_norock 1
|
||||
@ -653,6 +720,10 @@ 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
|
||||
|
||||
int isoburn_ropt_set_extensions(struct isoburn_read_opts *o, int ext);
|
||||
int isoburn_ropt_get_extensions(struct isoburn_read_opts *o, int *ext);
|
||||
|
||||
@ -728,6 +799,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_ihas_ea 128
|
||||
*/
|
||||
|
||||
int isoburn_ropt_get_size_what(struct isoburn_read_opts *o,
|
||||
uint32_t *size, int *has_what);
|
||||
|
||||
@ -795,11 +873,16 @@ int isoburn_igopt_get_level(struct isoburn_imgen_opts *o, int *level);
|
||||
Weaker than RockRidge, but also readable with Linux.
|
||||
bit2= iso1999
|
||||
This is rather exotic. Better do not surprise the readers.
|
||||
bit5= aaip
|
||||
The libisofs specific SUSP based extension of ECMA-119 which
|
||||
can encode ACL and XFS-style Extended Attributes.
|
||||
@return 1 success, <=0 failure
|
||||
*/
|
||||
#define isoburn_igopt_rockridge 1
|
||||
#define isoburn_igopt_joliet 2
|
||||
#define isoburn_igopt_iso1999 4
|
||||
/* ts A90122 */
|
||||
#define isoburn_igopt_aaip 32
|
||||
int isoburn_igopt_set_extensions(struct isoburn_imgen_opts *o, int ext);
|
||||
int isoburn_igopt_get_extensions(struct isoburn_imgen_opts *o, int *ext);
|
||||
|
||||
@ -840,6 +923,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
|
||||
@ -850,6 +954,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);
|
||||
|
||||
@ -952,6 +1060,21 @@ 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);
|
||||
|
||||
|
||||
|
||||
/* ----------------------------------------------------------------------- */
|
||||
/* End of Options for image generation */
|
||||
/* ----------------------------------------------------------------------- */
|
||||
@ -1051,9 +1174,10 @@ off_t isoburn_disc_available_space(struct burn_drive *d,
|
||||
|
||||
|
||||
/** Obtain the start block number of the most recent session on media. In
|
||||
case of random access media this will always be 0. Succesfull return is
|
||||
case of random access media this will normally be 0. Successfull return is
|
||||
not a guarantee that there is a ISO-9660 image at all. The call will fail,
|
||||
nevertheless,if isoburn_disc_get_status() returns not BURN_DISC_APPENDABLE.
|
||||
nevertheless,if isoburn_disc_get_status() returns not BURN_DISC_APPENDABLE
|
||||
or BURN_DISC_FULL.
|
||||
Note: The result of this call may be fabricated by a previous call of
|
||||
isoburn_set_msc1() which can override the rule to load the most recent
|
||||
session.
|
||||
@ -1181,10 +1305,9 @@ int isoburn_prepare_blind_grow(struct burn_drive *d, struct burn_disc **disc,
|
||||
|
||||
|
||||
/**
|
||||
Revoke isoburn_prepare_new_image() or isoburn_prepare_disc() instead of
|
||||
running isoburn_disc_write().
|
||||
Revoke isoburn_prepare_*() instead of running isoburn_disc_write().
|
||||
libisofs reserves resources and maybe already starts generating the
|
||||
image stream when one of above two calls is performed. It is mandatory to
|
||||
image stream when one of above three calls is performed. It is mandatory to
|
||||
either run isoburn_disc_write() or to revoke the preparations by the
|
||||
call described here.
|
||||
@since 0.1.0
|
||||
@ -1223,7 +1346,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
|
||||
|
@ -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));
|
||||
|
@ -4,8 +4,8 @@
|
||||
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.2.pl00.tar.gz
|
||||
Copyright (C) 2006-2008 Thomas Schmitt, provided under GPL version 2.
|
||||
http://scdbackup.sourceforge.net/xorriso-0.3.6.pl00.tar.gz
|
||||
Copyright (C) 2006-2009 Thomas Schmitt, provided under GPL version 2.
|
||||
------------------------------------------------------------------------------
|
||||
|
||||
|
||||
@ -16,12 +16,15 @@ 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 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,20 @@ 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 anything that is needed except the following system
|
||||
components:
|
||||
libc, libpthread
|
||||
plus on FreeBSD: libiconv, libcam
|
||||
Optional at compile time are:
|
||||
libreadline and the readline-dev headers make dialog mode more convenient.
|
||||
on Linux: libacl and libacl-devel allow getting and setting ACLs.
|
||||
If they were present at compile time, then the optional libraries have to
|
||||
be present at runtime, too.
|
||||
|
||||
Obtain xorriso-0.2.2.pl00.tar.gz, take it to a directory of your choice and do:
|
||||
Obtain xorriso-0.3.6.pl00.tar.gz, take it to a directory of your choice and do:
|
||||
|
||||
tar xzf xorriso-0.2.2.pl00.tar.gz
|
||||
cd xorriso-0.2.2
|
||||
tar xzf xorriso-0.3.6.pl00.tar.gz
|
||||
cd xorriso-0.3.6
|
||||
|
||||
Within that directory execute:
|
||||
|
||||
@ -53,8 +62,8 @@ which you may strip 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
|
||||
@ -74,6 +83,18 @@ The installation creates several alias links pointing to the xorriso binary:
|
||||
xorrecord starts xorriso with -as cdrecord emulation already enabled
|
||||
osirrox starts with -osirrox image-to-disk copying already enabled
|
||||
|
||||
If you want to avoid dependecy on libreadline although the libreadline
|
||||
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()
|
||||
|
||||
If you want xorriso to report a "Build timestamp" with its option -version:
|
||||
make buildstamped
|
||||
|
||||
|
||||
Drives and Disk File Objects
|
||||
|
||||
@ -113,9 +134,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
|
||||
@ -147,6 +173,26 @@ and vice versa:
|
||||
| less
|
||||
|
||||
|
||||
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
|
||||
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
|
||||
newline character. The first 25 say "xorriso sector bitmap v2 ", the
|
||||
remaining six characters give the size of the info text as decimal number.
|
||||
This number of bytes follows the first 32 and will not be interpreted
|
||||
by xorriso. They are rather to inform a human reader about the media type
|
||||
and its track layout.
|
||||
After the info text there are two 4 byte signed integers, most significant
|
||||
byte first. The first one, N, gives the number of bits in the following bitmap
|
||||
and the second number S gives the number of 2 KiB blocks governed by a single
|
||||
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.
|
||||
|
||||
|
||||
libisoburn
|
||||
|
||||
xorriso is based on libisofs which does ISO 9600 filesystem aspects and on
|
||||
@ -166,9 +212,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.2 :
|
||||
- libburn.so.4 , version libburn-0.5.0 or higher
|
||||
- libisofs.so.6 , version libisofs-0.6.6 or higher
|
||||
Dynamic library and compile time header requirements for libisoburn-0.3.6 :
|
||||
- libburn.so.4 , version libburn-0.6.4 or higher
|
||||
- libisofs.so.6 , version libisofs-0.6.16 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.
|
||||
@ -197,7 +243,7 @@ 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-2009 Mario Danic, Vreixo Formoso, Thomas Schmitt.
|
||||
|
||||
libburnia-project.org is inspired by and in other components still containing
|
||||
parts of old
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -1,7 +1,7 @@
|
||||
#!/bin/sh
|
||||
|
||||
# compile_xorriso.sh
|
||||
# Copyright 2005 - 2008 Thomas Schmitt, scdbackup@gmx.net, GPL
|
||||
# Copyright 2005 - 2009 Thomas Schmitt, scdbackup@gmx.net, GPL
|
||||
#
|
||||
# Not intended for general use in production installations !
|
||||
# Rather use: ./bootstrap ; ./configure ; make
|
||||
@ -10,7 +10,7 @@
|
||||
# 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-
|
||||
burn=./libburn-develop/libburn
|
||||
isoburn=./libisoburn-develop/libisoburn
|
||||
xorr=./libisoburn-develop/xorriso
|
||||
@ -22,6 +22,8 @@ do_strip=0
|
||||
static_opts=
|
||||
warn_opts="-Wall"
|
||||
nglibisofs=1
|
||||
def_libreadline="-DXorriso_with_readlinE"
|
||||
link_libreadline="-lreadline"
|
||||
|
||||
for i in "$@"
|
||||
do
|
||||
@ -35,11 +37,16 @@ do
|
||||
elif test "$i" = "-g"
|
||||
then
|
||||
debug_opts="-g -O0"
|
||||
elif test "$i" = "-no_libreadline"
|
||||
then
|
||||
def_libreadline=""
|
||||
link_libreadline=""
|
||||
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 " -no_libreadline do not compile for and link with libreadline."
|
||||
echo " -do_diet produce capability reduced lean version."
|
||||
echo " -do_strip apply program strip to compiled programs."
|
||||
echo " -g produce debuggable programm."
|
||||
@ -52,44 +59,46 @@ 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
|
||||
|
||||
timestamp="$(date -u '+%Y.%m.%d.%H%M%S')"
|
||||
echo "Version timestamp : $(sed -e 's/#define Xorriso_timestamP "//' -e 's/"$//' "$xorr"/xorriso_timestamp.h)"
|
||||
echo "Build timestamp : $timestamp"
|
||||
|
||||
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 -DXorriso_with_readlinE \
|
||||
cc -I. -DXorriso_with_maiN $def_libreadline \
|
||||
$warn_opts \
|
||||
$static_opts \
|
||||
$debug_opts \
|
||||
$def_opts \
|
||||
$largefile_opts \
|
||||
\
|
||||
-DXorriso_build_timestamP='"'"$timestamp"'"' \
|
||||
\
|
||||
-o "$xorr"/xorriso \
|
||||
\
|
||||
"$xorr"/xorriso.c \
|
||||
@ -130,9 +139,10 @@ cc -I. -DXorriso_with_maiN -DXorriso_with_regeX -DXorriso_with_readlinE \
|
||||
\
|
||||
$libisofs \
|
||||
\
|
||||
-lreadline \
|
||||
$link_libreadline \
|
||||
\
|
||||
-lpthread
|
||||
-lpthread \
|
||||
-lacl
|
||||
|
||||
ret=$?
|
||||
if test "$ret" = 0
|
||||
|
@ -1,4 +1,4 @@
|
||||
AC_INIT([xorriso], [0.2.2], [http://libburnia-project.org])
|
||||
AC_INIT([xorriso], [0.3.6], [http://libburnia-project.org])
|
||||
AC_PREREQ([2.50])
|
||||
dnl AC_CONFIG_HEADER([config.h])
|
||||
|
||||
@ -8,15 +8,15 @@ AC_CANONICAL_TARGET
|
||||
AM_INIT_AUTOMAKE([subdir-objects])
|
||||
|
||||
BURN_MAJOR_VERSION=0
|
||||
BURN_MINOR_VERSION=5
|
||||
BURN_MICRO_VERSION=1
|
||||
BURN_MINOR_VERSION=6
|
||||
BURN_MICRO_VERSION=5
|
||||
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=6
|
||||
LIBISOFS_MICRO_VERSION=16
|
||||
AC_SUBST(LIBISOFS_MAJOR_VERSION)
|
||||
AC_SUBST(LIBISOFS_MINOR_VERSION)
|
||||
AC_SUBST(LIBISOFS_MICRO_VERSION)
|
||||
@ -43,6 +43,10 @@ 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, , )
|
||||
|
||||
AC_PROG_LIBTOOL
|
||||
AC_SUBST(LIBTOOL_DEPS)
|
||||
LIBTOOL="$LIBTOOL --silent"
|
||||
@ -76,6 +80,16 @@ TARGET_SHIZZLE
|
||||
AC_SUBST(ARCH)
|
||||
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,17 +109,52 @@ else
|
||||
CFLAGS="$CFLAGS -DDEBUG"
|
||||
fi
|
||||
|
||||
|
||||
AC_ARG_ENABLE(libreadline,
|
||||
[ --enable-libreadline Enable use of libreadline by xorriso, default=yes],
|
||||
, enable_libreadline=yes)
|
||||
if test x$enable_libreadline = xyes; then
|
||||
dnl Check whether there is readline-devel and readline-runtime.
|
||||
dnl If not, erase this macro which would enable use of readline(),add_history()
|
||||
READLINE_DEF="-DXorriso_with_readlinE"
|
||||
READLINE_DEF="-DXorriso_with_readlinE"
|
||||
dnl The empty yes case obviously causes -lreadline to be linked
|
||||
AC_CHECK_HEADER(readline/readline.h, AC_CHECK_LIB(readline, readline, , READLINE_DEF= ), READLINE_DEF= )
|
||||
AC_CHECK_HEADER(readline/readline.h, AC_CHECK_LIB(readline, readline, , READLINE_DEF= ), READLINE_DEF= )
|
||||
dnl The X= in the yes case prevents that -lreadline gets linked twice
|
||||
AC_CHECK_HEADER(readline/history.h, AC_CHECK_LIB(readline, add_history, X= , READLINE_DEF= ), READLINE_DEF= )
|
||||
AC_CHECK_HEADER(readline/history.h, AC_CHECK_LIB(readline, add_history, X= , READLINE_DEF= ), READLINE_DEF= )
|
||||
else
|
||||
READLINE_DEF=
|
||||
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 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_CONFIG_FILES([
|
||||
Makefile
|
||||
version.h
|
||||
|
@ -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:<\/b>/\ <BR><b>Rock Ridge, POSIX, X\/Open:<\/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,11 +65,14 @@ 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>/' \
|
||||
-e 's/<b>Drive and media related inquiry actions:<\/b>/\ <BR><b>Drive and media related inquiry actions:<\/b><BR>\ <BR>/' \
|
||||
-e 's/<b>Navigation in ISO image/\ <BR><b>Navigation in ISO image/' \
|
||||
-e 's/^filesystem:<\/b>/filesystem:<\/b><BR>\ <BR>/' \
|
||||
-e 's/<b>Evaluation of readability and recovery:<\/b>/\ <BR><b>Evaluation of readability and recovery:<\/b><BR>\ <BR>/' \
|
||||
-e 's/<b>osirrox restore options:<\/b>/\ <BR><b>osirrox restore options:<\/b><BR>\ <BR>/' \
|
||||
-e 's/<b>Command compatibility emulations:<\/b>/\ <BR><b>Command compatibility emulations:<\/b><BR>\ <BR>/' \
|
||||
-e 's/^<p><b>−as</<p>\ <BR><b>\−as</' \
|
||||
|
@ -1,7 +1,7 @@
|
||||
#!/bin/sh
|
||||
|
||||
# make_xorriso_standalone.sh
|
||||
# Copyright 2008 Thomas Schmitt, scdbackup@gmx.net, GPL
|
||||
# Copyright 2008 - 2009 Thomas Schmitt, scdbackup@gmx.net, GPL
|
||||
#
|
||||
# Not intended for general use in production installations !
|
||||
#
|
||||
@ -25,11 +25,11 @@
|
||||
current_dir=$(pwd)
|
||||
lone_dir="$current_dir"/"xorriso-standalone"
|
||||
|
||||
xorriso_rev=0.2.2
|
||||
xorriso_rev=0.3.6
|
||||
# For unstable uploads:
|
||||
# xorriso_pl=""
|
||||
xorriso_pl=""
|
||||
# For stable releases:
|
||||
xorriso_pl=".pl00"
|
||||
# xorriso_pl=".pl00"
|
||||
|
||||
with_bootstrap_tarball=1
|
||||
|
||||
@ -145,9 +145,11 @@ 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 COPYRIGHT "$lone_dir"/libisofs
|
||||
|
||||
# To get a common version.h
|
||||
|
1180
xorriso/xorriso.1
1180
xorriso/xorriso.1
File diff suppressed because it is too large
Load Diff
6131
xorriso/xorriso.c
6131
xorriso/xorriso.c
File diff suppressed because it is too large
Load Diff
@ -2,7 +2,7 @@
|
||||
/* 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-2009 Thomas Schmitt, <scdbackup@gmx.net>
|
||||
|
||||
Provided under GPL version 2.
|
||||
|
||||
@ -150,6 +150,104 @@ int Xorriso_process_msg_queues(struct XorrisO *xorriso, 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
|
||||
later time be retrieved by the application.
|
||||
These redirection caches can be stacked to allow stacked applications.
|
||||
xorriso itself uses them for internal purposes.
|
||||
*/
|
||||
|
||||
/* A list item able of forming double chained lists */
|
||||
struct Xorriso_lsT;
|
||||
|
||||
/** Maximum number of stacked redirections */
|
||||
#define Xorriso_max_outlist_stacK 32
|
||||
|
||||
/** Enable a new redirection of info and/or result channel. The normal message
|
||||
output and eventual older redirections will not see new messages until
|
||||
the redirection is ended by a call to Xorriso_pull_outlists() with the
|
||||
stack_handle value returned by this call.
|
||||
Redirected output is not written to the files of Xorriso_option_logfile()
|
||||
and the Xorriso_option_pkt_output() protocol will not be applied.
|
||||
@param xorriso The environment handle
|
||||
@param stack_handle returns an id number which is unique as long as
|
||||
its redirection is stacked. It may be re-used after
|
||||
its redirection was pulled from the stack.
|
||||
@param flag Bitfield for control purposes
|
||||
bit0= redirect result channel
|
||||
bit1= redirect info channel
|
||||
If bit0 and bit1 are 0, both channels get redirected.
|
||||
@return 1 on success, <=0 if failure
|
||||
*/
|
||||
int Xorriso_push_outlists(struct XorrisO *xorriso, int *stack_handle,
|
||||
int flag);
|
||||
|
||||
|
||||
/** Disable the redirection given by stack_handle. If it was the current
|
||||
receiver of messages then switch output to the next older redirection
|
||||
resp. to the normal channels if no redirections are stacked any more.
|
||||
The messages collected by the disabled redirection are handed out as
|
||||
two lists. Both lists have to be disposed via Xorriso_lst_destroy_all()
|
||||
when they are no longer needed.
|
||||
The message lists are either NULL or represented by their first
|
||||
Xorriso_lsT item.
|
||||
@param xorriso The environment handle
|
||||
@param stack_handle The id number returned by Xorriso_push_outlists()
|
||||
@param result_list Result and mark messages (usually directed to stdout)
|
||||
@param info_list Info and mark messages (usually directed to stderr)
|
||||
@param flag unused yet, submit 0
|
||||
@return 1 on success, <=0 if failure
|
||||
*/
|
||||
int Xorriso_pull_outlists(struct XorrisO *xorriso, int stack_handle,
|
||||
struct Xorriso_lsT **result_list,
|
||||
struct Xorriso_lsT **info_list, int flag);
|
||||
|
||||
|
||||
/** Obtain the text message from the current list item.
|
||||
@param entry The current list item
|
||||
@param flag unused yet, submit 0
|
||||
@return Pointer to the text content of the list item.
|
||||
This pointer does not have to be freed.
|
||||
*/
|
||||
char *Xorriso_lst_get_text(struct Xorriso_lsT *entry, int flag);
|
||||
|
||||
|
||||
/** Obtain the address of the next item in the chain of messages.
|
||||
An iteration over the output of Xorriso_pull_outlists() starts at the
|
||||
returned result_list resp. info_list and ends when this function returns
|
||||
NULL.
|
||||
@param entry The current list item
|
||||
@param flag unused yet, submit 0
|
||||
@return Pointer to the next list item or NULL if end of list.
|
||||
This pointer does not have to be freed.
|
||||
*/
|
||||
struct Xorriso_lsT *Xorriso_lst_get_next(struct Xorriso_lsT *entry, int flag);
|
||||
|
||||
|
||||
/** Obtain the address of the previous item in the chain of messages.
|
||||
@param entry The current list item
|
||||
@param flag unused yet, submit 0
|
||||
@return Pointer to the previous list item or NULL if start of list.
|
||||
This pointer does not have to be freed.
|
||||
*/
|
||||
struct Xorriso_lsT *Xorriso_lst_get_prev(struct Xorriso_lsT *entry, int flag);
|
||||
|
||||
|
||||
/** Destroy all list items which are directly or indirectly connected to
|
||||
the given link item.
|
||||
Apply this to each of the two list handles obtained by
|
||||
Xorriso_pull_outlists() when the lists are no longer needed.
|
||||
@param lstring *lstring will be freed and set to NULL.
|
||||
It is not dangerous to submit a pointer to a NULL-pointer.
|
||||
@param flag unused yet, submit 0
|
||||
@return -1= lstring was NULL (i.e. wrong use of this call),
|
||||
0= *lstring was already NULL,
|
||||
1= item actually disposed
|
||||
*/
|
||||
int Xorriso_lst_destroy_all(struct Xorriso_lsT **lstring, int flag);
|
||||
|
||||
|
||||
|
||||
/* ---------------------------- Options API ------------------------ */
|
||||
/* See man 1 xorriso for explanation of the particular options */
|
||||
/*
|
||||
@ -165,6 +263,11 @@ int Xorriso_process_msg_queues(struct XorrisO *xorriso, int flag);
|
||||
/* 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
|
||||
@ -184,6 +287,25 @@ 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 -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);
|
||||
|
||||
@ -203,6 +325,20 @@ 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);
|
||||
|
||||
/* Option -check_media */
|
||||
int Xorriso_option_check_media(struct XorrisO *xorriso,
|
||||
int argc, char **argv, int *idx, int flag);
|
||||
|
||||
/* Option -check_media_defaults */
|
||||
int Xorriso_option_check_media_defaults(struct XorrisO *xorriso,
|
||||
int argc, char **argv, int *idx, int flag);
|
||||
|
||||
/* Option -chgrp alias -chgrpi , chgrp_r alias chgrpi */
|
||||
/* @param flag bit0=recursive (-chgrp_r)
|
||||
*/
|
||||
@ -275,9 +411,16 @@ 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);
|
||||
|
||||
@ -308,6 +451,10 @@ int Xorriso_option_error_behavior(struct XorrisO *xorriso,
|
||||
int Xorriso_option_extract(struct XorrisO *xorriso, char *disk_path,
|
||||
char *iso_path, int flag);
|
||||
|
||||
/* Option -extract_cut */
|
||||
int Xorriso_option_extract_cut(struct XorrisO *xorriso, char *iso_rr_path,
|
||||
char *start, char *count, char *disk_path, int flag);
|
||||
|
||||
/* Option -follow */
|
||||
int Xorriso_option_follow(struct XorrisO *xorriso, char *mode, int flag);
|
||||
|
||||
@ -322,6 +469,12 @@ 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);
|
||||
|
||||
@ -341,6 +494,10 @@ int Xorriso_option_iso_rr_pattern(struct XorrisO *xorriso, char *mode,
|
||||
/* Option -joliet "on"|"off" */
|
||||
int Xorriso_option_joliet(struct XorrisO *xorriso, char *mode, int flag);
|
||||
|
||||
/* Option -list_delimiter */
|
||||
int Xorriso_option_list_delimiter(struct XorrisO *xorriso, char *text,
|
||||
int flag);
|
||||
|
||||
/* Option -list_formats */
|
||||
int Xorriso_option_list_formats(struct XorrisO *xorriso, int flag);
|
||||
|
||||
@ -398,6 +555,13 @@ int Xorriso_option_mark(struct XorrisO *xorriso, char *mark, int flag);
|
||||
int Xorriso_option_mkdiri(struct XorrisO *xorriso, int argc, char **argv,
|
||||
int *idx, int flag);
|
||||
|
||||
/* Option -mount */
|
||||
/* @param bit0= print mount command to result channel rather than performing it
|
||||
*/
|
||||
int Xorriso_option_mount(struct XorrisO *xorriso, char *dev, char *adr_mode,
|
||||
char *adr, char *cmd, int flag);
|
||||
|
||||
|
||||
/* Option -mv alias -mvi */
|
||||
int Xorriso_option_mvi(struct XorrisO *xorriso, int argc, char **argv,
|
||||
int *idx, int flag);
|
||||
@ -408,14 +572,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);
|
||||
@ -439,7 +604,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 */
|
||||
@ -474,6 +640,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);
|
||||
@ -503,6 +673,26 @@ int Xorriso_option_rom_toc_scan(struct XorrisO *xorriso, char *mode,
|
||||
/* 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);
|
||||
|
||||
/* Option -speed */
|
||||
int Xorriso_option_speed(struct XorrisO *xorriso, char *speed, int flag);
|
||||
|
||||
@ -551,6 +741,8 @@ int Xorriso_option_version(struct XorrisO *xorriso, int flag);
|
||||
/* Option -volid */
|
||||
int Xorriso_option_volid(struct XorrisO *xorriso, char *volid, int flag);
|
||||
|
||||
/* Option -xattr "on"|"off" */
|
||||
int Xorriso_option_xattr(struct XorrisO *xorriso, char *mode, int flag);
|
||||
|
||||
#endif /* Xorriso_includeD */
|
||||
|
||||
|
@ -2,7 +2,7 @@
|
||||
|
||||
<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="keywords" CONTENT="xorriso, libburn, libburnia, burn, CD, DVD, ISO, ISO 9660, RockRidge, Rock Ridge, 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>
|
||||
</HEAD>
|
||||
@ -14,12 +14,12 @@
|
||||
<P><H2> Homepage of </H2>
|
||||
<H1> xorriso </H1>
|
||||
|
||||
<H2>ISO 9660 Rock Ridge Filesystem Manipulator for Linux</H2>
|
||||
<H2>ISO 9660 Rock Ridge Filesystem Manipulator for Linux and FreeBSD</H2>
|
||||
</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
|
||||
@ -45,13 +45,25 @@ and to MMC-5 for DVD or BD).
|
||||
<P>
|
||||
<H2>Software requirements :</H2>
|
||||
<DL>
|
||||
<DT>Linux with kernel 2.4 or higher (and libc, of course) :</DT>
|
||||
<DT>Linux with kernel 2.4 or higher, libc, libpthread :</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>or FreeBSD, libc, libpthread :</DT>
|
||||
<DD>ATAPI/CAM support has to be enabled in the kernel, see atapicam(4).</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 not with CD, DVD-R, DVD+R, BD-R.
|
||||
</DD>
|
||||
<DT>libreadline and libreadline-dev</DT>
|
||||
<DD>are optional and eventually make dialog more convenient.</DD>
|
||||
<DT>libacl and libacl-devel</DT>
|
||||
<DD>are optional and eventually allow on Linux to get and set ACLs.</DD>
|
||||
</DL>
|
||||
</P>
|
||||
|
||||
@ -60,15 +72,16 @@ and to MMC-5 for DVD or BD).
|
||||
GPL software included:<BR>
|
||||
</H2>
|
||||
<DL>
|
||||
<DT>libburn-0.5.1</DT>
|
||||
<DD>reads and writes data from and to CD, DVD, BD-RE.</DD>
|
||||
<DT>libburn-0.6.5</DT>
|
||||
<DD>reads and writes data from and to CD, DVD, BD.</DD>
|
||||
<DD>(founded by Derek Foreman and Ben Jansens,
|
||||
furthered since August 2006 by
|
||||
developed and maintained since August 2006 by
|
||||
Thomas Schmitt from team of libburnia-project.org)</DD>
|
||||
<DT>libisofs-0.6.6</DT>
|
||||
<DT>libisofs-0.6.16</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.2</DT>
|
||||
<DD>(By Vreixo Formoso, Mario Danic and Thomas Schmitt
|
||||
from team of libburnia-project.org)</DD>
|
||||
<DT>libisoburn-0.3.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>
|
||||
@ -79,7 +92,7 @@ cdrecord and mkisofs.</A>
|
||||
</P>
|
||||
|
||||
<P>
|
||||
This program system has been tested on Intel/AMD Linux systems only.<BR>
|
||||
This program has been tested on Linux, FreeBSD, and Solaris systems.<BR>
|
||||
For ports to other usable systems <A HREF="#contact">contact us</A>.
|
||||
</P>
|
||||
|
||||
@ -89,7 +102,7 @@ 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.
|
||||
@ -98,10 +111,7 @@ Operates on an existing ISO image or creates a new one.
|
||||
Copies files from filesystem into the ISO image.
|
||||
</LI>
|
||||
<LI>
|
||||
Renames or deletes file objects in the ISO image.
|
||||
</LI>
|
||||
<LI>
|
||||
Changes file properties in the ISO image.
|
||||
Changes file properties, renames or deletes file objects in the ISO image.
|
||||
</LI>
|
||||
<LI>
|
||||
Updates ISO subtrees incrementally to match given disk subtrees.
|
||||
@ -111,17 +121,29 @@ Writes result as completely new image or as add-on session
|
||||
to optical media or filesystem objects.
|
||||
</LI>
|
||||
<LI>
|
||||
Can activate ISOLINUX boot images by El Torito boot record and by MBR.
|
||||
</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.
|
||||
</LI>
|
||||
<LI>
|
||||
Can record and restore ACL and xattr of disk files.
|
||||
</LI>
|
||||
<LI>
|
||||
Can issue commands to mount older sessions on Linux or FreeBSD.
|
||||
</LI>
|
||||
<LI>
|
||||
Can check media for damages and copy readable blocks to disk.
|
||||
</LI>
|
||||
<LI>
|
||||
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.
|
||||
@ -129,9 +151,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>
|
||||
@ -139,8 +158,14 @@ 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>
|
||||
<DD><KBD>0 -dev '/dev/sr0' rwrw-- : 'TSSTcorp' 'CDDVDW SH-S203B'</KBD></DD>
|
||||
<DD><KBD>1 -dev '/dev/scd1' rwrw-- : 'PHILIPS ' 'SPD3300L'</KBD></DD>
|
||||
<DD><KBD>2 -dev '/dev/hda' rwrw-- : 'HL-DT-ST' 'DVD-ROM GDR8162B'</KBD></DD>
|
||||
<DD><KBD>...</KBD></DD>
|
||||
<DT>Being superuser avoids permission problems with /dev/srN resp. /dev/hdX .
|
||||
</DT>
|
||||
<DT>Ordinary users should then get granted rw access to the /dev files
|
||||
@ -169,7 +194,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>
|
||||
@ -252,18 +277,22 @@ 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 or xattr will be recorded. Data reading will be avoided by
|
||||
accelerator option -disk_dev_ino.
|
||||
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 -acl on -xattr on -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>
|
||||
@ -274,6 +303,64 @@ with ".o" or ".swp" which are excluded by options -not_leaf.
|
||||
<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.
|
||||
</DT>
|
||||
<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 /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>
|
||||
@ -301,14 +388,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>
|
||||
@ -321,10 +412,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>
|
||||
@ -332,8 +419,8 @@ 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.2.pl00.tar.gz">xorriso-0.2.2.pl00.tar.gz</A>
|
||||
(1020 KB).
|
||||
<DD><A HREF="xorriso-0.3.6.pl00.tar.gz">xorriso-0.3.6.pl00.tar.gz</A>
|
||||
(1180 KB).
|
||||
</DD>
|
||||
</DL>
|
||||
</DD>
|
||||
@ -357,31 +444,35 @@ an <A HREF="http://www.opensource.org/">Open Source</A> approved license</DD>
|
||||
</P>
|
||||
|
||||
<HR>
|
||||
<P>
|
||||
Bug fixes towards xorriso-0.2.0.pl00:
|
||||
<UL>
|
||||
|
||||
<LI>libburn could not access drives /dev/scdN without existing /dev/srN</LI>
|
||||
<P>
|
||||
Bug fixes towards xorriso-0.3.4.pl00:
|
||||
<UL>
|
||||
<LI>Solaris recognized Rock Ridge in ISO images from xorriso
|
||||
only if the new AAIP extension hid a bug with -compliance old_rr</LI>
|
||||
<LI>Solaris was not able to use the ".." directory entry for navigation
|
||||
in xorriso generated ISO images</LI>
|
||||
<!--
|
||||
<LI>- none -</LI>
|
||||
-->
|
||||
|
||||
</UL>
|
||||
</P>
|
||||
<P>
|
||||
Enhancements towards previous stable version xorriso-0.2.0.pl00:
|
||||
<UL>
|
||||
|
||||
<LI>New option -grow_blindly</LI>
|
||||
<LI>Options -C and -M with -as mkisofs emulation</LI>
|
||||
<LI>Options with -as cdrecord emulation:<BR>
|
||||
-multi , -msinfo , --grow_overwriteable_iso , write_start_address= ,
|
||||
-isosize , tsize=
|
||||
</LI>
|
||||
<LI>make install creates xorriso aliases as symbolic links:
|
||||
osirrox, xorrisofs, xorrecord
|
||||
</P>
|
||||
|
||||
<P>
|
||||
Enhancements towards previous stable version xorriso-0.3.4.pl00:
|
||||
<UL>
|
||||
<LI>
|
||||
Dummy MMC adapter for compilation on systems other than Linux, FreeBSD
|
||||
</LI>
|
||||
<LI>
|
||||
Can serve growisofs if started as xorrisofs, genisofs, mkisofs, genisoimage
|
||||
Default of -compliance has been changed to "old_rr". The previous default is
|
||||
now available as "new_rr".
|
||||
</LI>
|
||||
<LI>
|
||||
New -stream_recording modes with start address or "data". "on" is now 32s.
|
||||
</LI>
|
||||
|
||||
</UL>
|
||||
</P>
|
||||
|
||||
@ -389,25 +480,26 @@ Can serve growisofs if started as xorrisofs, genisofs, mkisofs, genisoimage
|
||||
|
||||
<P>
|
||||
<DL>
|
||||
<DT><H3>Development snapshot, version 0.2.3 :</H3></DT>
|
||||
<DD>Bug fixes towards xorriso-0.2.2.pl00:
|
||||
<DT><H3>Development snapshot, version 0.3.7 :</H3></DT>
|
||||
<DD>Bug fixes towards xorriso-0.3.6.pl00:
|
||||
<UL>
|
||||
<LI>- none yet -</LI>
|
||||
<!--
|
||||
-->
|
||||
</UL>
|
||||
</DD>
|
||||
<DD>Enhancements towards stable version 0.2.2.pl00:
|
||||
<DD>Enhancements towards stable version 0.3.6.pl00:
|
||||
<UL>
|
||||
<LI>- none yet -</LI>
|
||||
<!--
|
||||
<LI>- none yet -</LI>
|
||||
-->
|
||||
</UL>
|
||||
</DD>
|
||||
<DD> </DD>
|
||||
<DD><A HREF="README_xorriso_devel">README 0.2.3</A>
|
||||
<DD><A HREF="xorriso_help_devel">xorriso_0.2.3 -help</A></DD>
|
||||
<DD><A HREF="man_1_xorriso_devel.html">man xorriso (as of 0.2.3)</A></DD>
|
||||
<DD><A HREF="README_xorriso_devel">README 0.3.7</A>
|
||||
<DD><A HREF="xorriso_help_devel">xorriso_0.3.7 -help</A></DD>
|
||||
<DD><A HREF="man_1_xorriso_devel.html">man xorriso (as of 0.3.7)</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
|
||||
@ -417,8 +509,8 @@ libburnia libraries.
|
||||
installation see README)
|
||||
</DD>
|
||||
<DD>
|
||||
<A HREF="xorriso-0.2.3.tar.gz">xorriso-0.2.3.tar.gz</A>
|
||||
(1020 KB).
|
||||
<A HREF="xorriso-0.3.7.tar.gz">xorriso-0.3.7.tar.gz</A>
|
||||
(1180 KB).
|
||||
</DD>
|
||||
<DT>A dynamically linked development version of xorriso can be obtained
|
||||
from repositories of
|
||||
|
@ -16,19 +16,22 @@ 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)
|
||||
|
||||
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
|
||||
#
|
||||
# Trying to create a build timestamp file
|
||||
#
|
||||
BUILT_SOURCES = xorriso/xorriso_buildstamp.h
|
||||
# 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
|
||||
# .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_SOURCES = \
|
||||
@ -94,6 +97,11 @@ xorriso_xorriso_SOURCES = \
|
||||
libisofs/filter.h \
|
||||
libisofs/filter.c \
|
||||
libisofs/filters/xor_encrypt.c \
|
||||
libisofs/system_area.h \
|
||||
libisofs/system_area.c \
|
||||
libisofs/make_isohybrid_mbr.c \
|
||||
libisofs/aaip_0_2.h \
|
||||
libisofs/aaip_0_2.c \
|
||||
\
|
||||
libburn/async.c \
|
||||
libburn/async.h \
|
||||
@ -165,18 +173,17 @@ test_compare_file_SOURCES = test/compare_file.c
|
||||
# Install symbolic links to the xorriso binary
|
||||
#
|
||||
install-exec-hook:
|
||||
if test -e $(bindir)/xorrisofs ; then rm $(bindir)/xorrisofs ; else echo ; fi
|
||||
ln -s xorriso $(bindir)/xorrisofs
|
||||
if test -e $(bindir)/osirrox ; then rm $(bindir)/osirrox ; else echo ; fi
|
||||
ln -s xorriso $(bindir)/osirrox
|
||||
if test -e $(bindir)/xorrecord ; then rm $(bindir)/xorrecord ; else echo ; fi
|
||||
ln -s xorriso $(bindir)/xorrecord
|
||||
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
|
||||
|
||||
|
||||
|
||||
# <<< seems to be outperformed by the .PHONY above
|
||||
|
||||
# Trying to create a build timestamp file
|
||||
# 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
|
||||
@ -185,17 +192,7 @@ buildstamp:
|
||||
# For now make buildstamped has to be performed manually.
|
||||
buildstamped: buildstamp
|
||||
make
|
||||
#
|
||||
# Processing of the "all:" rule happens too late.
|
||||
# How to create a dependency of xorriso.c on buildstamp ?
|
||||
# Not working:
|
||||
# Add xorriso_buildstamp.h to xorriso_xorriso_SOURCES and make it depend
|
||||
# on buildstamp. It runs. But at quite random occasions.
|
||||
# xorriso/xorriso_buildstamp.h: buildstamp
|
||||
#
|
||||
# all: buildstamp
|
||||
|
||||
# <<< seems to be outperformed by the .PHONY above
|
||||
|
||||
## ========================================================================= ##
|
||||
|
||||
@ -231,6 +228,9 @@ EXTRA_DIST = \
|
||||
INSTALL \
|
||||
xorriso/changelog.txt \
|
||||
xorriso/xorriso_buildstamp_none.h \
|
||||
$(man_MANS)
|
||||
$(man_MANS) \
|
||||
libisofs/aaip-os-dummy.c \
|
||||
libisofs/aaip-os-linux.c \
|
||||
libisofs/aaip-os-freebsd.c
|
||||
|
||||
|
||||
|
@ -2,7 +2,7 @@
|
||||
/* 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-2009 Thomas Schmitt, <scdbackup@gmx.net>
|
||||
|
||||
Provided under GPL version 2.
|
||||
|
||||
@ -18,7 +18,7 @@
|
||||
#ifndef Xorriso_private_includeD
|
||||
#define Xorriso_private_includeD yes
|
||||
|
||||
#define Xorriso_program_versioN "0.2.2"
|
||||
#define Xorriso_program_versioN "0.3.6"
|
||||
|
||||
/** The source code release timestamp */
|
||||
#include "xorriso_timestamp.h"
|
||||
@ -34,23 +34,19 @@
|
||||
#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
|
||||
#define Smem_freE free
|
||||
#define SfileadrL 4096
|
||||
|
||||
/* <<< ??? */
|
||||
typedef int (*Cleanup_app_handler_T)();
|
||||
|
||||
struct LinkiteM; /* Trace of hops during symbolic link resolution */
|
||||
struct ExclusionS; /* List of -not_* conditions */
|
||||
struct PermiteM; /* Stack of temporarily altered access permissions */
|
||||
struct SpotlisT; /* List of intervals with different read qualities */
|
||||
struct CheckmediajoB; /* Parameters for Xorriso_check_media() */
|
||||
struct SectorbitmaP; /* Distiniction between valid and invalid sectors */
|
||||
|
||||
|
||||
/* maximum number of history lines to be reported with -status:long_history */
|
||||
@ -65,6 +61,13 @@ struct PermiteM; /* Stack of temporarily altered access permissions */
|
||||
#define Xorriso_rc_nuM 4
|
||||
|
||||
|
||||
/* Default setting for the size limit of single data files:
|
||||
100 extents with 4 GB - 2 kB each = 400 GB - 200 kB
|
||||
*/
|
||||
#define Xorriso_default_file_size_limiT \
|
||||
(((off_t) 400) * ((off_t) 1024*1024*1024) - (off_t) 204800)
|
||||
|
||||
|
||||
struct XorrisO { /* the global context of xorriso */
|
||||
|
||||
int libs_are_started;
|
||||
@ -92,9 +95,19 @@ struct XorrisO { /* the global context of xorriso */
|
||||
int add_plainly;
|
||||
off_t split_size;
|
||||
|
||||
char list_delimiter[81];
|
||||
|
||||
/* >>> put libisofs aspects here <<< */
|
||||
|
||||
int do_joliet;
|
||||
|
||||
int do_aaip; /* bit0= ACL in , bit1= ACL out , bit2= EA in , bit3= EA out
|
||||
bit4= record dev,inode , bit5= check dev,inode
|
||||
bit6= omit content check if dev,inode check is conclusive
|
||||
bit7= omit dev check mit bit5
|
||||
*/
|
||||
|
||||
int relax_compliance; /* opaque bitfield to be set by xorrisoburn */
|
||||
int do_follow_pattern;
|
||||
int do_follow_param;
|
||||
int do_follow_links;
|
||||
@ -114,8 +127,11 @@ struct XorrisO { /* the global context of xorriso */
|
||||
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 session_logfile[SfileadrL];
|
||||
int session_lba;
|
||||
@ -123,8 +139,14 @@ 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
|
||||
*/
|
||||
|
||||
int image_start_mode; /* From what address to load the ISO image
|
||||
@ -147,12 +169,18 @@ struct XorrisO { /* the global context of xorriso */
|
||||
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 volset_change_pending; /* whether -commit would make sense */
|
||||
int no_volset_present; /* set to 1 on first failure */
|
||||
|
||||
struct CheckmediajoB *check_media_default;
|
||||
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.
|
||||
*/
|
||||
@ -168,11 +196,29 @@ 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 keep_boot_image;
|
||||
int patch_isolinux_image;
|
||||
char boot_image_bin_path[SfileadrL];
|
||||
int boot_image_emul; /* 0=no emulation
|
||||
(1=emulation as hard disk)
|
||||
(2=emulation as floppy)
|
||||
*/
|
||||
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;
|
||||
@ -185,8 +231,20 @@ struct XorrisO { /* the global context of xorriso */
|
||||
of self-owned directories during restore
|
||||
*/
|
||||
|
||||
int dialog;
|
||||
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.
|
||||
@ -212,6 +270,8 @@ struct XorrisO { /* the global context of xorriso */
|
||||
|
||||
int temp_mem_limit;
|
||||
|
||||
off_t file_size_limit;
|
||||
|
||||
struct ExclusionS *disk_exclusions;
|
||||
int disk_excl_mode; /* bit0= on (else off)
|
||||
bit1= parameter too (else rekursion only)
|
||||
@ -226,7 +286,17 @@ struct XorrisO { /* the global context of xorriso */
|
||||
char mark_text[SfileadrL]; /* ( stdout+stderr, M: ) */
|
||||
int packet_output;
|
||||
char logfile[4][SfileadrL];
|
||||
FILE *logfile_fp[4];
|
||||
FILE *pktlog_fp;
|
||||
struct Xorriso_lsT *result_msglists[Xorriso_max_outlist_stacK];
|
||||
struct Xorriso_lsT *info_msglists[Xorriso_max_outlist_stacK];
|
||||
int msglist_flags[Xorriso_max_outlist_stacK]; /* bit0= result is redirected
|
||||
bit1= info is redirected
|
||||
*/
|
||||
int msglist_stackfill;
|
||||
|
||||
int status_history_max; /* for -status long_history */
|
||||
|
||||
|
||||
char report_about_text[20];
|
||||
int report_about_severity;
|
||||
@ -241,6 +311,7 @@ struct XorrisO { /* the global context of xorriso */
|
||||
FILE *errfile_fp;
|
||||
|
||||
int img_read_error_mode; /* 0=best_effort , 1=failure , 2=fatal */
|
||||
int extract_error_mode; /* 0=best_effort , 1=keep , 2=delete */
|
||||
|
||||
char return_with_text[20];
|
||||
int return_with_severity;
|
||||
@ -249,10 +320,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;
|
||||
@ -289,7 +358,7 @@ struct XorrisO { /* the global context of xorriso */
|
||||
struct PermiteM *perm_stack; /* Temporarily altered dir access permissions */
|
||||
|
||||
/* result (stdout, R: ) */
|
||||
char result_line[5*SfileadrL];
|
||||
char result_line[10*SfileadrL];
|
||||
int result_line_counter;
|
||||
int result_page_counter;
|
||||
int result_open_line_len;
|
||||
@ -322,7 +391,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);
|
||||
|
||||
@ -455,6 +524,57 @@ int Xorriso_auto_chmod(struct XorrisO *xorriso, char *disk_path, int flag);
|
||||
int Xorriso_protect_stdout(struct XorrisO *xorriso, int flag);
|
||||
|
||||
|
||||
/* @param flag bit0= mark untested areas as valid
|
||||
*/
|
||||
int Xorriso_spotlist_to_sectormap(struct XorrisO *xorriso,
|
||||
struct SpotlisT *spotlist,
|
||||
int read_chunk,
|
||||
struct SectorbitmaP **map,
|
||||
int flag);
|
||||
|
||||
int Xorriso_toc_to_string(struct XorrisO *xorriso, char **toc_text, int flag);
|
||||
|
||||
|
||||
/* @param flag bit0+1= what to aquire after giving up outdev
|
||||
0=none, 1=indev, 2=outdev, 3=both
|
||||
*/
|
||||
int Xorriso_reaquire_outdev(struct XorrisO *xorriso, int flag);
|
||||
|
||||
|
||||
/* Opens the -check_media data copy in for reading and writing
|
||||
*/
|
||||
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 Sfile_str(char target[SfileadrL], char *source, int flag);
|
||||
|
||||
double Sfile_microtime(int flag);
|
||||
@ -490,6 +610,65 @@ 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);
|
||||
|
||||
|
||||
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
|
||||
*/
|
||||
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);
|
||||
|
||||
|
||||
char *Text_shellsafe(char *in_text, char *out_text, int flag);
|
||||
@ -504,6 +683,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;
|
||||
|
||||
@ -519,6 +701,12 @@ int Linkitem_reset_stack(struct LinkiteM **o, struct LinkiteM *to, int flag);
|
||||
|
||||
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,
|
||||
@ -531,7 +719,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,
|
||||
@ -557,8 +745,32 @@ 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_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);
|
||||
|
||||
|
||||
struct SplitparT;
|
||||
|
||||
@ -582,33 +794,6 @@ int Splitpart__compose(char *adr, int partno, int total_parts,
|
||||
|
||||
int Splitparts_sort(struct SplitparT *o, int count, int flag);
|
||||
|
||||
struct LstrinG {
|
||||
char *text;
|
||||
struct LstrinG *prev,*next;
|
||||
};
|
||||
|
||||
int Lstring_destroy(struct LstrinG **lstring, int flag);
|
||||
|
||||
int Lstring_destroy_all(struct LstrinG **lstring, int flag);
|
||||
|
||||
/*
|
||||
@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)
|
||||
*/
|
||||
int Lstring_new_binary(struct LstrinG **lstring, char *data, int data_len,
|
||||
struct LstrinG *link, int flag);
|
||||
|
||||
/*
|
||||
@param flag Bitfield for control purposes
|
||||
bit0= insert before link rather than after it
|
||||
*/
|
||||
int Lstring_new(struct LstrinG **lstring, char *text, struct LstrinG *link,
|
||||
int flag);
|
||||
|
||||
int Lstring_append_binary(struct LstrinG **entry, char *data, int data_len,
|
||||
int flag);
|
||||
|
||||
|
||||
int Permstack_push(struct PermiteM **o, char *disk_path, struct stat *stbuf,
|
||||
int flag);
|
||||
@ -617,5 +802,69 @@ int Permstack_pop(struct PermiteM **o, struct PermiteM *stopper,
|
||||
struct XorrisO *xorriso, int flag);
|
||||
|
||||
|
||||
int Spotlist_new(struct SpotlisT **o, int flag);
|
||||
|
||||
int Spotlist_destroy(struct SpotlisT **o, int flag);
|
||||
|
||||
int Spotlist_add_item(struct SpotlisT *o, int start_lba, int blocks,
|
||||
int quality, int flag);
|
||||
|
||||
int Spotlist_count(struct SpotlisT *o, int flag);
|
||||
|
||||
int Spotlist_block_count(struct SpotlisT *o, int flag);
|
||||
|
||||
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);
|
||||
|
||||
|
||||
#define Xorriso_read_quality_gooD 0x7fffffff
|
||||
#define Xorriso_read_quality_sloW 0x60000000
|
||||
#define Xorriso_read_quality_partiaL 0x50000000
|
||||
#define Xorriso_read_quality_valiD 0x40000000
|
||||
#define Xorriso_read_quality_untesteD 0x3fffffff
|
||||
#define Xorriso_read_quality_invaliD 0x3ffffffe
|
||||
#define Xorriso_read_quality_tao_enD 0x28000000
|
||||
#define Xorriso_read_quality_off_tracK 0x20000000
|
||||
#define Xorriso_read_quality_unreadablE 0x00000000
|
||||
|
||||
|
||||
int Checkmediajob_new(struct CheckmediajoB **o, int flag);
|
||||
|
||||
int Checkmediajob_destroy(struct CheckmediajoB **o, int flag);
|
||||
|
||||
int Checkmediajob_copy(struct CheckmediajoB *from, struct CheckmediajoB *to,
|
||||
int flag);
|
||||
|
||||
int Sectorbitmap_new(struct SectorbitmaP **o, int sectors, int sector_size,
|
||||
int flag);
|
||||
int Sectorbitmap_destroy(struct SectorbitmaP **o, int flag);
|
||||
int Sectorbitmap_from_file(struct SectorbitmaP **o, char *path, char *msg,
|
||||
int *os_errno, int flag);
|
||||
int Sectorbitmap_to_file(struct SectorbitmaP *o, char *path, char *info,
|
||||
char *msg, int *os_errno, int flag);
|
||||
int Sectorbitmap_set(struct SectorbitmaP *o, int sector, int flag);
|
||||
int Sectorbitmap_set_range(struct SectorbitmaP *o,
|
||||
int start_sector, int sectors, int flag);
|
||||
int Sectorbitmap_is_set(struct SectorbitmaP *o, int sector, int flag);
|
||||
int Sectorbitmap_bytes_are_set(struct SectorbitmaP *o,
|
||||
off_t start_byte, off_t end_byte, int flag);
|
||||
|
||||
int Sectorbitmap_get_layout(struct SectorbitmaP *o,
|
||||
int *sectors, int *sector_size, int flag);
|
||||
|
||||
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.07.18.120001"
|
||||
#define Xorriso_timestamP "2009.03.16.090001"
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -4,7 +4,7 @@
|
||||
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-2009 Thomas Schmitt, <scdbackup@gmx.net>
|
||||
|
||||
Provided under GPL version 2.
|
||||
|
||||
@ -14,14 +14,12 @@
|
||||
#ifndef Xorrisoburn_includeD
|
||||
#define Xorrisoburn_includeD yes
|
||||
|
||||
struct XorrisO;
|
||||
struct FindjoB;
|
||||
|
||||
/* 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 2
|
||||
#define xorriso_libisoburn_req_minor 3
|
||||
#define xorriso_libisoburn_req_micro 6
|
||||
|
||||
int Xorriso_startup_libraries(struct XorrisO *xorriso, int flag);
|
||||
|
||||
@ -54,9 +52,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,
|
||||
@ -69,10 +74,14 @@ 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
|
||||
*/
|
||||
@ -202,9 +211,15 @@ 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);
|
||||
|
||||
#ifdef NIX
|
||||
|
||||
/* @param flag bit0= do not mark image as changed */
|
||||
int Xorriso_set_publisher(struct XorrisO *xorriso, char *name, int flag);
|
||||
|
||||
/* @param flag bit0= do not mark image as changed */
|
||||
int Xorriso_set_application_id(struct XorrisO *xorriso, char *name, int flag);
|
||||
|
||||
#endif /* NIX */
|
||||
|
||||
/* @param flag bit0= node_pt is a valid ISO object handle, ignore pathname
|
||||
*/
|
||||
@ -279,6 +294,149 @@ int Xorriso_libburn_adr(struct XorrisO *xorriso, char *address_string,
|
||||
*/
|
||||
int Xorriso_msinfo(struct XorrisO *xorriso, int *msc1, int *msc2, int flag);
|
||||
|
||||
/*
|
||||
@param flag bit0= obtain iso_lba from indev
|
||||
bit1= head_buffer already contains a valid head
|
||||
bit2= issue message about success
|
||||
bit3= check whether source blocks are banned by in_sector_map
|
||||
*/
|
||||
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);
|
||||
|
||||
int Xorriso_set_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 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; /* >>> 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 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
|
||||
*/
|
||||
|
||||
};
|
||||
|
||||
int Xorriso_check_media(struct XorrisO *xorriso, struct SpotlisT **spotlist,
|
||||
struct CheckmediajoB *job, int flag);
|
||||
|
||||
int Xorriso_extract_cut(struct XorrisO *xorriso,
|
||||
char *img_path, char *disk_path,
|
||||
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);
|
||||
|
||||
|
||||
/* A pseudo file type for El-Torito bootsectors as in man 2 stat :
|
||||
For now take the highest possible value.
|
||||
*/
|
||||
#define Xorriso_IFBOOT S_IFMT
|
||||
|
||||
|
||||
#endif /* Xorrisoburn_includeD */
|
||||
|
||||
|
Reference in New Issue
Block a user