parent
3c2ee23adf
commit
3da6b7eccb
@ -0,0 +1,3 @@
|
||||
Thomas Schmitt
|
||||
Vreixo Formoso Lopes
|
||||
|
@ -0,0 +1,22 @@
|
||||
Mario Danic <mario.danic@gmail.com>,
|
||||
Vreixo Formoso <metalpain2002@yahoo.es>
|
||||
Thomas Schmitt <scdbackup@gmx.net>
|
||||
libisoburn is Copyright (C) 2007-2010 Vreixo Formoso, Thomas Schmitt
|
||||
xorriso is Copyright (C) 2007-2010 Thomas Schmitt
|
||||
libisofs (if included) is Copyright (C) 2007-2010 Vreixo Formoso, Mario Danic
|
||||
libburn (if included) is Copyright (C) 2002-2006 Derek Foreman, Ben Jansens
|
||||
and Copyright (C) 2006-2010 Mario Danic, Thomas Schmitt
|
||||
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License version 2
|
||||
or later as published by the Free Software Foundation.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program; if not, write to the Free Software
|
||||
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
@ -0,0 +1,237 @@
|
||||
|
||||
See file README for libisoburn and xorriso specific installation instructions.
|
||||
This file here is rather a manual for advanced usage of ./configure
|
||||
|
||||
-------------------------------------------------------------------
|
||||
|
||||
Copyright (C) 1994, 1995, 1996, 1999, 2000, 2001, 2002, 2004, 2005,
|
||||
2006 Free Software Foundation, Inc.
|
||||
|
||||
This file is free documentation; the Free Software Foundation gives
|
||||
unlimited permission to copy, distribute and modify it.
|
||||
|
||||
Basic Installation
|
||||
==================
|
||||
|
||||
Briefly, the shell commands `./configure; make; make install' should
|
||||
configure, build, and install this package. The following
|
||||
more-detailed instructions are generic; see the `README' file for
|
||||
instructions specific to this package.
|
||||
|
||||
The `configure' shell script attempts to guess correct values for
|
||||
various system-dependent variables used during compilation. It uses
|
||||
those values to create a `Makefile' in each directory of the package.
|
||||
It may also create one or more `.h' files containing system-dependent
|
||||
definitions. Finally, it creates a shell script `config.status' that
|
||||
you can run in the future to recreate the current configuration, and a
|
||||
file `config.log' containing compiler output (useful mainly for
|
||||
debugging `configure').
|
||||
|
||||
It can also use an optional file (typically called `config.cache'
|
||||
and enabled with `--cache-file=config.cache' or simply `-C') that saves
|
||||
the results of its tests to speed up reconfiguring. Caching is
|
||||
disabled by default to prevent problems with accidental use of stale
|
||||
cache files.
|
||||
|
||||
If you need to do unusual things to compile the package, please try
|
||||
to figure out how `configure' could check whether to do them, and mail
|
||||
diffs or instructions to the address given in the `README' so they can
|
||||
be considered for the next release. If you are using the cache, and at
|
||||
some point `config.cache' contains results you don't want to keep, you
|
||||
may remove or edit it.
|
||||
|
||||
The file `configure.ac' (or `configure.in') is used to create
|
||||
`configure' by a program called `autoconf'. You need `configure.ac' if
|
||||
you want to change it or regenerate `configure' using a newer version
|
||||
of `autoconf'.
|
||||
|
||||
The simplest way to compile this package is:
|
||||
|
||||
1. `cd' to the directory containing the package's source code and type
|
||||
`./configure' to configure the package for your system.
|
||||
|
||||
Running `configure' might take a while. While running, it prints
|
||||
some messages telling which features it is checking for.
|
||||
|
||||
2. Type `make' to compile the package.
|
||||
|
||||
3. Optionally, type `make check' to run any self-tests that come with
|
||||
the package.
|
||||
|
||||
4. Type `make install' to install the programs and any data files and
|
||||
documentation.
|
||||
|
||||
5. You can remove the program binaries and object files from the
|
||||
source code directory by typing `make clean'. To also remove the
|
||||
files that `configure' created (so you can compile the package for
|
||||
a different kind of computer), type `make distclean'. There is
|
||||
also a `make maintainer-clean' target, but that is intended mainly
|
||||
for the package's developers. If you use it, you may have to get
|
||||
all sorts of other programs in order to regenerate files that came
|
||||
with the distribution.
|
||||
|
||||
Compilers and Options
|
||||
=====================
|
||||
|
||||
Some systems require unusual options for compilation or linking that the
|
||||
`configure' script does not know about. Run `./configure --help' for
|
||||
details on some of the pertinent environment variables.
|
||||
|
||||
You can give `configure' initial values for configuration parameters
|
||||
by setting variables in the command line or in the environment. Here
|
||||
is an example:
|
||||
|
||||
./configure CC=c99 CFLAGS=-g LIBS=-lposix
|
||||
|
||||
*Note Defining Variables::, for more details.
|
||||
|
||||
Compiling For Multiple Architectures
|
||||
====================================
|
||||
|
||||
You can compile the package for more than one kind of computer at the
|
||||
same time, by placing the object files for each architecture in their
|
||||
own directory. To do this, you can use GNU `make'. `cd' to the
|
||||
directory where you want the object files and executables to go and run
|
||||
the `configure' script. `configure' automatically checks for the
|
||||
source code in the directory that `configure' is in and in `..'.
|
||||
|
||||
With a non-GNU `make', it is safer to compile the package for one
|
||||
architecture at a time in the source code directory. After you have
|
||||
installed the package for one architecture, use `make distclean' before
|
||||
reconfiguring for another architecture.
|
||||
|
||||
Installation Names
|
||||
==================
|
||||
|
||||
By default, `make install' installs the package's commands under
|
||||
`/usr/local/bin', include files under `/usr/local/include', etc. You
|
||||
can specify an installation prefix other than `/usr/local' by giving
|
||||
`configure' the option `--prefix=PREFIX'.
|
||||
|
||||
You can specify separate installation prefixes for
|
||||
architecture-specific files and architecture-independent files. If you
|
||||
pass the option `--exec-prefix=PREFIX' to `configure', the package uses
|
||||
PREFIX as the prefix for installing programs and libraries.
|
||||
Documentation and other data files still use the regular prefix.
|
||||
|
||||
In addition, if you use an unusual directory layout you can give
|
||||
options like `--bindir=DIR' to specify different values for particular
|
||||
kinds of files. Run `configure --help' for a list of the directories
|
||||
you can set and what kinds of files go in them.
|
||||
|
||||
If the package supports it, you can cause programs to be installed
|
||||
with an extra prefix or suffix on their names by giving `configure' the
|
||||
option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'.
|
||||
|
||||
Optional Features
|
||||
=================
|
||||
|
||||
Some packages pay attention to `--enable-FEATURE' options to
|
||||
`configure', where FEATURE indicates an optional part of the package.
|
||||
They may also pay attention to `--with-PACKAGE' options, where PACKAGE
|
||||
is something like `gnu-as' or `x' (for the X Window System). The
|
||||
`README' should mention any `--enable-' and `--with-' options that the
|
||||
package recognizes.
|
||||
|
||||
For packages that use the X Window System, `configure' can usually
|
||||
find the X include and library files automatically, but if it doesn't,
|
||||
you can use the `configure' options `--x-includes=DIR' and
|
||||
`--x-libraries=DIR' to specify their locations.
|
||||
|
||||
Specifying the System Type
|
||||
==========================
|
||||
|
||||
There may be some features `configure' cannot figure out automatically,
|
||||
but needs to determine by the type of machine the package will run on.
|
||||
Usually, assuming the package is built to be run on the _same_
|
||||
architectures, `configure' can figure that out, but if it prints a
|
||||
message saying it cannot guess the machine type, give it the
|
||||
`--build=TYPE' option. TYPE can either be a short name for the system
|
||||
type, such as `sun4', or a canonical name which has the form:
|
||||
|
||||
CPU-COMPANY-SYSTEM
|
||||
|
||||
where SYSTEM can have one of these forms:
|
||||
|
||||
OS KERNEL-OS
|
||||
|
||||
See the file `config.sub' for the possible values of each field. If
|
||||
`config.sub' isn't included in this package, then this package doesn't
|
||||
need to know the machine type.
|
||||
|
||||
If you are _building_ compiler tools for cross-compiling, you should
|
||||
use the option `--target=TYPE' to select the type of system they will
|
||||
produce code for.
|
||||
|
||||
If you want to _use_ a cross compiler, that generates code for a
|
||||
platform different from the build platform, you should specify the
|
||||
"host" platform (i.e., that on which the generated programs will
|
||||
eventually be run) with `--host=TYPE'.
|
||||
|
||||
Sharing Defaults
|
||||
================
|
||||
|
||||
If you want to set default values for `configure' scripts to share, you
|
||||
can create a site shell script called `config.site' that gives default
|
||||
values for variables like `CC', `cache_file', and `prefix'.
|
||||
`configure' looks for `PREFIX/share/config.site' if it exists, then
|
||||
`PREFIX/etc/config.site' if it exists. Or, you can set the
|
||||
`CONFIG_SITE' environment variable to the location of the site script.
|
||||
A warning: not all `configure' scripts look for a site script.
|
||||
|
||||
Defining Variables
|
||||
==================
|
||||
|
||||
Variables not defined in a site shell script can be set in the
|
||||
environment passed to `configure'. However, some packages may run
|
||||
configure again during the build, and the customized values of these
|
||||
variables may be lost. In order to avoid this problem, you should set
|
||||
them in the `configure' command line, using `VAR=value'. For example:
|
||||
|
||||
./configure CC=/usr/local2/bin/gcc
|
||||
|
||||
causes the specified `gcc' to be used as the C compiler (unless it is
|
||||
overridden in the site shell script).
|
||||
|
||||
Unfortunately, this technique does not work for `CONFIG_SHELL' due to
|
||||
an Autoconf bug. Until the bug is fixed you can use this workaround:
|
||||
|
||||
CONFIG_SHELL=/bin/bash /bin/bash ./configure CONFIG_SHELL=/bin/bash
|
||||
|
||||
`configure' Invocation
|
||||
======================
|
||||
|
||||
`configure' recognizes the following options to control how it operates.
|
||||
|
||||
`--help'
|
||||
`-h'
|
||||
Print a summary of the options to `configure', and exit.
|
||||
|
||||
`--version'
|
||||
`-V'
|
||||
Print the version of Autoconf used to generate the `configure'
|
||||
script, and exit.
|
||||
|
||||
`--cache-file=FILE'
|
||||
Enable the cache: use and save the results of the tests in FILE,
|
||||
traditionally `config.cache'. FILE defaults to `/dev/null' to
|
||||
disable caching.
|
||||
|
||||
`--config-cache'
|
||||
`-C'
|
||||
Alias for `--cache-file=config.cache'.
|
||||
|
||||
`--quiet'
|
||||
`--silent'
|
||||
`-q'
|
||||
Do not print messages saying which checks are being made. To
|
||||
suppress all normal output, redirect it to `/dev/null' (any error
|
||||
messages will still be shown).
|
||||
|
||||
`--srcdir=DIR'
|
||||
Look for the package's source code in directory DIR. Usually
|
||||
`configure' can determine that directory automatically.
|
||||
|
||||
`configure' also accepts some other, not widely useful, options. Run
|
||||
`configure --help' for more details.
|
||||
|
@ -0,0 +1,240 @@
|
||||
|
||||
# ts A90315 : LIBBURNIA_PKGCONFDIR is defined OS specific in acinclude.m4
|
||||
# was: pkgconfigdir=$(libdir)/pkgconfig
|
||||
pkgconfigdir=$(LIBBURNIA_PKGCONFDIR)
|
||||
|
||||
libincludedir=$(includedir)/libisoburn
|
||||
|
||||
lib_LTLIBRARIES = libisoburn/libisoburn.la
|
||||
|
||||
## ========================================================================= ##
|
||||
|
||||
# Build libraries
|
||||
libisoburn_libisoburn_la_LDFLAGS = \
|
||||
-version-info $(LT_CURRENT):$(LT_REVISION):$(LT_AGE)
|
||||
libisoburn_libisoburn_la_SOURCES = \
|
||||
libisoburn/isoburn.h \
|
||||
libisoburn/libisoburn.h \
|
||||
libisoburn/burn_wrap.c \
|
||||
libisoburn/data_source.c \
|
||||
libisoburn/isoburn.c \
|
||||
libisoburn/isofs_wrap.c \
|
||||
\
|
||||
xorriso/xorriso.h \
|
||||
xorriso/xorriso_private.h \
|
||||
xorriso/sfile.h \
|
||||
xorriso/sfile.c \
|
||||
xorriso/aux_objects.h \
|
||||
xorriso/aux_objects.c \
|
||||
xorriso/findjob.h \
|
||||
xorriso/findjob.c \
|
||||
xorriso/check_media.h \
|
||||
xorriso/check_media.c \
|
||||
xorriso/misc_funct.h \
|
||||
xorriso/misc_funct.c \
|
||||
xorriso/text_io.h \
|
||||
xorriso/text_io.c \
|
||||
xorriso/match.h \
|
||||
xorriso/match.c \
|
||||
xorriso/emulators.h \
|
||||
xorriso/emulators.c \
|
||||
xorriso/disk_ops.h \
|
||||
xorriso/disk_ops.c \
|
||||
xorriso/cmp_update.h \
|
||||
xorriso/cmp_update.c \
|
||||
xorriso/parse_exec.h \
|
||||
xorriso/parse_exec.c \
|
||||
xorriso/opts_a_c.c \
|
||||
xorriso/opts_d_h.c \
|
||||
xorriso/opts_i_o.c \
|
||||
xorriso/opts_p_z.c \
|
||||
\
|
||||
xorriso/xorrisoburn.h \
|
||||
xorriso/base_obj.h \
|
||||
xorriso/base_obj.c \
|
||||
xorriso/lib_mgt.h \
|
||||
xorriso/lib_mgt.c \
|
||||
xorriso/sort_cmp.h \
|
||||
xorriso/sort_cmp.c \
|
||||
xorriso/drive_mgt.h \
|
||||
xorriso/drive_mgt.c \
|
||||
xorriso/iso_img.h \
|
||||
xorriso/iso_img.c \
|
||||
xorriso/iso_tree.h \
|
||||
xorriso/iso_tree.c \
|
||||
xorriso/iso_manip.h \
|
||||
xorriso/iso_manip.c \
|
||||
xorriso/write_run.h \
|
||||
xorriso/write_run.c \
|
||||
xorriso/read_run.h \
|
||||
xorriso/read_run.c \
|
||||
xorriso/filters.h \
|
||||
xorriso/filters.c \
|
||||
xorriso/xorriso_timestamp.h \
|
||||
xorriso/xorriso_buildstamp.h \
|
||||
version.h
|
||||
|
||||
libisoburn_libisoburn_la_LIBADD = \
|
||||
-lisofs \
|
||||
-lburn
|
||||
|
||||
libinclude_HEADERS = \
|
||||
libisoburn/libisoburn.h \
|
||||
xorriso/xorriso.h
|
||||
|
||||
# libisoburn_libisoburn_la_CFLAGS = $(READLINE_DEF) $(LIBACL_DEF) $(XATTR_DEF) \
|
||||
# $(EXTF_DEF) $(EXTF_SUID_DEF) $(ZLIB_DEF) \
|
||||
# $(XORRISO_DVD_OBS_64K)
|
||||
|
||||
## ========================================================================= ##
|
||||
|
||||
|
||||
# This is the reference application of libisoburn. See man xorriso/xorriso.1
|
||||
#
|
||||
bin_PROGRAMS = \
|
||||
xorriso/xorriso
|
||||
|
||||
# This looks quite ugly with make install: xorriso.c is compiled twice again
|
||||
#
|
||||
# Trying to create a build timestamp file
|
||||
#
|
||||
# BUILT_SOURCES = xorriso/xorriso_buildstamp.h
|
||||
#
|
||||
# phony targets get rebuilt every time
|
||||
#
|
||||
# .PHONY: xorriso/xorriso_buildstamp.h
|
||||
# xorriso/xorriso_buildstamp.h:
|
||||
# date -u '+#define Xorriso_build_timestamP "%Y.%m.%d.%H%M%S"' >xorriso/xorriso_buildstamp.h
|
||||
# cat xorriso/xorriso_buildstamp.h
|
||||
|
||||
xorriso_xorriso_CPPFLAGS = -Ilibisoburn
|
||||
# xorriso_xorriso_CFLAGS = $(READLINE_DEF) $(LIBACL_DEF) $(XATTR_DEF) \
|
||||
# $(EXTF_DEF) $(EXTF_SUID_DEF) $(ZLIB_DEF) \
|
||||
# $(XORRISO_DVD_OBS_64K)
|
||||
|
||||
xorriso_xorriso_LDADD = libisoburn/libisoburn.la -lisofs -lburn \
|
||||
$(THREAD_LIBS) $(LIBBURN_ARCH_LIBS)
|
||||
|
||||
xorriso_xorriso_SOURCES = \
|
||||
xorriso/xorriso.h \
|
||||
xorriso/xorriso_main.c
|
||||
|
||||
|
||||
# Install symbolic links to the xorriso binary
|
||||
#
|
||||
install-exec-hook:
|
||||
if test -e "$(DESTDIR)$(bindir)"/xorrisofs ; then rm "$(DESTDIR)$(bindir)"/xorrisofs ; else echo ; fi
|
||||
ln -s xorriso "$(DESTDIR)$(bindir)"/xorrisofs
|
||||
if test -e "$(DESTDIR)$(bindir)"/osirrox ; then rm "$(DESTDIR)$(bindir)"/osirrox ; else echo ; fi
|
||||
ln -s xorriso "$(DESTDIR)$(bindir)"/osirrox
|
||||
if test -e "$(DESTDIR)$(bindir)"/xorrecord ; then rm "$(DESTDIR)$(bindir)"/xorrecord ; else echo ; fi
|
||||
ln -s xorriso "$(DESTDIR)$(bindir)"/xorrecord
|
||||
|
||||
|
||||
# Alternative to the disabled .PHONY above.
|
||||
# Trying to create a build timestamp file semi-manually: make buildstamped
|
||||
#
|
||||
buildstamp:
|
||||
date -u '+#define Xorriso_build_timestamP "%Y.%m.%d.%H%M%S"' >xorriso/xorriso_buildstamp.h
|
||||
cat xorriso/xorriso_buildstamp.h
|
||||
|
||||
# For now make buildstamped has to be performed explicitely.
|
||||
buildstamped: buildstamp
|
||||
make
|
||||
|
||||
|
||||
|
||||
## Build companion applications
|
||||
noinst_PROGRAMS = \
|
||||
test/compare_file \
|
||||
xorriso/make_xorriso_1
|
||||
|
||||
# A program to compare two files in mirrored trees in mounted filesystems
|
||||
# To compare tree /media/dvd and /original/dir :
|
||||
# find /media/dvd -exec test/compare_file '{}' /media/dvd /original/dir ';'
|
||||
#
|
||||
test_compare_file_CPPFLAGS =
|
||||
test_compare_file_CFLAGS =
|
||||
test_compare_file_LDADD =
|
||||
test_compare_file_SOURCES = test/compare_file.c
|
||||
|
||||
# Specialized converter from xorriso/xorriso.texi to xorriso/xorriso.1
|
||||
#
|
||||
xorriso_make_xorriso_1_CPPFLAGS =
|
||||
xorriso_make_xorriso_1_CFLAGS =
|
||||
xorriso_make_xorriso_1_LDADD =
|
||||
xorriso_make_xorriso_1_SOURCES = xorriso/make_xorriso_1.c
|
||||
|
||||
## ========================================================================= ##
|
||||
|
||||
## Build documentation (You need Doxygen for this to work)
|
||||
webhost = http://libburn-api.pykix.org
|
||||
webpath = /
|
||||
docdir = $(DESTDIR)$(prefix)/share/doc/$(PACKAGE)-$(VERSION)
|
||||
|
||||
doc: doc/html
|
||||
|
||||
doc/html: doc/doxygen.conf
|
||||
if [ -f ./doc/doc.lock ]; then \
|
||||
$(RM) -r doc/html; \
|
||||
doxygen doc/doxygen.conf; \
|
||||
fi
|
||||
|
||||
doc-upload: doc/html
|
||||
scp -r $</* $(webhost):$(webpath)
|
||||
|
||||
all: doc
|
||||
|
||||
install-data-local:
|
||||
if [ -f ./doc/doc.lock ]; then \
|
||||
$(mkinstalldirs) $(docdir)/html; \
|
||||
$(INSTALL_DATA) doc/html/* $(docdir)/html; \
|
||||
fi
|
||||
|
||||
uninstall-local:
|
||||
rm -rf $(docdir)
|
||||
|
||||
## ========================================================================= ##
|
||||
|
||||
# Indent source files
|
||||
indent_files = \
|
||||
$(libisoburn_libisoburn_la_SOURCES)
|
||||
|
||||
|
||||
indent: $(indent_files)
|
||||
indent -bad -bap -nbbb -nbbo -nbc -bli0 -br -bls \
|
||||
-cdw -ce -cli0 -ncs -nbfda -i8 -l79 -lc79 \
|
||||
-lp -saf -sai -nprs -npsl -saw -sob -ss -ut \
|
||||
-sbi0 -nsc -ts8 -npcs -ncdb -fca \
|
||||
$^
|
||||
|
||||
.PHONY: indent
|
||||
|
||||
## ========================================================================= ##
|
||||
|
||||
# Extra things
|
||||
nodist_pkgconfig_DATA = \
|
||||
libisoburn-1.pc
|
||||
|
||||
man_MANS = xorriso/xorriso.1
|
||||
|
||||
info_TEXINFOS = xorriso/xorriso.texi
|
||||
|
||||
EXTRA_DIST = \
|
||||
libisoburn-1.pc.in \
|
||||
version.h.in \
|
||||
doc/comments \
|
||||
doc/doxygen.conf.in \
|
||||
README \
|
||||
AUTHORS \
|
||||
CONTRIBUTORS \
|
||||
COPYRIGHT \
|
||||
COPYING \
|
||||
INSTALL \
|
||||
xorriso/changelog.txt \
|
||||
xorriso/xorriso_buildstamp_none.h \
|
||||
xorriso/README_gnu_xorriso \
|
||||
xorriso/make_docs.sh \
|
||||
$(man_MANS)
|
||||
|
||||
|
@ -0,0 +1,222 @@
|
||||
------------------------------------------------------------------------------
|
||||
http:libburnia-project.org
|
||||
------------------------------------------------------------------------------
|
||||
libisoburn and xorriso. By Vreixo Formoso <metalpain2002@yahoo.es>
|
||||
and Thomas Schmitt <scdbackup@gmx.net>
|
||||
Integrated sub project of libburnia-project.org.
|
||||
http://files.libburnia-project.org/releases/libisoburn-0.5.6.pl00.tar.gz
|
||||
Copyright (C) 2006-2010 Vreixo Formoso, Thomas Schmitt.
|
||||
Provided under GPL version 2 or later.
|
||||
------------------------------------------------------------------------------
|
||||
|
||||
libisoburn is a frontend for libraries libburn and libisofs which enables
|
||||
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.
|
||||
|
||||
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.
|
||||
|
||||
xorriso is an application of libisoburn, libisofs, and libburn, which reads
|
||||
commands from program arguments, files, stdin, or readline.
|
||||
Its features are also available via a C language API of libisoburn.
|
||||
|
||||
Currently they are fully supported on Linux with kernels >= 2.4,
|
||||
on FreeBSD with ATAPI/CAM support enabled in the kernel, see atapicam(4),
|
||||
and on OpenSolaris (tested with kernel 5.11).
|
||||
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 ..."
|
||||
|
||||
|
||||
Compilation, First Glimpse, Installation
|
||||
|
||||
Dynamic library and compile time header requirements for libisoburn-0.5.6 :
|
||||
- libburn.so.4 , version libburn-0.8.2 or higher
|
||||
- libisofs.so.6 , version libisofs-0.6.32 or higher
|
||||
libisoburn and xorriso will not start with libraries which are older than their
|
||||
headers seen at compile time.
|
||||
|
||||
Obtain libisoburn-0.5.6.pl00.tar.gz, take it to a directory of your choice
|
||||
and do:
|
||||
|
||||
tar xzf libisoburn-0.5.6.pl00.tar.gz
|
||||
cd libisoburn-0.5.6
|
||||
|
||||
Within that directory execute:
|
||||
|
||||
./configure --prefix=/usr
|
||||
make
|
||||
|
||||
Then become superuser and execute
|
||||
make install
|
||||
which will make available libisoburn.so.1 and the program xorriso.
|
||||
|
||||
For the API concepts and calls see
|
||||
./libisoburn/libisoburn.h
|
||||
as well as
|
||||
/usr/lib/libisofs/libisofs.h
|
||||
/usr/lib/libburn/libburn.h
|
||||
|
||||
|
||||
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_gnu_xorriso describes the tarball of the
|
||||
derived package GNU xorriso as first preference for a statically linked
|
||||
xorriso installation.
|
||||
The libisoburn installation described above produces a dynamically linked
|
||||
xorriso binary depending on libburn.so, libisofs.so, libisoburn.so.
|
||||
|
||||
After installation documentation is available via
|
||||
man xorriso
|
||||
|
||||
Several alias links point to the xorriso binary:
|
||||
xorrisofs starts xorriso with -as mkisofs emulation already enabled
|
||||
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.
|
||||
Other deliberate dependency reduction options of ./configure are:
|
||||
--disable-libacl avoid use of ACL functions like acl_to_text()
|
||||
--disable-xattr avoid use of xattr functions like listxattr()
|
||||
--disable-zlib avoid use of zlib functions like compress2()
|
||||
|
||||
xorriso allows to use external processes as file content filters. This is
|
||||
a potential security risk which may be avoided by ./configure option
|
||||
--disable-external-filters
|
||||
By default the filter feature is disabled if effective user id and real
|
||||
user id differ. This ban can be lifted by
|
||||
--enable-external-filters-setuid
|
||||
|
||||
In some situations Linux may deliver a better write performance to DVD drives
|
||||
if 64 KB rather than 32 KB are transmitted in each write operation.
|
||||
64k can be made default at configure time by:
|
||||
--enable-dvd-obs-64k
|
||||
|
||||
|
||||
xorriso C language API
|
||||
|
||||
Actually the dynamically linked xorriso binary is only a small start program
|
||||
for the xorriso API that is implemented inside libisoburn.
|
||||
There are API calls for command readers and interpreters, and there are
|
||||
API calls for each single command of xorriso.
|
||||
|
||||
Interested programmers should have a look into the API definition at
|
||||
xorriso/xorriso.h
|
||||
and the start program
|
||||
xorriso/xorriso_main.c
|
||||
|
||||
The header file xorriso.h gets installed suitable for
|
||||
#include <libisoburn/xorriso.h>
|
||||
|
||||
So after installation of a binary libisoburn package you may find it e.g. as
|
||||
/usr/local/include/libisoburn/xorriso.h
|
||||
|
||||
|
||||
|
||||
Drives and Disk File Objects
|
||||
|
||||
The user of libisoburn applications needs rw-permission for the CD/DVD/BD
|
||||
drives which shall be used, even if only reading is intended.
|
||||
A list of rw-accessible drives can be obtained by
|
||||
xorriso -devices
|
||||
resp. by xorriso API call
|
||||
Xorriso_option_devices()
|
||||
resp. by libburn API call
|
||||
burn_drive_scan()
|
||||
|
||||
|
||||
A possible source of problems are hald or other automounters.
|
||||
If you can spot a process "hald-addon-storage" with the address of
|
||||
your desired drive, then consider to kill it.
|
||||
|
||||
If you cannot get rid of the automounter that easily, try whether it helps
|
||||
to always load the drive tray manually before starting a write run of
|
||||
xorriso. Wait until the drive light is off.
|
||||
Better try to unmount an eventually mounted media before a write run.
|
||||
|
||||
|
||||
Besides true optical drives, libisoburn can also address disk files as input or
|
||||
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
|
||||
|
||||
We are quite sure that libisofs produces accurate representations of the disk
|
||||
files. This opinion is founded on a lot of test burns and checks by a little
|
||||
test program which compares files from the mounted image with the orignals
|
||||
on disk. It uses the normal POSIX filesystem calls, i.e. no libburnia stuff.
|
||||
|
||||
This program is not installed systemwide but stays in the installation
|
||||
directory of the libisoburn tarball as test/compare_file . Usually it is
|
||||
run as -exec payload of a find command. It demands at least three arguments:
|
||||
The path of the file to compare, the prefix1 to be cut off from path
|
||||
and the prefix2 which gets prepended afterwards to obtain the path of the
|
||||
second file to compare.
|
||||
As further argument there can be -no_ctime which suppresses the comparison
|
||||
of ctime date stamps.
|
||||
The exit value is 0 if no difference was detected, non-0 else.
|
||||
|
||||
Example: After
|
||||
xorriso ... -pathspecs on -add /=/original/dir --
|
||||
mount /media/dvd
|
||||
cd test
|
||||
compare tree /media/dvd with tree /original/dir :
|
||||
find /original/dir -exec ./compare_file '{}' /original/dir /media/dvd ';' \
|
||||
| less
|
||||
and vice versa:
|
||||
find /media/dvd -exec ./compare_file '{}' /media/dvd /original/dir ';' \
|
||||
| less
|
||||
|
||||
|
||||
------------------------------------------------------------------------------
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License version 2 or later
|
||||
as published by the Free Software Foundation.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program; if not, write to the Free Software
|
||||
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
|
||||
------------------------------------------------------------------------------
|
||||
Based on and sub project of:
|
||||
libburnia-project.org
|
||||
By Mario Danic <mario.danic@gmail.com>,
|
||||
Vreixo Formoso <metalpain2002@yahoo.es>
|
||||
Thomas Schmitt <scdbackup@gmx.net>
|
||||
Copyright (C) 2006-2010 Mario Danic, Vreixo Formoso, Thomas Schmitt.
|
||||
|
||||
We will not raise any legal protest to dynamic linking of our libraries
|
||||
with applications that are not under GPL, as long as they fulfill
|
||||
the condition of offering the library source code used, whether
|
||||
altered or unaltered, under the GPLv2+, along with the application.
|
||||
Nevertheless, the safest legal position is not to link libburn with
|
||||
non-GPL compatible programs.
|
||||
|
||||
libburnia-project.org is inspired by and in other components still containing
|
||||
parts of old
|
||||
Libburn. By Derek Foreman <derek@signalmarketing.com> and
|
||||
Ben Jansens <xor@orodu.net>
|
||||
Copyright (C) 2002-2006 Derek Foreman and Ben Jansens
|
||||
libisoburn does not stem from their code.
|
||||
|
@ -0,0 +1,11 @@
|
||||
[Task] Figure out how to use "Requires" in pc.in (libisoburn and libisofs would benefit)
|
||||
[Task] Figure out the usage of Libs.private (used in libburn)
|
||||
[Task] Improve build system
|
||||
[Task] Investigate build system, so other libburnia components can benefit
|
||||
[Task] Write Doxygen files
|
||||
[Task] Explain to Thomas & Vreixo about NEWS importance (all libburnia components
|
||||
will benefit
|
||||
[Task] Write a document about ABI & API
|
||||
[Task] Create following targets for make: Src, Indent, Docs, Test, All [Any other suggestions?)
|
||||
|
||||
All those tasks are currently assigned to Mario.
|
@ -0,0 +1,218 @@
|
||||
AC_DEFUN([LIBBURNIA_SET_FLAGS],
|
||||
[
|
||||
case $target_os in
|
||||
freebsd*)
|
||||
LDFLAGS="$LDFLAGS -L/usr/local/lib"
|
||||
CPPFLAGS="$CPPFLAGS -I/usr/local/include"
|
||||
;;
|
||||
esac
|
||||
])
|
||||
|
||||
|
||||
AC_DEFUN([TARGET_SHIZZLE],
|
||||
[
|
||||
ARCH=""
|
||||
LIBBURNIA_PKGCONFDIR="$libdir"/pkgconfig
|
||||
|
||||
AC_MSG_CHECKING([target operating system])
|
||||
|
||||
case $target in
|
||||
*-*-linux*)
|
||||
ARCH=linux
|
||||
LIBBURN_ARCH_LIBS=
|
||||
;;
|
||||
*-*-freebsd*)
|
||||
ARCH=freebsd
|
||||
LIBBURN_ARCH_LIBS=-lcam
|
||||
|
||||
# This may later be overridden by configure --enable-libdir-pkgconfig
|
||||
LIBBURNIA_PKGCONFDIR=$(echo "$libdir" | sed 's/\/lib$/\/libdata/')/pkgconfig
|
||||
;;
|
||||
*)
|
||||
ARCH=
|
||||
LIBBURN_ARCH_LIBS=
|
||||
# AC_ERROR([You are attempting to compile for an unsupported platform])
|
||||
;;
|
||||
esac
|
||||
|
||||
AC_MSG_RESULT([$ARCH])
|
||||
])
|
||||
|
||||
|
||||
dnl LIBBURNIA_CHECK_ICONV is by Thomas Schmitt, libburnia project
|
||||
dnl It is based on gestures from:
|
||||
dnl iconv.m4 serial AM7 (gettext-0.18)
|
||||
dnl Copyright (C) 2000-2002, 2007-2009 Free Software Foundation, Inc.
|
||||
dnl This file is free software; the Free Software Foundation
|
||||
dnl gives unlimited permission to copy and/or distribute it,
|
||||
dnl with or without modifications, as long as this notice is preserved.
|
||||
dnl From Bruno Haible.
|
||||
dnl
|
||||
AC_DEFUN([LIBBURNIA_CHECK_ICONV],
|
||||
[
|
||||
|
||||
dnl Check whether it is allowed to link with -liconv
|
||||
AC_MSG_CHECKING([for iconv() in separate -liconv ])
|
||||
libburnia_liconv="no"
|
||||
libburnia_save_LIBS="$LIBS"
|
||||
LIBS="$LIBS -liconv"
|
||||
AC_TRY_LINK([#include <stdlib.h>
|
||||
#include <iconv.h>],
|
||||
[iconv_t cd = iconv_open("","");
|
||||
iconv(cd,NULL,NULL,NULL,NULL);
|
||||
iconv_close(cd);],
|
||||
[libburnia_liconv="yes"],
|
||||
[LIBS="$libburnia_save_LIBS"]
|
||||
)
|
||||
AC_MSG_RESULT([$libburnia_liconv])
|
||||
|
||||
if test x"$libburnia_save_LIBS" = x"$LIBS"
|
||||
then
|
||||
dnl GNU iconv has no function iconv() but libiconv() and a macro iconv()
|
||||
dnl It is not tested whether this is detected by above macro.
|
||||
AC_CHECK_LIB(iconv, libiconv, , )
|
||||
fi
|
||||
|
||||
dnl Check for iconv(..., const char **inbuf, ...)
|
||||
AC_MSG_CHECKING([for const qualifier with iconv() ])
|
||||
AC_TRY_COMPILE([
|
||||
#include <stdlib.h>
|
||||
#include <iconv.h>
|
||||
size_t iconv (iconv_t cd, char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft);
|
||||
], [], [libburnia_iconv_const=""], [libburnia_iconv_const="const"]
|
||||
)
|
||||
AC_DEFINE_UNQUOTED([ICONV_CONST], [$libburnia_iconv_const])
|
||||
test -z "$libburnia_iconv_const" && libburnia_iconv_const="no"
|
||||
AC_MSG_RESULT([$libburnia_iconv_const])
|
||||
])
|
||||
|
||||
|
||||
dnl LIBBURNIA_ASSERT_ICONV is by Thomas Schmitt, libburnia project
|
||||
dnl
|
||||
AC_DEFUN([LIBBURNIA_ASSERT_ICONV],
|
||||
[
|
||||
if test x$XORRISO_ASSUME_ICONV = x
|
||||
then
|
||||
dnl Check for the essential gestures of libisofs/util.c
|
||||
AC_MSG_CHECKING([for iconv() to be accessible now ])
|
||||
AC_TRY_LINK([
|
||||
#include <stdlib.h>
|
||||
#include <wchar.h>
|
||||
#include <string.h>
|
||||
#include <errno.h>
|
||||
#include <ctype.h>
|
||||
#include <stdio.h>
|
||||
#include <limits.h>
|
||||
#include <iconv.h>
|
||||
#include <locale.h>
|
||||
#include <langinfo.h>
|
||||
#include <unistd.h>],
|
||||
[iconv_t cd = iconv_open("","");
|
||||
iconv(cd,NULL,NULL,NULL,NULL);
|
||||
iconv_close(cd);
|
||||
], [iconv_test="yes"], [iconv_test="no"]
|
||||
)
|
||||
AC_MSG_RESULT([$iconv_test])
|
||||
if test x$iconv_test = xno
|
||||
then
|
||||
echo >&2
|
||||
echo "Cannot get function iconv() to work. Configuration aborted." >&2
|
||||
echo "Check whether your system needs a separate libiconv installed." >&2
|
||||
echo "If it is installed but not found, try something like" >&2
|
||||
echo ' export LDFLAGS="$LDFLAGS -L/usr/local/lib"' >&2
|
||||
echo ' export CPPFLAGS="$CPPFLAGS -I/usr/local/include"' >&2
|
||||
echo ' export LIBS="$LIBS -liconv"' >&2
|
||||
echo "You may override this test by exporting variable" >&2
|
||||
echo " XORRISO_ASSUME_ICONV=yes" >&2
|
||||
echo >&2
|
||||
(exit 1); exit 1;
|
||||
fi
|
||||
fi
|
||||
])
|
||||
|
||||
|
||||
dnl LIBBURNIA_ASSERT_READLINE disables xorriso readline if not all needed
|
||||
dnl functions are present
|
||||
AC_DEFUN([LIBBURNIA_ASSERT_READLINE],
|
||||
[
|
||||
if test x$XORRISO_ASSUME_READLINE = x
|
||||
then
|
||||
dnl Check for the essential gestures of libisofs/util.c
|
||||
AC_MSG_CHECKING([for desired functions in libreadline])
|
||||
libburnia_save_LIBS="$LIBS"
|
||||
LIBS="$LIBS -lreadline"
|
||||
AC_TRY_LINK([
|
||||
#include <ctype.h>
|
||||
#include <sys/types.h>
|
||||
#include <unistd.h>
|
||||
#include <stdlib.h>
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
#include <readline/readline.h>
|
||||
#include <readline/history.h>],
|
||||
[HIST_ENTRY **hl;
|
||||
readline("");
|
||||
add_history("");
|
||||
hl= history_list();
|
||||
], [readline_test="yes"], [readline_test="no"]
|
||||
)
|
||||
AC_MSG_RESULT([$readline_test])
|
||||
if test x$readline_test = xno
|
||||
then
|
||||
READLINE_DEF=
|
||||
LIBS="$libburnia_save_LIBS"
|
||||
fi
|
||||
fi
|
||||
])
|
||||
|
||||
|
||||
dnl LIBBURNIA_SET_PKGCONFIG determines the install directory for the *.pc file.
|
||||
dnl Important: Must be performed _after_ TARGET_SHIZZLE
|
||||
dnl
|
||||
AC_DEFUN([LIBBURNIA_SET_PKGCONFIG],
|
||||
[
|
||||
### for testing --enable-libdir-pkgconfig on Linux
|
||||
### LIBBURNIA_PKGCONFDIR="$libdir"data/pkgconfig
|
||||
|
||||
if test "x$LIBBURNIA_PKGCONFDIR" = "x$libdir"/pkgconfig
|
||||
then
|
||||
dummy=dummy
|
||||
else
|
||||
AC_ARG_ENABLE(libdir-pkgconfig,
|
||||
[ --enable-libdir-pkgconfig Install to $libdir/pkgconfig on any OS, default=no],
|
||||
, enable_libdir_pkgconfig="no")
|
||||
AC_MSG_CHECKING([for --enable-libdir-pkgconfig])
|
||||
if test "x$enable_libdir_pkgconfig" = xyes
|
||||
then
|
||||
LIBBURNIA_PKGCONFDIR="$libdir"/pkgconfig
|
||||
fi
|
||||
AC_MSG_RESULT([$enable_libdir_pkgconfig])
|
||||
fi
|
||||
|
||||
libburnia_pkgconfig_override="no"
|
||||
AC_ARG_ENABLE(pkgconfig-path,
|
||||
[ --enable-pkgconfig-path=DIR Absolute path of directory for libisofs-*.pc],
|
||||
libburnia_pkgconfig_override="yes" , enable_pkgconfig_path="none")
|
||||
AC_MSG_CHECKING([for overridden pkgconfig directory path])
|
||||
if test "x$enable_pkgconfig_path" = xno
|
||||
then
|
||||
libburnia_pkgconfig_override="no"
|
||||
fi
|
||||
if test "x$enable_pkgconfig_path" = x -o "x$enable_pkgconfig_path" = xyes
|
||||
then
|
||||
libburnia_pkgconfig_override="invalid argument"
|
||||
fi
|
||||
if test "x$libburnia_pkgconfig_override" = xyes
|
||||
then
|
||||
LIBBURNIA_PKGCONFDIR="$enable_pkgconfig_path"
|
||||
AC_MSG_RESULT([$LIBBURNIA_PKGCONFDIR])
|
||||
else
|
||||
AC_MSG_RESULT([$libburnia_pkgconfig_override])
|
||||
fi
|
||||
AC_SUBST(LIBBURNIA_PKGCONFDIR)
|
||||
|
||||
dnl For debugging only
|
||||
### AC_MSG_RESULT([LIBBURNIA_PKGCONFDIR = $LIBBURNIA_PKGCONFDIR])
|
||||
|
||||
])
|
||||
|
@ -0,0 +1,7 @@
|
||||
#!/bin/sh -x
|
||||
|
||||
aclocal
|
||||
libtoolize --copy --force
|
||||
autoconf
|
||||
automake --foreign --add-missing --copy --include-deps
|
||||
|
@ -0,0 +1,306 @@
|
||||
AC_INIT([libisoburn], [0.5.7], [http://libburnia-project.org])
|
||||
AC_PREREQ([2.50])
|
||||
dnl AC_CONFIG_HEADER([config.h])
|
||||
|
||||
AC_CANONICAL_HOST
|
||||
AC_CANONICAL_TARGET
|
||||
|
||||
LIBBURNIA_SET_FLAGS
|
||||
|
||||
AM_INIT_AUTOMAKE([subdir-objects])
|
||||
|
||||
dnl Hint: Search list for version code aspects:
|
||||
dnl /AC_INIT(
|
||||
dnl /ISOBURN_.*_VERSION
|
||||
dnl /LT_.*
|
||||
dnl /LIB.*_REQUIRED
|
||||
|
||||
dnl The API version codes are defined in libisoburn/libisoburn.h
|
||||
dnl #define isoburn_header_version_*
|
||||
dnl configure.ac only rules the libtool revision numbering about
|
||||
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=5
|
||||
ISOBURN_MICRO_VERSION=7
|
||||
|
||||
dnl ISOBURN_VERSION=$ISOBURN_MAJOR_VERSION.$ISOBURN_MINOR_VERSION.$ISOBURN_MICRO_VERSION
|
||||
|
||||
AC_SUBST(ISOBURN_MAJOR_VERSION)
|
||||
AC_SUBST(ISOBURN_MINOR_VERSION)
|
||||
AC_SUBST(ISOBURN_MICRO_VERSION)
|
||||
dnl AC_SUBST(ISOBURN_VERSION)
|
||||
|
||||
dnl Libtool versioning
|
||||
dnl Generate libisoburn.so.1.x.y
|
||||
dnl SONAME will become LT_CURRENT - LT_AGE
|
||||
dnl
|
||||
dnl ts B00504
|
||||
dnl ### This is the release version 0.5.6 = libisoburn.so.1.45.0
|
||||
dnl This is the development version after above stable release
|
||||
dnl LT_CURRENT++, LT_AGE++ have not happened yet.
|
||||
dnl ### LT_CURRENT++, LT_AGE++ has happened meanwhile.
|
||||
dnl
|
||||
dnl SONAME = 46 - 45 = 1 . Library name = libisoburn.so.1.45.0
|
||||
LT_RELEASE=$ISOBURN_MAJOR_VERSION.$ISOBURN_MINOR_VERSION
|
||||
LT_CURRENT=46
|
||||
LT_AGE=45
|
||||
LT_REVISION=0
|
||||
LT_CURRENT_MINUS_AGE=`expr $LT_CURRENT - $LT_AGE`
|
||||
|
||||
AC_SUBST(LT_RELEASE)
|
||||
AC_SUBST(LT_CURRENT)
|
||||
AC_SUBST(LT_REVISION)
|
||||
AC_SUBST(LT_AGE)
|
||||
AC_SUBST(LT_CURRENT_MINUS_AGE)
|
||||
|
||||
AC_PREFIX_DEFAULT([/usr/local])
|
||||
test "$prefix" = "NONE" && prefix=$ac_default_prefix
|
||||
|
||||
AM_MAINTAINER_MODE
|
||||
|
||||
AM_PROG_CC_C_O
|
||||
AC_C_CONST
|
||||
AC_C_INLINE
|
||||
AC_C_BIGENDIAN
|
||||
|
||||
dnl Large file support
|
||||
AC_SYS_LARGEFILE
|
||||
AC_FUNC_FSEEKO
|
||||
AC_CHECK_FUNC([fseeko])
|
||||
if test ! $ac_cv_func_fseeko; then
|
||||
AC_ERROR([Libburn requires largefile support.])
|
||||
fi
|
||||
|
||||
if test x$LIBISOBURN_OLD_ICONV_CONFIGURE = x
|
||||
then
|
||||
|
||||
dnl ts B00410 : To detect the need for -liconv and const argument of iconv()
|
||||
LIBBURNIA_CHECK_ICONV
|
||||
|
||||
else
|
||||
|
||||
dnl Outdated: produces double -liconv and warnings about parameter mismatch
|
||||
dnl If iconv(3) is in an extra lib, then it gets added to variable LIBS.
|
||||
dnl If not, then no -liconv will be added.
|
||||
AC_CHECK_LIB(iconv, iconv, , )
|
||||
dnl GNU iconv has no function iconv() but libiconv() and a macro iconv()
|
||||
AC_CHECK_LIB(iconv, libiconv, , )
|
||||
|
||||
fi
|
||||
|
||||
AC_PROG_LIBTOOL
|
||||
AC_SUBST(LIBTOOL_DEPS)
|
||||
LIBTOOL="$LIBTOOL --silent"
|
||||
|
||||
AC_PROG_INSTALL
|
||||
|
||||
AC_CHECK_HEADERS()
|
||||
|
||||
THREAD_LIBS=-lpthread
|
||||
AC_SUBST(THREAD_LIBS)
|
||||
|
||||
TARGET_SHIZZLE
|
||||
AC_SUBST(ARCH)
|
||||
AC_SUBST(LIBBURNIA_PKGCONFDIR)
|
||||
AC_SUBST(LIBBURN_ARCH_LIBS)
|
||||
|
||||
|
||||
dnl Determine target directory for libisoburn-*.pc
|
||||
dnl Important: Must be performed _after_ TARGET_SHIZZLE
|
||||
dnl
|
||||
LIBBURNIA_SET_PKGCONFIG
|
||||
|
||||
|
||||
AC_ARG_ENABLE(libreadline,
|
||||
[ --enable-libreadline Enable use of libreadline by xorriso, default=yes],
|
||||
, enable_libreadline=yes)
|
||||
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"
|
||||
|
||||
if test x$XORRISO_OLD_READLINE_CONFIGURE = x
|
||||
then
|
||||
|
||||
dnl ts B00411 : To disable readline if not all needed functions are present
|
||||
LIBBURNIA_ASSERT_READLINE
|
||||
|
||||
else
|
||||
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= )
|
||||
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= )
|
||||
fi
|
||||
else
|
||||
READLINE_DEF=
|
||||
fi
|
||||
AC_SUBST(READLINE_DEF)
|
||||
|
||||
dnl ts A90329
|
||||
dnl ACL and xattr do not need to be enabled in libisoburn or xorriso source
|
||||
dnl but without AC_CHECK_LIB() xorriso will not be linked with -lacl .
|
||||
dnl On my Linux this does work with an ACL enabled libisofs but in general
|
||||
dnl it seems not be right.
|
||||
dnl So for now it seems to be best to do the same configuration for libisoburn
|
||||
dnl and xorriso as for libisofs.
|
||||
|
||||
AC_ARG_ENABLE(libacl,
|
||||
[ --enable-libacl Enable use of libacl by libisofs, default=yes],
|
||||
, enable_libacl=yes)
|
||||
if test x$enable_libacl = xyes; then
|
||||
dnl Check whether there is libacl-devel and libacl-runtime.
|
||||
dnl If not, erase this macro which would enable use of acl_to_text and others
|
||||
LIBACL_DEF="-DLibisofs_with_aaip_acL"
|
||||
dnl The empty yes case obviously causes -lacl to be linked
|
||||
AC_CHECK_HEADER(sys/acl.h, AC_CHECK_LIB(acl, acl_to_text, , LIBACL_DEF= ), LIBACL_DEF= )
|
||||
else
|
||||
LIBACL_DEF=
|
||||
fi
|
||||
AC_SUBST(LIBACL_DEF)
|
||||
|
||||
|
||||
AC_ARG_ENABLE(xattr,
|
||||
[ --enable-xattr Enable use of xattr by libisofs, default=yes],
|
||||
, enable_xattr=yes)
|
||||
if test x$enable_xattr = xyes; then
|
||||
dnl Check whether there is the header for Linux xattr.
|
||||
dnl If not, erase this macro which would enable use of listxattr and others
|
||||
XATTR_DEF="-DLibisofs_with_aaip_xattR"
|
||||
AC_CHECK_HEADER(attr/xattr.h, AC_CHECK_LIB(c, listxattr, X= , XATTR_DEF= ), XATTR_DEF= )
|
||||
else
|
||||
XATTR_DEF=
|
||||
fi
|
||||
AC_SUBST(XATTR_DEF)
|
||||
|
||||
|
||||
dnl ts A90409
|
||||
dnl Same situation as with xattr and ACL: libisoburn does not depend directly
|
||||
dnl on zlib. But if it is enabled in libisofs then it seems wise to link it
|
||||
dnl with libisoburn apps.
|
||||
AC_ARG_ENABLE(zlib,
|
||||
[ --enable-zlib Enable use of zlib by libisofs, default=yes],
|
||||
, enable_zlib=yes)
|
||||
if test x$enable_zlib = xyes; then
|
||||
dnl Check whether there is the header for zlib.
|
||||
dnl If not, erase this macro which would enable use of compress2() and others.
|
||||
dnl Linking fails on SuSE 9.0 because zlib has compress2() but lacks
|
||||
dnl compressBound(). So compressBound is the more modern thing to test.
|
||||
dnl The empty parameter after "compressBound" causes -lz.
|
||||
ZLIB_DEF="-DLibisofs_with_zliB"
|
||||
AC_CHECK_HEADER(zlib.h, AC_CHECK_LIB(z, compressBound, , ZLIB_DEF= ), ZLIB_DEF= )
|
||||
else
|
||||
ZLIB_DEF=
|
||||
fi
|
||||
AC_SUBST(ZLIB_DEF)
|
||||
|
||||
|
||||
dnl ts B00107
|
||||
dnl Just for the case that it is necessary to give link option -lcdio not only
|
||||
dnl with libburn but also with libburn apps like xorriso.
|
||||
dnl On SuSE 10.2 this is not needed. libburn finds libcdio on its own.
|
||||
AC_ARG_ENABLE(libcdio,
|
||||
[ --enable-libcdio Enable EXPERIMENTAL use of libcdio as system adapter, default=no],
|
||||
, enable_libcdio=no)
|
||||
if test x$enable_libcdio = xyes; then
|
||||
dnl Check whether there is libcdio-devel and libcdio-runtime.
|
||||
dnl If not, erase this macro
|
||||
LIBCDIO_DEF="-DLibburn_use_libcdiO"
|
||||
dnl The empty yes case obviously causes -lcdio to be linked
|
||||
AC_CHECK_HEADER(cdio/cdio.h, AC_CHECK_LIB(cdio, mmc_last_cmd_sense, , LIBCDIO_DEF= ), LIBCDIO_DEF= )
|
||||
else
|
||||
LIBCDIO_DEF=
|
||||
fi
|
||||
AC_SUBST(LIBCDIO_DEF)
|
||||
|
||||
|
||||
AC_ARG_ENABLE(external-filters,
|
||||
[ --enable-external-filters Enable use of external filter programs by xorriso, default=yes],
|
||||
, enable_external_filters=yes)
|
||||
if test x"$enable_external_filters" = xyes; then
|
||||
EXTF_DEF="-DXorriso_allow_external_filterS"
|
||||
echo "enabled xorriso external filter programs"
|
||||
else
|
||||
EXTF_DEF=
|
||||
echo "disabled xorriso external filter programs"
|
||||
fi
|
||||
AC_SUBST(EXTF_DEF)
|
||||
|
||||
AC_ARG_ENABLE(external-filters-setuid,
|
||||
[ --enable-external-filters-setuid Enable xorriso external filter programs under setuid, default=no],
|
||||
, enable_external_filters_setuid=no)
|
||||
if test x$enable_external_filters_setuid = xyes; then
|
||||
EXTF_SUID_DEF="-DXorriso_allow_extf_suiD"
|
||||
echo "enabled xorriso external filter programs under setuid"
|
||||
else
|
||||
EXTF_SUID_DEF=
|
||||
echo "disabled xorriso external filter programs under setuid"
|
||||
fi
|
||||
AC_SUBST(EXTF_SUID_DEF)
|
||||
|
||||
AC_ARG_ENABLE(dvd-obs-64k,
|
||||
[ --enable-dvd-obs-64k 64 KB default size for xorriso DVD/BD writing, default=no],
|
||||
, enable_fifo_odirect=no)
|
||||
if test x$enable_dvd_obs_64k = xyes; then
|
||||
XORRISO_DVD_OBS_64K="-DXorriso_dvd_obs_default_64K"
|
||||
echo "enabled xorriso write size default 64 KB on DVD and BD"
|
||||
else
|
||||
XORRISO_DVD_OBS_64K=
|
||||
echo "disabled xorriso write size default 64 KB on DVD and BD"
|
||||
fi
|
||||
AC_SUBST(XORRISO_DVD_OBS_64K)
|
||||
|
||||
|
||||
AC_CHECK_HEADER(libburn/libburn.h)
|
||||
AC_CHECK_HEADER(libisofs/libisofs.h)
|
||||
|
||||
dnl Check for proper library versions
|
||||
LIBBURN_REQUIRED=0.8.2
|
||||
LIBISOFS_REQUIRED=0.6.32
|
||||
PKG_CHECK_MODULES(LIBBURN, libburn-1 >= $LIBBURN_REQUIRED)
|
||||
PKG_CHECK_MODULES(LIBISOFS, libisofs-1 >= $LIBISOFS_REQUIRED)
|
||||
|
||||
if test x$LIBCDIO_DEF = x
|
||||
then
|
||||
if test x$enable_libcdio = xyes
|
||||
then
|
||||
echo "WARNING: could not enable use of libcdio as system adapter"
|
||||
fi
|
||||
else
|
||||
echo "enabled EXPERIMENTAL use of libcdio as system adapter"
|
||||
|
||||
dnl For some reason this check may not be done earlier or else pkg-config
|
||||
dnl is not found.
|
||||
LIBCDIO_REQUIRED=0.83
|
||||
PKG_CHECK_MODULES(LIBCDIO, libcdio >= $LIBCDIO_REQUIRED)
|
||||
fi
|
||||
|
||||
dnl Add compiler-specific flags
|
||||
|
||||
dnl See if the user wants aggressive optimizations of the code
|
||||
AC_ARG_ENABLE(debug,
|
||||
[ --enable-debug Disable aggressive optimizations [default=yes]],
|
||||
, enable_debug=yes)
|
||||
if test x$enable_debug != xyes; then
|
||||
if test x$GCC = xyes; then
|
||||
CFLAGS="$CFLAGS -O3"
|
||||
CFLAGS="$CFLAGS -fexpensive-optimizations"
|
||||
fi
|
||||
CFLAGS="$CFLAGS -DNDEBUG"
|
||||
else
|
||||
if test x$GCC = xyes; then
|
||||
CFLAGS="$CFLAGS -g -pedantic -Wall"
|
||||
fi
|
||||
CFLAGS="$CFLAGS -DDEBUG"
|
||||
fi
|
||||
|
||||
CFLAGS="$CFLAGS $READLINE_DEF $LIBACL_DEF $XATTR_DEF $EXTF_DEF $EXTF_SUID_DEF $ZLIB_DEF $XORRISO_DVD_OBS_64K"
|
||||
|
||||
AC_CONFIG_FILES([
|
||||
Makefile
|
||||
doc/doxygen.conf
|
||||
version.h
|
||||
libisoburn-1.pc
|
||||
])
|
||||
AC_OUTPUT
|
@ -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 .
|
||||
|
||||
*/
|
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,12 @@
|
||||
prefix=@prefix@
|
||||
exec_prefix=@exec_prefix@
|
||||
libdir=@libdir@
|
||||
includedir=@includedir@
|
||||
|
||||
Name: libisoburn
|
||||
Description: Multi-session filesystem extension to libisofs, libburn.
|
||||
Version: @VERSION@
|
||||
Requires:
|
||||
Libs: -L${libdir} -lisoburn
|
||||
Cflags: -I${includedir}/libisoburn
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,274 @@
|
||||
/*
|
||||
data source for libisoburn.
|
||||
|
||||
Copyright 2007 - 2010 Vreixo Formoso Lopes <metalpain2002@yahoo.es>
|
||||
and Thomas Schmitt <scdbackup@gmx.net>
|
||||
Provided under GPL version 2 or later.
|
||||
*/
|
||||
|
||||
#ifdef HAVE_CONFIG_H
|
||||
#include "../config.h"
|
||||
#endif
|
||||
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
|
||||
#include <stdio.h>
|
||||
|
||||
|
||||
#ifndef Xorriso_standalonE
|
||||
|
||||
#include <libburn/libburn.h>
|
||||
|
||||
#include <libisofs/libisofs.h>
|
||||
|
||||
#else /* ! Xorriso_standalonE */
|
||||
|
||||
#include "../libisofs/libisofs.h"
|
||||
#include "../libburn/libburn.h"
|
||||
|
||||
#endif /* Xorriso_standalonE */
|
||||
|
||||
|
||||
#include "isoburn.h"
|
||||
|
||||
|
||||
/* Cached reading of image tree data */
|
||||
/* Multi tile: 32 * 64 kB */
|
||||
|
||||
/* The size of a single tile.
|
||||
Powers of 2 only ! Less than 16 makes not much sense.
|
||||
*/
|
||||
#define Libisoburn_tile_blockS 32
|
||||
|
||||
/* The number of tiles in the cache
|
||||
*/
|
||||
#define Libisoburn_cache_tileS 32
|
||||
|
||||
|
||||
/* Debugging only: This reports cache loads on stderr.
|
||||
#define Libisoburn_read_cache_reporT 1
|
||||
*/
|
||||
|
||||
|
||||
struct isoburn_cache_tile {
|
||||
char cache_data[Libisoburn_tile_blockS * 2048];
|
||||
uint32_t cache_lba;
|
||||
uint32_t last_error_lba;
|
||||
uint32_t last_aligned_error_lba;
|
||||
int cache_hits;
|
||||
int age;
|
||||
};
|
||||
|
||||
struct isoburn_cached_drive {
|
||||
struct burn_drive *drive;
|
||||
struct isoburn_cache_tile tiles[Libisoburn_cache_tileS];
|
||||
int current_age;
|
||||
};
|
||||
|
||||
#define Libisoburn_max_agE 2000000000
|
||||
|
||||
static int ds_inc_age(struct isoburn_cached_drive *icd, int idx, int flag);
|
||||
|
||||
|
||||
int ds_read_block(IsoDataSource *src, uint32_t lba, uint8_t *buffer)
|
||||
{
|
||||
int ret, i, oldest, oldest_age;
|
||||
struct burn_drive *d;
|
||||
off_t count;
|
||||
uint32_t aligned_lba;
|
||||
char msg[80];
|
||||
struct isoburn_cache_tile *tiles;
|
||||
struct isoburn_cached_drive *icd;
|
||||
|
||||
if(src == NULL || buffer == NULL)
|
||||
/* It is not required by the specs of libisofs but implicitely assumed
|
||||
by its current implementation that a data source read result <0 is
|
||||
a valid libisofs error code.
|
||||
*/
|
||||
return ISO_NULL_POINTER;
|
||||
|
||||
icd = (struct isoburn_cached_drive *) src->data;
|
||||
d = (struct burn_drive*) icd->drive;
|
||||
|
||||
if(d == NULL) {
|
||||
/* This would happen if libisoburn saw output data in the fifo and
|
||||
performed early drive release and afterwards libisofs still tries
|
||||
|