Branching for libisoburn release 0.4.2

This commit is contained in:
2009-08-29 11:17:59 +00:00
parent 9686dd7177
commit 2494537ee1
43 changed files with 56054 additions and 0 deletions

View File

@ -0,0 +1,263 @@
------------------------------------------------------------------------------
libburnia-project.org scdbackup.sourceforge.net/xorriso_eng.html
------------------------------------------------------------------------------
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.4.1.tar.gz
Copyright (C) 2006-2009 Thomas Schmitt, provided under GPL version 2.
------------------------------------------------------------------------------
xorriso is a program which maps file objects from POSIX compliant
filesystems into Rock Ridge enhanced ISO 9660 filesystems and allows
session-wise manipulation of such filesystems. It can load the management
information of existing ISO images and it writes the session results to
optical media or to filesystem objects.
Vice versa xorriso is able to restore file objects from ISO 9660 filesystems.
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 ..."
Compilation, First Glimpse, Installation
The most simple way to get xorriso from source code is the xorriso standalone
tarball.
Prerequisites:
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.
zlib and zlib-devel allow zisofs compression.
If they were present at compile time, then the optional libraries have to
be present at runtime, too.
Obtain xorriso-0.4.1.tar.gz, take it to a directory of your choice and do:
tar xzf xorriso-0.4.1.tar.gz
cd xorriso-0.4.1
Within that directory execute:
./configure --prefix=/usr
make
This will produce a binary named
./xorriso/xorriso
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,
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
man 1 xorriso
This man page is part of the tarball as
xorriso/xorriso.1
You may get a first glimpse by
man ./xorriso/xorriso.1
It gets installed with "make install" but may also be placed manually in the
./man1 directory below one of the directories mentioned in environment
variable $MANPATH.
The installation creates several alias links pointing 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
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()
--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
If you want xorriso to report a "Build timestamp" with its option -version:
make buildstamped
Drives and Disk File Objects
The user of xorriso needs rw-permission for the CD burner device.
A list of rw-accessible drives can be obtained by
xorriso -devices
CD devices which offer no rw-permission are invisible to normal users.
The superuser should be able to see any usable drive and then set the
permissions as needed.
The output of xorriso -devices might look like
0 -dev '/dev/sr0' rwrw-- : 'TSSTcorp' 'CDDVDW SH-S203B'
1 -dev '/dev/hda' rwrw-- : 'HL-DT-ST' 'DVD-ROM GDR8162B'
Full and insecure enabling of both for everybody would look like
chmod a+rw /dev/sr0 /dev/hda
This is equivalent to the traditional setup chmod a+x,u+s cdrecord.
I strongly discourage to run xorriso with setuid root or via sudo !
It is not checked for the necessary degree of hacker safety.
Consider to put all authorized users into group "floppy", to chgrp the
device file to that group and to disallow w-access to others.
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, xorriso can also address disk files as input or
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:/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
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 xorriso 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 first 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 -- -commit_eject all
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
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
libburn which does the input and output aspects. Parts of this foundation
are accessed via libisoburn, which is closely related to xorriso.
libisoburn provides two services:
- Encapsulation of coordination between libisofs and libburn.
- Emulation of ISO 9660 multi-session on overwriteable media
or random access files.
The sourcecode of all three libraries is included in the xorriso standalone
tarball. It is compiled with xorriso and linked statically.
But you may as well get and install releases of libburn and libisofs, in order
to be able to install a release of libisoburn which produces libisoburn.so.1
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.4.0 :
- libburn.so.4 , version libburn-0.6.4 or higher
- libisofs.so.6 , version libisofs-0.6.20 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.
Standalone xorriso has less runtime dependencies and can be moved more freely.
------------------------------------------------------------------------------
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License version 2 as
published by the Free Software Foundation.
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-2009 Mario Danic, Vreixo Formoso, Thomas Schmitt.
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

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,173 @@
#!/bin/sh
# compile_xorriso.sh
# Copyright 2005 - 2009 Thomas Schmitt, scdbackup@gmx.net, GPL version 2
#
# Not intended for general use in production installations !
# Rather use: ./bootstrap ; ./configure ; make
#
# This is a development tool which expects a special setup of directories
# on a Linux system (e.g. SuSE 10.2).
# It is to be executed in a common parent of the directories given with
# $isofs $isoburn $burn $xorr
isofs=./nglibisofs-develop/libisofs/libisofs_libisofs_la-
isofs_filter=./nglibisofs-develop/libisofs/filters/libisofs_libisofs_la-
burn=./libburn-develop/libburn
isoburn=./libisoburn-develop/libisoburn
xorr=./libisoburn-develop/xorriso
debug_opts="-O2"
def_opts="-DXorriso_allow_external_filterS"
largefile_opts="-D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE=1"
do_strip=0
static_opts=
warn_opts="-Wall"
nglibisofs=1
def_libreadline="-DXorriso_with_readlinE"
link_libreadline="-lreadline"
for i in "$@"
do
if test "$i" = "-do_diet"
then
def_opts="$def_opts -DXorriso_no_helP"
warn_opts=
elif test "$i" = "-do_strip"
then
do_strip=1
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."
echo " -static compile with cc option -static."
exit 0
elif test "$i" = "-static"
then
static_opts="-static"
fi
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"system_area.o
libisofs="$libisofs $isofs"make_isohybrid_mbr.o
libisofs="$libisofs $isofs"aaip_0_2.o
libisofs="$libisofs $isofs"filter.o
libisofs="$libisofs $isofs_filter"external.o
libisofs="$libisofs $isofs_filter"zisofs.o
libisofs="$libisofs $isofs_filter"gzip.o
libisofs="$libisofs $isofs"md5.o
echo "Version timestamp : $(sed -e 's/#define Xorriso_timestamP "//' -e 's/"$//' "$xorr"/xorriso_timestamp.h)"
date -u '+#define Xorriso_build_timestamP "%Y.%m.%d.%H%M%S"' >"$xorr"/xorriso_buildstamp.h
echo "Build timestamp : $(sed -e 's/#define Xorriso_build_timestamP "//' -e 's/"$//' "$xorr"/xorriso_buildstamp.h)"
echo "compiling program $xorr/xorriso.c $static_opts $debug_opts $def_opts"
cc -I. -DXorriso_with_maiN $def_libreadline \
$warn_opts \
$static_opts \
$debug_opts \
$def_opts \
$largefile_opts \
\
-o "$xorr"/xorriso \
\
"$xorr"/xorriso.c \
\
"$xorr"/xorrisoburn.c \
\
"$burn"/async.o \
"$burn"/debug.o \
"$burn"/drive.o \
"$burn"/file.o \
"$burn"/init.o \
"$burn"/options.o \
"$burn"/source.o \
"$burn"/structure.o \
\
"$burn"/sg.o \
"$burn"/write.o \
"$burn"/read.o \
"$burn"/libdax_audioxtr.o \
"$burn"/libdax_msgs.o \
"$burn"/cleanup.o \
\
"$burn"/mmc.o \
"$burn"/sbc.o \
"$burn"/spc.o \
"$burn"/util.o \
\
"$burn"/sector.o \
"$burn"/toc.o \
\
"$burn"/crc.o \
"$burn"/lec.o \
\
"$isoburn"/isoburn.o \
"$isoburn"/burn_wrap.o \
"$isoburn"/data_source.o \
"$isoburn"/isofs_wrap.o \
\
$libisofs \
\
$link_libreadline \
\
-lpthread \
-lacl \
-lz
ret=$?
if test "$ret" = 0
then
dummy=dummy
else
echo >&2
echo "+++ FATAL : Compilation of xorriso failed" >&2
echo >&2
exit 1
fi
if test "$do_strip" = 1
then
echo "stripping result $xorr/xorriso"
strip "$xorr"/xorriso
fi
echo 'done.'

View File

@ -0,0 +1,215 @@
AC_INIT([xorriso], [0.4.1], [http://libburnia-project.org])
AC_PREREQ([2.50])
dnl AC_CONFIG_HEADER([config.h])
AC_CANONICAL_HOST
AC_CANONICAL_TARGET
AM_INIT_AUTOMAKE([subdir-objects])
BURN_MAJOR_VERSION=0
BURN_MINOR_VERSION=7
BURN_MICRO_VERSION=1
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=23
AC_SUBST(LIBISOFS_MAJOR_VERSION)
AC_SUBST(LIBISOFS_MINOR_VERSION)
AC_SUBST(LIBISOFS_MICRO_VERSION)
dnl The API version codes are defined in libisoburn/libisoburn.h
dnl #define isoburn_header_version_*
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
dnl If iconv(3) is in an extra libiconv, then it gets added to variable LIBS.
dnl If not, then no -liconv will be added.
AC_CHECK_LIB(iconv, iconv, , )
dnl GNU iconv has no function iconv() but libiconv() and a macro iconv()
AC_CHECK_LIB(iconv, libiconv, , )
AC_PROG_LIBTOOL
AC_SUBST(LIBTOOL_DEPS)
LIBTOOL="$LIBTOOL --silent"
AC_PROG_INSTALL
AC_CHECK_HEADERS()
AC_CHECK_MEMBER([struct tm.tm_gmtoff],
[AC_DEFINE(HAVE_TM_GMTOFF, 1,
[Define this if tm structure includes a tm_gmtoff entry.])],
,
[#include <time.h>])
dnl Check if non standard timegm() function is available
AC_CHECK_DECL([timegm],
[AC_DEFINE(HAVE_TIMEGM, 1, [Define this if timegm function is available])],
,
[#include <time.h>])
dnl Check if non standard eaccess() function is available
AC_CHECK_DECL([eaccess],
[AC_DEFINE(HAVE_EACCESS, 1, [Define this if eaccess function is available])],
,
[#include <unistd.h>])
THREAD_LIBS=-lpthread
AC_SUBST(THREAD_LIBS)
TARGET_SHIZZLE
AC_SUBST(ARCH)
AC_SUBST(LIBBURNIA_PKGCONFDIR)
AC_SUBST(LIBBURN_ARCH_LIBS)
dnl ts A90303
dnl Check the preconditions for using statvfs() in sg-dummy
dnl (sg-linux and sg-freebsd use statvfs() unconditionally)
STATVFS_DEF=-DLibburn_os_has_statvfS
AC_CHECK_HEADER(sys/statvfs.h, X=, STATVFS_DEF=)
AC_CHECK_FUNC([statvfs], X=, STATVFS_DEF=)
CFLAGS="$CFLAGS $STATVFS_DEF"
dnl Add compiler-specific flags
dnl See if the user wants aggressive optimizations of the code
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
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"
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= )
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_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 The empty parameter after "compress2" causes -lz.
ZLIB_DEF="-DLibisofs_with_zliB"
AC_CHECK_HEADER(zlib.h, AC_CHECK_LIB(z, compress2, , ZLIB_DEF= ), ZLIB_DEF= )
else
ZLIB_DEF=
fi
AC_SUBST(ZLIB_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_CONFIG_FILES([
Makefile
version.h
])
AC_OUTPUT
# xorriso.pc

View File

@ -0,0 +1,113 @@
#!/bin/sh
#
# convert_man_to_html.sh - ts A80118
#
# Generates a HTML version of man page xorriso.1
#
# To be executed in the libisoburn toplevel directory (eg. ./libisoburn-0.1.0)
#
# set -x
man_dir=$(pwd)"/xorriso"
export MANPATH="$man_dir"
manpage="xorriso"
raw_html=$(pwd)/"xorriso/raw_man_1_xorriso.html"
htmlpage=$(pwd)/"xorriso/man_1_xorriso.html"
if test -r "$man_dir"/"$manpage".1
then
dummy=dummy
else
echo "Cannot find readable man page source $1" >&2
exit 1
fi
if test -e "$man_dir"/man1
then
dummy=dummy
else
ln -s . "$man_dir"/man1
fi
if test "$1" = "-work_as_filter"
then
# set -x
sed \
-e 's/<meta name="generator" content="groff -Thtml, see www.gnu.org">/<meta name="generator" content="groff -Thtml, via man -H, via xorriso\/convert_man_to_html.sh">/' \
-e 's/<meta name="Content-Style" content="text\/css">/<meta name="Content-Style" content="text\/css"><META NAME="description" CONTENT="man page of xorriso"><META NAME="keywords" CONTENT="man xorriso, manual, xorriso, CD, CD-RW, CD-R, burning, cdrecord, compatible"><META NAME="robots" CONTENT="follow">/' \
-e 's/<title>XORRISO<\/title>/<title>man 1 xorriso<\/title>/' \
-e 's/<h1 align=center>XORRISO<\/h1>/<h1 align=center>man 1 xorriso<\/h1>/' \
-e 's/<body>/<body BGCOLOR="#F5DEB3" TEXT=#000000 LINK=#0000A0 VLINK=#800000>/' \
-e 's/<b>Overview of features:<\/b>/\&nbsp;<BR><b>Overview of features:<\/b>/' \
-e 's/<b>General information paragraphs:<\/b>/\&nbsp;<BR><b>General information paragraphs:<\/b>/' \
-e 's/have a look at section EXAMPLES/have a look at section <A HREF="#EXAMPLES">EXAMPLES<\/A>/' \
-e 's/<b>Session model:<\/b>/\&nbsp;<BR><b>Session model:<\/b>/' \
-e 's/<b>Media types and states:<\/b>/\&nbsp;<BR><b>Media types and states:<\/b>/' \
-e 's/<b>Creating, Growing, Modifying, Blind/\&nbsp;<BR><b>Creating, Growing, Modifying, Blind/' \
-e 's/<b>Libburn drives:<\/b>/\&nbsp;<BR><b>Libburn drives:<\/b>/' \
-e 's/^-dev /\&nbsp;\&nbsp;-dev /' \
-e 's/^-devices /\&nbsp;\&nbsp;-devices /' \
-e 's/<b>Rock Ridge, POSIX, X\/Open, El Torito, ACL,/\&nbsp;<BR><b>Rock Ridge, POSIX, X\/Open, El Torito, ACL,/' \
-e 's/<b>Command processing:<\/b>/\&nbsp;<BR><b>Command processing:<\/b>/' \
-e 's/<b>Dialog, Readline, Result pager:<\/b>/\&nbsp;<BR><b>Dialog, Readline, Result pager:<\/b>/' \
-e 's/<b>Aquiring source and target drive:<\/b>/\&nbsp;<BR><b>Aquiring source and target drive:<\/b><BR>\&nbsp;<BR>/' \
-e 's/<b>Data manipulations:<\/b>/\&nbsp;<BR><b>Data manipulations:<\/b><BR>\&nbsp;<BR>/' \
-e 's/^<p><b>&minus;iso_rr_pattern/<p>\&nbsp;<BR><b>\&minus;iso_rr_pattern/' \
-e 's/EXAMPLES):<br>/<A HREF="#EXAMPLES">EXAMPLES<\/A>):<br>/' \
-e 's/<b>Writing the result:<\/b>/\&nbsp;<BR><b>Writing the result:<\/b><BR>/' \
-e 's/^-find \/ /\&nbsp;\&nbsp;-find \/ /' \
-e 's/<b>Settings for data insertion:<\/b>/\&nbsp;<BR><b>Settings for data insertion:<\/b><BR>\&nbsp;<BR>/' \
-e 's/^$<\/b> ln -s/\&nbsp;\&nbsp;$<\/b> ln -s/' \
-e 's/<b>Settings for result writing:<\/b>/\&nbsp;<BR><b>Settings for result writing:<\/b><BR>\&nbsp;<BR>/' \
-e 's/^706k = 706kB/\&nbsp;\&nbsp;706k = 706kB/' \
-e 's/^5540k = 5540kB/\&nbsp;\&nbsp;5540k = 5540kB/' \
-e 's/<b>Character sets:<\/b>/\&nbsp;<BR><b>Character sets:<\/b><BR>\&nbsp;<BR>/' \
-e 's/<b>Exception processing:<\/b>/\&nbsp;<BR><b>Exception processing:<\/b><BR>\&nbsp;<BR>/' \
-e 's/<b>El Torito bootable ISO images:<\/b>/\&nbsp;<BR><b>El Torito bootable ISO images:<\/b><BR>\&nbsp;<BR>/' \
-e 's/<b>Dialog mode control:<\/b>/\&nbsp;<BR><b>Dialog mode control:<\/b><BR>\&nbsp;<BR>/' \
-e 's/<b>Drive and media related inquiry actions:<\/b>/\&nbsp;<BR><b>Drive and media related inquiry actions:<\/b><BR>\&nbsp;<BR>/' \
-e 's/<b>Navigation in ISO image/\&nbsp;<BR><b>Navigation in ISO image/' \
-e 's/^filesystem:<\/b>/filesystem:<\/b><BR>\&nbsp;<BR>/' \
-e 's/<b>Evaluation of readability and recovery:<\/b>/\&nbsp;<BR><b>Evaluation of readability and recovery:<\/b><BR>\&nbsp;<BR>/' \
-e 's/<b>osirrox restore options:<\/b>/\&nbsp;<BR><b>osirrox restore options:<\/b><BR>\&nbsp;<BR>/' \
-e 's/<b>Command compatibility emulations:<\/b>/\&nbsp;<BR><b>Command compatibility emulations:<\/b><BR>\&nbsp;<BR>/' \
-e 's/^<p><b>&minus;as</<p>\&nbsp;<BR><b>\&minus;as</' \
-e 's/<b>Scripting, dialog and/\&nbsp;<BR><b>Scripting, dialog and/' \
-e 's/^features:<\/b>/features:<\/b><BR>\&nbsp;<BR>/' \
-e 's/<b>Support for frontend/\&nbsp;<BR><b>Support for frontend/' \
-e 's/^listening at stdout:<\/b>/listening at stdout:<\/b><BR>\&nbsp;<BR>/' \
-e 's/xorriso -outdev \/dev\/sr2 \\ -blank fast \\ -pathspecs on/xorriso -outdev \/dev\/sr2 -blank fast -pathspecs on/' \
-e 's/\\ -add \\ \/sounds=\/home\/me\/sounds \\ \/pictures \\ -- \\ -rm_r \\/ -add \/sounds=\/home\/me\/sounds \/pictures -- -rm_r /' \
-e 's/\/sounds\/indecent \\ \&rsquo;\/pictures\/\*private\*\&rsquo; \\/\/sounds\/indecent \&rsquo;\/pictures\/*private*\&rsquo; /' \
-e 's/\/pictures\/confidential \\ -- \\ -add \\/\/pictures\/confidential -- -add/' \
-e 's/xorriso -dev \/dev\/sr2 \\ -rm_r \/sounds -- \\ -mv \\/xorriso -dev \/dev\/sr2 -rm_r \/sounds -- -mv /' \
-e 's/\/pictures\/confidential \\ \/pictures\/restricted \\ -- \\ -chmod/\/pictures\/confidential \/pictures\/restricted -- -chmod/' \
-e 's/go-rwx \/pictures\/restricted -- \\ -pathsspecs on \\ -add \\/go-rwx \/pictures\/restricted -- -pathsspecs on -add /' \
-e 's/\/sounds=\/home\/me\/prepared_for_dvd\/sounds_dummy /\/sounds=\/home\/me\/prepared_for_dvd\/sounds_dummy/' \
-e 's/\/movies=\/home\/me\/prepared_for_dvd\/movies \\ -- \\ -commit/\/movies=\/home\/me\/prepared_for_dvd\/movies -- -commit/' \
-e 's/xorriso -indev \/dev\/sr2 \\ -rm_r \/sounds -- \\/xorriso -indev \/dev\/sr2 -rm_r \/sounds -- /' \
-e 's/-outdev \/dev\/sr0 -blank fast \\ -commit -eject all/-outdev \/dev\/sr0 -blank fast -commit -eject all/' \
-e 's/See section FILES/See section <A HREF="#FILES">FILES<\/A>/' \
-e 's/See section EXAMPLES/See section <A HREF="#EXAMPLES">EXAMPLES<\/A>/' \
-e 's/<\/body>/<BR><HR><FONT SIZE=-1><CENTER>(HTML generated from '"$manpage"'.1 on '"$(date)"' by '$(basename "$0")' )<\/CENTER><\/FONT><\/body>/' \
<"$2" >"$htmlpage"
set +x
chmod u+rw,go+r,go-w "$htmlpage"
echo "Emerged file:"
ls -lL "$htmlpage"
else
export BROWSER='cp "%s" '"$raw_html"
man -H "$manpage"
"$0" -work_as_filter "$raw_html"
rm "$raw_html"
rm "$man_dir"/man1
fi

View File

@ -0,0 +1,9 @@
#!/bin/sh
# Create version timestamp xorriso/xorriso_timestamp.h
# to be executed within ./libisoburn-develop
timestamp="$(date -u '+%Y.%m.%d.%H%M%S')"
echo "Version timestamp : $timestamp"
echo '#define Xorriso_timestamP "'"$timestamp"'"' >xorriso/xorriso_timestamp.h

View File

@ -0,0 +1,245 @@
#!/bin/sh
# make_xorriso_standalone.sh
# Copyright 2008 - 2009 Thomas Schmitt, scdbackup@gmx.net, GPL
#
# Not intended for general use in production installations !
#
# This is a development tool which expects a special setup of directories.
# It is to be executed in a common parent of the directories
# nglibisofs-develop libburn-develop libisoburn-develop
#
# Creates a standalone tree for building xorriso
# from the contents of a unified libburnia development tree.
#
# The ./bootstrap script gets applied and a source tarball
# is made.
#
# From that tree can be build a binary xorriso/xorriso
# which at runtime depends only on libc and libpthread.
# Execute in $lone_dir :
#
# ./configure && make
#
current_dir=$(pwd)
lone_dir="$current_dir"/"xorriso-standalone"
xorriso_rev=0.4.1
# For unstable uploads:
xorriso_pl=""
# For stable releases:
## xorriso_pl=".pl00"
with_bootstrap_tarball=1
create_dir() {
if mkdir "$1"
then
dummy=dummy
else
echo "Failed to create : $1" >&2
exit 1
fi
}
goto_dir() {
if cd "$1"
then
dummy=dummy
else
echo "Failed to cd $1" >&2
exit 1
fi
}
copy_files() {
if cp "$@"
then
dummy=dummy
else
echo "Failed to : cp " "$@" >&2
exit 1
fi
}
if test -e "$lone_dir"
then
echo "Already existing : $lone_dir" >&2
exit 1
fi
# Top level directory
goto_dir "$current_dir"/libisoburn-develop
create_dir "$lone_dir"
copy_files \
AUTHORS \
CONTRIBUTORS \
COPYRIGHT \
COPYING \
INSTALL \
acinclude.m4 \
aclocal.m4 \
bootstrap \
compile \
config.guess \
config.status \
config.sub \
depcomp \
install-sh \
libtool \
ltmain.sh \
missing \
mkinstalldirs \
version.h.in \
\
"$lone_dir"
copy_files xorriso/configure_ac.txt "$lone_dir"/configure.ac
copy_files xorriso/xorriso_makefile_am.txt "$lone_dir"/Makefile.am
# copy_files xorriso/xorriso_pc_in.txt "$lone_dir"/xorriso.pc.in
copy_files xorriso/README "$lone_dir"/README
# echo "See end of xorriso/changelog.txt" >"$lone_dir"/TODO
# libisoburn
create_dir "$lone_dir"/libisoburn
copy_files \
libisoburn/*.[ch] \
"$lone_dir"/libisoburn
xorriso/convert_man_to_html.sh
create_dir "$lone_dir"/xorriso
copy_files \
xorriso/xorrisoburn.[ch] \
xorriso/xorriso.[ch1] \
xorriso/xorriso_private.h \
\
xorriso/xorriso_timestamp.h \
\
xorriso/changelog.txt \
xorriso/xorriso_eng.html \
xorriso/man_1_xorriso.html \
"$lone_dir"/xorriso
copy_files xorriso/xorriso_buildstamp_none.h \
"$lone_dir"/xorriso/xorriso_buildstamp.h
copy_files xorriso/xorriso_buildstamp_none.h \
"$lone_dir"/xorriso/xorriso_buildstamp_none.h
create_dir "$lone_dir"/test
copy_files \
test/compare_file.c \
"$lone_dir"/test/compare_file.c
# nglibisofs
create_dir "$lone_dir"/libisofs
create_dir "$lone_dir"/libisofs/filters
create_dir "$lone_dir"/doc
goto_dir "$current_dir"/nglibisofs-develop
copy_files libisofs/*.[ch] "$lone_dir"/libisofs
copy_files libisofs/filters/*.[ch] "$lone_dir"/libisofs/filters
copy_files doc/susp_aaip*.txt "$lone_dir"/doc
copy_files doc/zisofs_format.txt "$lone_dir"/doc
copy_files COPYRIGHT "$lone_dir"/libisofs
# To get a common version.h
cat version.h.in >> "$lone_dir"/version.h.in
# <<< obsoleted patchings
if test 1 = 0
then
# Change GNU macro name to POSIX name
sed -e 's/FNM_FILE_NAME/FNM_PATHNAME/g' \
<libisofs/tree.c >"$lone_dir"/libisofs/tree.c
# Filter out the semi-illegal TODO comments
( cd "$lone_dir"/libisofs && grep '^[[:space:]]*//' *.[ch] | less )
echo "Is it ok delete all shown //-lines ?"
read yesno
if test "$yesno" = "y" -o "$yesno" = "1"
then
for i in "$lone_dir"/libisofs/*.[ch]
do
# first copy attributes
cp "$i" "$lone_dir"/libisofs/tmpfile
# now filter away // lines
grep -v '^[[:space:]]*//' <"$i" >"$lone_dir"/libisofs/tmpfile && \
mv "$lone_dir"/libisofs/tmpfile "$i"
done
fi
echo "Remaining // lines:"
( cd "$lone_dir"/libisofs && grep '//' *.[ch] )
fi
# libburn
create_dir "$lone_dir"/libburn
goto_dir "$current_dir"/libburn-develop
copy_files libburn/*.[ch] "$lone_dir"/libburn
copy_files COPYRIGHT "$lone_dir"/libburn
# To get a common version.h
cat version.h.in >> "$lone_dir"/version.h.in
# tarball
if test "$with_bootstrap_tarball" = 1
then
tarball_dir="$current_dir"/xorriso-"$xorriso_rev"
mv "$lone_dir" "$tarball_dir"
goto_dir "$tarball_dir"
./bootstrap
# Remove unneeded temporary data from ./bootstrap
rm -r ./autom4te.cache
# Repair non-portable shell code output of ./bootstrap
(
cd "$compile_dir" || exit 1
sed -e 's/^for ac_header in$/test -z 1 \&\& for ac_header in dummy/' \
< ./configure > ./configure-repaired
if test "$?" = 0
then
echo "$0: Empty 'for ac_header in' found in configure." >&2
fi
mv ./configure-repaired ./configure
chmod a+rx,go-w,u+w ./configure
)
cd "$current_dir"
tar czf ./xorriso-"$xorriso_rev""$xorriso_pl".tar.gz $(basename "$tarball_dir")
ls -l $(pwd)/xorriso-"$xorriso_rev""$xorriso_pl".tar.gz
mv "$tarball_dir" "$lone_dir"
fi
echo "Done"
echo "HINT: Now build xorriso/xorriso by:"
echo " cd '$lone_dir' && ./configure && make"
echo

View File

@ -0,0 +1,196 @@
# ts A90315 : LIBBURNIA_PKGCONFDIR is defined OS specific in acinclude.m4
# was: pkgconfigdir=$(libdir)/pkgconfig
pkgconfigdir=$(LIBBURNIA_PKGCONFDIR)
libincludedir=$(includedir)/libisoburn
lib_LTLIBRARIES = libisoburn/libisoburn.la libxorriso/libxorriso.la
## ========================================================================= ##
# Build libraries
libisoburn_libisoburn_la_LDFLAGS = \
-version-info $(LT_CURRENT):$(LT_REVISION):$(LT_AGE)
libisoburn_libisoburn_la_SOURCES = \
libisoburn/burn_wrap.c \
libisoburn/data_source.c \
libisoburn/isoburn.c \
libisoburn/isoburn.h \
libisoburn/isofs_wrap.c \
libisoburn/libisoburn.h \
version.h
libisoburn_libisoburn_la_LIBADD = \
-lisofs \
-lburn
libxorriso_libxorriso_la_LDFLAGS = \
-version-info $(LT_CURRENT):$(LT_REVISION):$(LT_AGE)
libxorriso_libxorriso_la_SOURCES = \
xorriso/xorriso.h \
xorriso/xorriso_private.h \
xorriso/xorriso.c \
xorriso/xorrisoburn.h \
xorriso/xorrisoburn.c \
xorriso/xorriso_timestamp.h \
xorriso/xorriso_buildstamp.h \
version.h
libxorriso_libxorriso_la_LIBADD = \
-lisofs \
-lburn \
-lisoburn
libinclude_HEADERS = \
libisoburn/libisoburn.h \
xorriso/xorriso.h
## ========================================================================= ##
# This is the reference application of libisoburn. See man xorriso/xorriso.1
#
bin_PROGRAMS = \
xorriso/xorriso
# This looks quite ugly with make install: xorriso.c is compiled twice again
#
# Trying to create a build timestamp file
#
# BUILT_SOURCES = xorriso/xorriso_buildstamp.h
#
# phony targets get rebuilt every time
#
# .PHONY: xorriso/xorriso_buildstamp.h
# xorriso/xorriso_buildstamp.h:
# date -u '+#define Xorriso_build_timestamP "%Y.%m.%d.%H%M%S"' >xorriso/xorriso_buildstamp.h
# cat xorriso/xorriso_buildstamp.h
xorriso_xorriso_CPPFLAGS = -Ilibisoburn
xorriso_xorriso_CFLAGS = -DXorriso_with_maiN -DXorriso_without_subS \
$(READLINE_DEF) $(LIBACL_DEF) $(XATTR_DEF) \
$(EXTF_DEF) $(EXTF_SUID_DEF) $(ZLIB_DEF)
xorriso_xorriso_LDADD = libisoburn/libisoburn.la -lisofs -lburn \
libxorriso/libxorriso.la \
$(THREAD_LIBS) $(LIBBURN_ARCH_LIBS)
xorriso_xorriso_SOURCES = \
xorriso/xorriso.h \
xorriso/xorriso_private.h \
xorriso/xorriso.c \
xorriso/xorrisoburn.h \
xorriso/xorriso_timestamp.h \
xorriso/xorriso_buildstamp.h
# xorriso/xorrisoburn.c \
#
# Install symbolic links to the xorriso binary
#
install-exec-hook:
if test -e "$(DESTDIR)$(bindir)"/xorrisofs ; then rm "$(DESTDIR)$(bindir)"/xorrisofs ; else echo ; fi
ln -s xorriso "$(DESTDIR)$(bindir)"/xorrisofs
if test -e "$(DESTDIR)$(bindir)"/osirrox ; then rm "$(DESTDIR)$(bindir)"/osirrox ; else echo ; fi
ln -s xorriso "$(DESTDIR)$(bindir)"/osirrox
if test -e "$(DESTDIR)$(bindir)"/xorrecord ; then rm "$(DESTDIR)$(bindir)"/xorrecord ; else echo ; fi
ln -s xorriso "$(DESTDIR)$(bindir)"/xorrecord
# Alternative to the disabled .PHONY above.
# Trying to create a build timestamp file semi-manually: make buildstamped
#
buildstamp:
date -u '+#define Xorriso_build_timestamP "%Y.%m.%d.%H%M%S"' >xorriso/xorriso_buildstamp.h
cat xorriso/xorriso_buildstamp.h
# For now make buildstamped has to be performed explicitely.
buildstamped: buildstamp
make
## Build test applications
noinst_PROGRAMS = \
test/compare_file
# A program to compare two files in mirrored trees in mounted filesystems
# To compare tree /media/dvd and /original/dir :
# find /media/dvd -exec test/compare_file '{}' /media/dvd /original/dir ';'
#
test_compare_file_CPPFLAGS =
test_compare_file_CFLAGS =
test_compare_file_LDADD =
test_compare_file_SOURCES = test/compare_file.c
## ========================================================================= ##
## Build documentation (You need Doxygen for this to work)
webhost = http://libburn-api.pykix.org
webpath = /
docdir = $(DESTDIR)$(prefix)/share/doc/$(PACKAGE)-$(VERSION)
doc: doc/html
doc/html: doc/doxygen.conf
if [ -f ./doc/doc.lock ]; then \
$(RM) -r doc/html; \
doxygen doc/doxygen.conf; \
fi
doc-upload: doc/html
scp -r $</* $(webhost):$(webpath)
all: doc
install-data-local:
if [ -f ./doc/doc.lock ]; then \
$(mkinstalldirs) $(docdir)/html; \
$(INSTALL_DATA) doc/html/* $(docdir)/html; \
fi
uninstall-local:
rm -rf $(docdir)
## ========================================================================= ##
# Indent source files
indent_files = \
$(libisoburn_libisoburn_la_SOURCES)
indent: $(indent_files)
indent -bad -bap -nbbb -nbbo -nbc -bli0 -br -bls \
-cdw -ce -cli0 -ncs -nbfda -i8 -l79 -lc79 \
-lp -saf -sai -nprs -npsl -saw -sob -ss -ut \
-sbi0 -nsc -ts8 -npcs -ncdb -fca \
$^
.PHONY: indent
## ========================================================================= ##
# Extra things
nodist_pkgconfig_DATA = \
libisoburn-1.pc
man_MANS = xorriso/xorriso.1
EXTRA_DIST = \
libisoburn-1.pc.in \
version.h.in \
doc/comments \
doc/doxygen.conf.in \
README \
AUTHORS \
CONTRIBUTORS \
COPYRIGHT \
COPYING \
INSTALL \
xorriso/changelog.txt \
xorriso/xorriso_buildstamp_none.h \
xorriso/README \
$(man_MANS)

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,948 @@
/* Command line oriented batch and dialog tool which creates, loads,
manipulates and burns ISO 9660 filesystem images.
Copyright 2007-2009 Thomas Schmitt, <scdbackup@gmx.net>
Provided under GPL version 2.
This file contains the public option interface of xorriso.
*/
#ifndef Xorriso_includeD
#define Xorriso_includeD yes
/** Opaque handle of the xorriso runtime context */
struct XorrisO;
#define Xorriso_program_versioN "0.4.1"
/* --------------------- Fundamental Management ------------------- */
/* Get the version text (e.g. "0.4.1") of the program code.
@param flag unused yet, submit 0
@return readonly character string
*/
char *Xorriso__get_version_text(int flag);
/* Mandatory call:
Create a new xorriso object and tell it the program name to be used
with messages and for decision of special behavior.
@param xorriso returns the newly created XorrisO object
@param progname typically argv[0] of main(). Some leafnames of the progname
path have special meaning and trigger special behavior:
"osirrox" allows image-to-disk copying: -osirrox "on"
"xorrisofs" activates permanent mkisofs emulation
"genisofs" alias of "xorrisofs"
"mkisofs" alias of "xorrisofs"
"genisoimage" alias of "xorrisofs"
@param flag unused yet, submit 0
@return >0 success , <=0 failure, no object created
*/
int Xorriso_new(struct XorrisO ** xorriso, char *progname, int flag);
/* Interpret certain commands which shall get into effect before the
libraries get initialized:
-abort_on , -report_about , -return_with , -list_delimiter
Some commands get executed only if they are the only command in argv:
-prog_help , -help , -no_rc
Some get examined for the need to redirect stdout messages
-dev , -outdev , -indev , -as
@param xorriso The context object in which to perform the commands.
@param argc Number of arguments.
@param argv The arguments. argv[0] contains the program name.
argv[1] to argv[argc-1] contain commands and parameters.
@param idx Argument cursor. When this function is called, *idx must
be at least 1, argv[*idx] must be to a command.
*idx will iterate over commands and parameters until this
function aborts or until argc is reached.
@param flag bit0= do not interpret argv[1]
@return <0 error
0 end program
1 ok, go on
*/
int Xorriso_prescan_args(struct XorrisO *xorriso, int argc, char **argv,
int flag);
/* Mandatory call:
It has to be made before calling any function listed below this point.
Make global library initializations.
This must be done with the first xorriso object that gets created and
with the first xorriso object that gets created after Xorriso_destroy(,1).
@param xorriso The context object.
@param flag unused yet, submit 0
@return <=0 error , >0 success
*/
int Xorriso_startup_libraries(struct XorrisO *xorriso, int flag);
/* Read and interpret commands from eventual startup files as listed in
man xorriso.
@param xorriso The context object in which to perform the commands.
@param flag unused yet, submit 0
@return <=0 = error
1 = success
3 = end program run (e.g. because command -end was encountered)
*/
int Xorriso_read_rc(struct XorrisO *xorriso, int flag);
/* Check whether program arguments shall be backslash decoded and eventually
replace *argv by a new argument vector. The old one will not be freed
by this call. If it is dynamic memory then you need to keep a copy of
the pointer and free it yourself after this call.
@param xorriso The context object
@param argc Number of arguments.
@param argv The arguments. (*argv)[0] contains the program name.
(*argv)[1] to (*argv)[argc-1] contain commands and parameters
@param flag unused yet, submit 0
@return <= 0 error , > 0 success
*/
int Xorriso_program_arg_bsl(struct XorrisO *xorriso, int argc, char ***argv,
int flag);
/* Interpret argv as xorriso command options and their parameters.
(An alternative is to call functions of the options API directly and to
perform own error status evaluation. See below: Options API.)
After the first command and its parameters there may be more commands and
parameters. All parameters must be given in the same call as their command.
@param xorriso The context object in which to perform the commands.
@param argc Number of arguments.
@param argv The arguments. argv[0] contains the program name.
argv[1] to argv[argc-1] contain commands and parameters.
@param idx Argument cursor. When this function is called, *idx must
be at least 1, argv[*idx] must be a command.
*idx will iterate over commands and parameters until this
function aborts or until argc is reached.
@param flag bit0= recursion
bit1= these are the main() program start arguments
@return <=0 = error
1 = success
2 = problem event ignored
3 = end program run (e.g. because command -end was encountered)
*/
int Xorriso_interpreter(struct XorrisO *xorriso,
int argc, char **argv, int *idx, int flag);
/* Parse a command line into words and use them as argv for a call of
Xorriso_interpreter(). Put out some info lines about the outcome.
@param xorriso The context object in which to perform the commands.
@param line A text of one or more words according to man xorriso
paragraph "Command processing" up to and including
"Backslash Interpretation".
@param flag bit0 to bit15 are forwarded to Xorriso_interpreter()
bit16= no pageing of info lines
bit17= print === bar even if xorriso->found<0
@return see return of Xorriso_interpreter()
*/
int Xorriso_execute_option(struct XorrisO *xorriso, char *line, int flag);
/* Enter xorriso command line dialog mode, eventually using libreadline.
This call returns immediately if not option -dialog "on" was performed
before.
@param xorriso The context object in which to perform the commands.
@param flag unused yet, submit 0
@return <=0 error, 1= dialog mode ended normally ,
3= dialog mode ended normally,interpreter asks to end program
*/
int Xorriso_dialog(struct XorrisO *xorriso, int flag);
/* Inquire whether option -commit would make sense.
@param xorriso The context object to inquire.
@param flag unused yet, submit 0
@return 0= -commit would have nothing to do
1= a new image session would emerge at -commit
*/
int Xorriso_change_is_pending(struct XorrisO *xorriso, int flag);
/* Compute the exit value from the recorded maximum event severity.
@param xorriso The context object to inquire.
@param flag unused yet, submit 0
@return The computed exit value
*/
int Xorriso_make_return_value(struct XorrisO *xorriso, int flag);
/* Mandatory call:
Destroy xorriso object when it is no longer needed.
@param xorriso The context object to destroy. *xorriso will become NULL.
@param flag bit0= Perform global library shutdown.
Use only with last xorriso object to be destroyed.
@return <=0 error, >0 success
*/
int Xorriso_destroy(struct XorrisO **xorriso, int flag);
/* --------------------- Problem Status and Message API ------------------- */
/** Submit a problem message to the xorriso problem reporting and handling
system. This will eventually increase problem status rank, which may
at certain stages in the program be pardoned and reset to 0.
The pardon is governed by Xorriso_option_abort_on() and by the anger
of the affected program part. If no pardon has been given, then the problem
status reaches the caller of option functions.
Problem status should be inquired by Xorriso_eval_problem_status() and be
reset before next option execution by Xorriso_set_problem_status().
The problem status itself does not cause the failure of option functions.
But in case of failures for other reasons, a remnant overly severe problem
status can cause overly harsh program reactions.
@param xorriso The environment handle
@param error_code The unique error code of your message.
Submit 0 if you do not have reserved error codes within
the libburnia project.
@param msg_text Not more than 8196 characters of message text.
A final newline character gets appended automatically.
@param os_errno Eventual errno related to the message. Submit 0 if
the message is not related to a operating system error.
@param severity One of "ABORT", "FATAL", "SORRY", "WARNING", "HINT",
"NOTE", "UPDATE", "DEBUG". Defaults to "FATAL".
@param flag Bitfield for control purposes
bit0= use pager (as with result)
bit1= permission to suppress output
@return 1 if message was delivered, <=0 if failure
*/
int Xorriso_msgs_submit(struct XorrisO *xorriso,
int error_code, char msg_text[], int os_errno,
char severity[], int flag);
/** Alternative call interface of Xorriso_msgs_submit with void* instead
of struct XorrisO*
*/
int Xorriso_msgs_submit_void(void *xorriso,
int error_code, char msg_text[], int os_errno,
char severity[], int flag);
/** Evaluate an advise whether to abort or whether to go on with option
processing. This should be called after any option function was processed.
It updates the problem status by processing the library message queues
and then it uses this status and the submitted return value ot the
option function to evaluate the situation.
@param xorriso The environment handle
@param ret The return value of the previously called option function
@param flag bit0= do not issue own event messages
bit1= take xorriso->request_to_abort as reason for abort
@return Gives the advice:
2= pardon was given, go on
1= no problem, go on
0= function failed but xorriso would not abort, go on
<0= do abort
-1 = due to xorriso->problem_status
or due to ret<0
-2 = due to xorriso->request_to_abort
*/
int Xorriso_eval_problem_status(struct XorrisO *xorriso, int ret, int flag);
/** Set the current problem status of the xorriso handle.
@param xorriso The environment handle
@param severity A severity text. Empty text resets to "No Problem".
@param flag Unused yet. Submit 0.
@return <=0 failure (e.g. wrong severity text), 1 success.
*/
int Xorriso_set_problem_status(struct XorrisO *xorriso, char *severity,
int flag);
/* The next two functions are part of Xorriso_eval_problem_status().
You may use them to build an own advisor function or to drain the
library message queues more frequently.
*/
/** Obtain the current problem status of the xorriso handle.
@param xorriso The environment handle
@param severity The severity text matching the current problem status
@param flag Unused yet. Submit 0.
@return The severity rank number. 0= no problem occured.
*/
int Xorriso_get_problem_status(struct XorrisO *xorriso, char severity[80],
int flag);
/** Forward any pending messages from the library message queues to the
xorriso message system which puts out on info channel. This registers
the severity of the library events like the severity of a message submitted
via Xorriso_msgs_submit().
xorriso sets the message queues of the libraries to queuing "ALL".
So it is essential that they get drained regularly.
@param xorriso The environment handle
@param flag Unused yet. Submit 0.
@return 1 on success, <=0 if failure
*/
int Xorriso_process_msg_queues(struct XorrisO *xorriso, int flag);
/** Write a message for option -errfile_log.
@param xorriso The environment handle
@param error_code The unique error code of your message.
Submit 0 if you do not have reserved error codes within
the libburnia project.
@param msg_text Not more than 8196 characters of message text.
@param os_errno Eventual errno related to the message. Submit 0 if
the message is not related to a operating system error.
@param flag bit0-7= meaning of msg_text
( 0= ERRFILE path , for internal use mainly )
1= mark line text (only to be put out if enabled)
@return <=0 error , >0 success
*/
int Xorriso_process_errfile(struct XorrisO *xorriso,
int error_code, char msg_text[], int os_errno,
int flag);
/* The outlist stack allows to redirect the info and result messages from
their normal channels into a pair of string lists which can at some
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 */
/*
Before each call to an option function, there should happen:
Xorriso_set_problem_status() with empty severity text.
After each call to an option function, there should happen:
Xorriso_eval_problem_status()
One should follow its eventual advice to abort.
Options with a varying number of arguments get them passed like
Xorriso_interpreter(). E.g.:
int Xorriso_option_add(struct XorrisO *xorriso, int argc, char **argv,
int *idx, int flag);
They begin to read the arguments at position *idx and will see the list
end either at the next argv which contains the -list_delimiter text or
at argv[argc-1]. After the call, *idx will be the index of the first not
yet interpreted argv.
*/
/* Option -abort_on */
int Xorriso_option_abort_on(struct XorrisO *xorriso, char *severity, int flag);
/* Option -acl "on"|"off" */
int Xorriso_option_acl(struct XorrisO *xorriso, char *mode, int flag);
/* Option -add */
/* @param flag bit0=do not report the added item
bit1=do not reset pacifier, no final pacifier message
*/
int Xorriso_option_add(struct XorrisO *xorriso, int argc, char **argv,
int *idx, int flag);
/* Option -add_plainly "on"|"off" */
int Xorriso_option_add_plainly(struct XorrisO *xorriso, char *mode,
int flag);
/* Option -alter_date, alter_date_r */
/* @param flag bit0=recursive (-alter_date_r)
*/
int Xorriso_option_alter_date(struct XorrisO *xorriso,
char *time_type, char *timestring,
int argc, char **argv, int *idx, int flag);
/* Option -application_id */
int Xorriso_option_application_id(struct XorrisO *xorriso, char *name,
int flag);
/* Option -as */
/* @param flag bit0=do not report the added item
bit1=do not reset pacifier, no final pacifier message
*/
int Xorriso_option_as(struct XorrisO *xorriso, int argc, char **argv,
int *idx, int flag);
/* Option -assert_volid */
int Xorriso_option_assert_volid(struct XorrisO *xorriso, char *pattern,
char *severity, int flag);
/* Option -auto_charset "on"|"off" */
int Xorriso_option_auto_charset(struct XorrisO *xorriso, char *mode, int flag);
/* Option -backslash_codes */
int Xorriso_option_backslash_codes(struct XorrisO *xorriso, char *mode,
int flag);
/* Option -ban_stdio_write */
int Xorriso_option_ban_stdio_write(struct XorrisO *xorriso, int flag);
/* Option -blank and -format */
/* @param flag bit0= format rather than blank
@return <=0 error , 1 success, 2 revoked by -reassure
*/
int Xorriso_option_blank(struct XorrisO *xorriso, char *mode, int flag);
/* Option -boot_image */
int Xorriso_option_boot_image(struct XorrisO *xorriso, char *form,
char *treatment, int flag);
/* Option -cd alias -cdi */
int Xorriso_option_cdi(struct XorrisO *xorriso, char *iso_rr_path, int flag);
/* Option -cdx */
int Xorriso_option_cdx(struct XorrisO *xorriso, char *disk_path, int flag);
/* Option -charset */
/* @param flag bit0= set in_charset
bit1= set out_charset
*/
int Xorriso_option_charset(struct XorrisO *xorriso, char *name, int flag);
/* Options -check_md5 and -check_md5_r
@param flag bit0= issue summary message
bit1= do not reset pacifier, no final pacifier message
bit2= do not issue pacifier messages at all
bit3= recursive: -check_md5_r
*/
int Xorriso_option_check_md5(struct XorrisO *xorriso,
int argc, char **argv, int *idx, int flag);
/* Option -check_media */
int Xorriso_option_check_media(struct XorrisO *xorriso,
int argc, char **argv, int *idx, int flag);
/* 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)
*/
int Xorriso_option_chgrpi(struct XorrisO *xorriso, char *gid,
int argc, char **argv, int *idx, int flag);
/* Option -chmod alias -chmodi , -chmod_r alias chmod_ri */
/* @param flag bit0=recursive (-chmod_r)
*/
int Xorriso_option_chmodi(struct XorrisO *xorriso, char *mode,
int argc, char **argv, int *idx, int flag);
/* Option -chown alias -chowni , chown_r alias chown_ri */
/* @param flag bit0=recursive (-chown_r)
*/
int Xorriso_option_chowni(struct XorrisO *xorriso, char *uid,
int argc, char **argv, int *idx, int flag);
/* Option -close "on"|"off" */
int Xorriso_option_close(struct XorrisO *xorriso, char *mode, int flag);
/* Option -commit */
/* @param flag bit0= leave indrive and outdrive aquired as they were,
i.e. do not aquire outdrive as new in-out-drive
bit1= do not perform eventual -reassure
@return <=0 error , 1 success, 2 revoked by -reassure
*/
int Xorriso_option_commit(struct XorrisO *xorriso, int flag);
/* Option -commit_eject */
/* @return <=0 error , 1 success, 2 revoked by -reassure
*/
int Xorriso_option_commit_eject(struct XorrisO *xorriso, char *which, int flag);
/* Option -compare and -compare_r
@param flag bit0= issue summary message
bit1= do not reset pacifier, no final pacifier message
bit2= do not issue pacifier messages at all
bit3= recursive: -compare_r
*/
int Xorriso_option_compare(struct XorrisO *xorriso, char *disk_path,
char *iso_path, int flag);
/* Option -cpr alias -cpri */
int Xorriso_option_cpri( struct XorrisO *xorriso, int argc, char **argv,
int *idx, int flag);
/* Options -cpx , -cpax, -cp_rx , -cp_rax */
/* @param flag bit0= recursive (-cp_rx, -cp_rax)
bit1= full property restore (-cpax, -cp_rax)
*/
int Xorriso_option_cpx(struct XorrisO *xorriso, int argc, char **argv,
int *idx, int flag);
/* Option -cut_out */
int Xorriso_option_cut_out(struct XorrisO *xorriso, char *disk_path,
char *start, char *count, char *iso_rr_path, int flag);
/* Options -dev , -indev, -outdev */
/* @param flag bit0=use as indev , bit1= use as outdev
@return <=0 error , 1 success, 2 revoked by -reassure
*/
int Xorriso_option_dev(struct XorrisO *xorriso, char *adr, int flag);
/* Option -devices */
/* @return <=0 error , 1 success, 2 revoked by -reassure
*/
int Xorriso_option_devices(struct XorrisO *xorriso, int flag);
/* Option -dialog "on"|"off" */
int Xorriso_option_dialog(struct XorrisO *xorriso, char *mode, int flag);
/* Option -disk_dev_ino "on"|"off" */
int Xorriso_option_disk_dev_ino(struct XorrisO *xorriso, char *mode, int flag);
/* Option -disk_pattern "on"|"ls"|"off" */
int Xorriso_option_disk_pattern(struct XorrisO *xorriso, char *mode, int flag);
/* Option -drive_class */
int Xorriso_option_drive_class(struct XorrisO *xorriso,
char *d_class, char *pattern, int flag);
/* Option -dummy "on"|"off" */
int Xorriso_option_dummy(struct XorrisO *xorriso, char *mode, int flag);
/* Option -eject */
/* @param flag bit0=do not report toc of eventually remaining drives
*/
int Xorriso_option_eject(struct XorrisO *xorriso, char *which, int flag);
/* Options -end , and -rollback_end */
/* @param flag bit0= discard pending changes
@return <=0 error , 1 success, 2 revoked by -reassure
*/
int Xorriso_option_end(struct XorrisO *xorriso, int flag);
/* Option -errfile_log marked|plain path|-|"" */
int Xorriso_option_errfile_log(struct XorrisO *xorriso,
char *mode, char *path, int flag);
/* Option -error_behavior */
int Xorriso_option_error_behavior(struct XorrisO *xorriso,
char *occasion, char *behavior, int flag);
/* Option -external_filter */
int Xorriso_option_external_filter(struct XorrisO *xorriso,
int argc, char **argv, int *idx, int flag);
/* Options -extract , -extract_single */
/* @param flag bit0=do not report the restored item
bit1=do not reset pacifier, no final pacifier message
bit5= -extract_single: eventually do not insert directory tree
*/
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);
/* Option -find alias -findi, and -findx */
/* @param flag bit0= -findx rather than -findi
bit1= do not reset pacifier, no final pacifier message
do not reset find_compare_result
*/
int Xorriso_option_find(struct XorrisO *xorriso, int argc, char **argv,
int *idx, int flag);
/* Option -fs */
int Xorriso_option_fs(struct XorrisO *xorriso, char *size, int flag);
/* Option -getfacl alias -getfacli, -getfacl_r alias -getfacl_ri */
/* @param flag bit0=recursive -getfacl_r
*/
int Xorriso_option_getfacli(struct XorrisO *xorriso,
int argc, char **argv, int *idx, int flag);
/* Option -gid */
int Xorriso_option_gid(struct XorrisO *xorriso, char *gid, int flag);
/* Option -grow_blindly */
int Xorriso_option_grow_blindly(struct XorrisO *xorriso, char *msc2, int flag);
/* Option -hardlinks "on"|"off" */
int Xorriso_option_hardlinks(struct XorrisO *xorriso, char *mode, int flag);
/* Option -help and part of -prog_help */
int Xorriso_option_help(struct XorrisO *xorriso, int flag);
/* Option -history */
int Xorriso_option_history(struct XorrisO *xorriso, char *line, int flag);
/* Option -iso_rr_pattern "on"|"ls"|"off" */
int Xorriso_option_iso_rr_pattern(struct XorrisO *xorriso, char *mode,
int flag);
/* 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);
/* Option -load session|track|sbsector value */
/* @param flag bit0= with adr_mode sbsector: adr_value is possibly 16 too high
@return <=0 error , 1 success, 2 revoked by -reassure
*/
int Xorriso_option_load(struct XorrisO *xorriso, char *adr_mode,
char *adr_value, int flag);
/* Option -logfile */
int Xorriso_option_logfile(struct XorrisO *xorriso, char *channel,
char *fileadr, int flag);
/* Options -ls alias -lsi and -lsl alias -lsli
and -lsd alias -lsdi and -lsdl alias -lsdli
and -du alias -dui and -dus alias -dusi
@param flag bit0= long format (-lsl , -du)
bit1= do not expand patterns but use literally
bit2= du rather than ls
bit3= list directories as themselves (ls -d)
*/
int Xorriso_option_lsi(struct XorrisO *xorriso, int argc, char **argv,
int *idx, int flag);
/* Options -lsx, -lslx, -lsdx , -lsdlx , -dux , -dusx
@param flag bit0= long format (-lslx , -dux)
bit1= do not expand patterns but use literally
bit2= du rather than ls
bit3= list directories as themselves (ls -d)
*/
int Xorriso_option_lsx(struct XorrisO *xorriso, int argc, char **argv,
int *idx, int flag);
/* Option -map */
/* @param flag bit0=do not report the added item
bit1=do not reset pacifier, no final pacifier message
*/
int Xorriso_option_map(struct XorrisO *xorriso, char *disk_path,
char *iso_path, int flag);
/* Options -map_l , -compare_l , -update_l , -extract_l */
/* @param flag bit8-11= mode 0= -map_l
1= -compare_l
2= -update_l
3= -extract_l
*/
int Xorriso_option_map_l(struct XorrisO *xorriso, int argc, char **argv,
int *idx, int flag);
/* Option -mark */
int Xorriso_option_mark(struct XorrisO *xorriso, char *mark, int flag);
/* Option -md5 */
int Xorriso_option_md5(struct XorrisO *xorriso, char *mode, int flag);
/* Option -mkdir alias -mkdiri */
int Xorriso_option_mkdiri(struct XorrisO *xorriso, int argc, char **argv,
int *idx, int flag);
/* 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);
/* Option -no_rc */
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 , -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 */
/* @return <=0 error , 1 = success , 3 = request to end program run */
int Xorriso_option_options_from_file(struct XorrisO *xorriso, char *adr,
int flag);
/* Option -osirrox "on"|"off" */
int Xorriso_option_osirrox(struct XorrisO *xorriso, char *mode, int flag);
/* Option -overwrite "on"|"nondir"|"off" */
int Xorriso_option_overwrite(struct XorrisO *xorriso, char *mode, int flag);
/* Option -pacifier */
int Xorriso_option_pacifier(struct XorrisO *xorriso, char *style, int flag);
/* Option -padding */
int Xorriso_option_padding(struct XorrisO *xorriso, char *size, int flag);
/* Option -page */
int Xorriso_option_page(struct XorrisO *xorriso, int len, int width, int flag);
/* Option -paste_in */
int Xorriso_option_paste_in(struct XorrisO *xorriso, char *iso_rr_path,
char *disk_path, char *start, char *count, int flag);
/* 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 */
int Xorriso_option_pathspecs(struct XorrisO *xorriso, char *mode, int flag);
/* Option -pkt_output */
int Xorriso_option_pkt_output(struct XorrisO *xorriso, char *mode, int flag);
/* Option -print */
int Xorriso_option_print(struct XorrisO *xorriso, char *text, int flag);
/* Option -print_size
@param flag bit0= report in mkisofs compatible form on real stdout
*/
int Xorriso_option_print_size(struct XorrisO *xorriso, int flag);
/* Option -prog */
int Xorriso_option_prog(struct XorrisO *xorriso, char *name, int flag);
/* Option -prog_help */
int Xorriso_option_prog_help(struct XorrisO *xorriso, char *name, int flag);
/* Option -publisher */
int Xorriso_option_publisher(struct XorrisO *xorriso, char *name, int flag);
/* Option -pwd alias -pwdi */
int Xorriso_option_pwdi(struct XorrisO *xorriso, int flag);
/* Option -pwdx */
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);
/* Option -return_with */
int Xorriso_option_return_with(struct XorrisO *xorriso, char *severity,
int exit_value, int flag);
/* Option -revoke_exclusions */
int Xorriso_option_revoke_exclusions(struct XorrisO *xorriso, int flag);
/* Options -rm alias -rmi , -rm_r alias -rm_ri , -rmdir alias -rmdiri */
/* @param flag bit0=recursive , bit2= remove empty directory: rmdir */
int Xorriso_option_rmi(struct XorrisO *xorriso, int argc, char **argv,
int *idx, int flag);
/* Option -rollback */
/* @param flag bit0= do not -reassure
@return <=0 error , 1 success, 2 revoked by -reassure
*/
int Xorriso_option_rollback(struct XorrisO *xorriso, int flag);
/* Option -rom_toc_scan */
int Xorriso_option_rom_toc_scan(struct XorrisO *xorriso, char *mode,
int flag);
/* Option -session_log */
int Xorriso_option_session_log(struct XorrisO *xorriso, char *path, int flag);
/* Option -setfacl_list alias -setfacl_listi */
int Xorriso_option_setfacl_listi(struct XorrisO *xorriso, char *disk_path,
int flag);
/* Option -setfacl alias -setfacli , -setfacl_r alias -setfacl_ri */
/* @param flag bit0=recursive -setfacl_r
*/
int Xorriso_option_setfacli(struct XorrisO *xorriso, char *acl_text,
int argc, char **argv, int *idx, int flag);
/* Options -setfattr alias -setfattri, -setfattr_r alias -setfattr_ri */
/* @param flag bit0=recursive -setfattr_r
*/
int Xorriso_option_setfattri(struct XorrisO *xorriso, char *name, char *value,
int argc, char **argv, int *idx, int flag);
/* Option -setfattr_list alias -setfattr_listi */
int Xorriso_option_setfattr_listi(struct XorrisO *xorriso, char *path,
int flag);
/* Options -set_filter , -set_filter_r */
/* @param flag bit0=recursive -set_filter_r
*/
int Xorriso_option_set_filter(struct XorrisO *xorriso, char *name,
int argc, char **argv, int *idx, int flag);
/* Option -speed */
int Xorriso_option_speed(struct XorrisO *xorriso, char *speed, int flag);
/* Option -split_size */
int Xorriso_option_split_size(struct XorrisO *xorriso, char *s, int flag);
/* Option -status */
int Xorriso_option_status(struct XorrisO *xorriso, char *mode, int flag);
/* Option -status_history_max */
int Xorriso_option_status_history_max(struct XorrisO *xorriso, int num1,
int flag);
/* Option -stream_recording */
int Xorriso_option_stream_recording(struct XorrisO *xorriso, char *mode,
int flag);
/* Option -tell_media_space */
int Xorriso_option_tell_media_space(struct XorrisO *xorriso, int flag);
/* Option -temp_mem_limit */
int Xorriso_option_temp_mem_limit(struct XorrisO *xorriso, char *size,
int flag);
/* Option -toc */
int Xorriso_option_toc(struct XorrisO *xorriso, int flag);
/* Option -uid */
int Xorriso_option_uid(struct XorrisO *xorriso, char *uid, int flag);
/* Option -unregister_filter */
int Xorriso_option_unregister_filter(struct XorrisO *xorriso, char *name,
int flag);
/* Options -update and -update_r
@param flag bit0= issue summary message
bit1= do not reset pacifier, no final pacifier message
bit2= do not issue pacifier messages at all
bit3= recursive: -update_r
*/
int Xorriso_option_update(struct XorrisO *xorriso, char *disk_path,
char *iso_path, int flag);
/* Option -use_readline */
int Xorriso_option_use_readline(struct XorrisO *xorriso, char *mode, int flag);
/* Option -version */
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);
/* Option -zisofs */
int Xorriso_option_zisofs(struct XorrisO *xorriso, char *mode, int flag);
#endif /* Xorriso_includeD */

View File

@ -0,0 +1,3 @@
#ifndef Xorriso_build_timestamP
#define Xorriso_build_timestamP "-none-given-"
#endif

View File

@ -0,0 +1,3 @@
#ifndef Xorriso_build_timestamP
#define Xorriso_build_timestamP "-none-given-"
#endif

View File

@ -0,0 +1,642 @@
<HTML>
<HEAD>
<META NAME="description" CONTENT="xorriso, creates, loads, manipulates and writes ISO 9660 filesystem images with Rock Ridge extensions">
<META NAME="keywords" CONTENT="xorriso, libburn, libburnia, burn, CD, DVD, ISO, ISO 9660, RockRidge, Rock Ridge, Linux, 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>
<BODY BGCOLOR="#F5DEB3" TEXT=#000000 LINK=#0000A0 VLINK=#800000>
<FONT SIZE=+1>
<CENTER>
<P><H2> Homepage of </H2>
<H1> xorriso </H1>
<H2>ISO 9660 Rock Ridge Filesystem Manipulator for Linux and FreeBSD</H2>
</CENTER>
<P>
<H2>Purpose:</H2>
xorriso copies file objects from POSIX compliant filesystems
into Rock Ridge enhanced ISO 9660 filesystems and allows
session-wise manipulation of such filesystems. It can load the management
information of existing ISO images and it writes the session results to
optical media or to filesystem objects.
<BR>
Vice versa xorriso is able to restore file objects from ISO 9660 filesystems.
</P>
<P>
<HR>
<A HREF="#download">Direct hop to download links -></A>
<P>
<H2>Hardware requirements:</H2>
A CD/DVD/BD recorder suitable for
<A HREF="http://libburnia-project.org">http://libburnia-project.org</A> <BR>
(SCSI , ATA , USB , or SATA writers compliant to standard MMC-3 for CD
and to MMC-5 for DVD or BD).
<BR>
</P>
<P>
<H2>Software requirements :</H2>
<DL>
<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>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 rather not with CD, DVD-R, DVD+R, BD-R.
</DD>
</DL>
<H3>Optional supporting software:</H2>
<DL>
<DT>libreadline and libreadline-dev</DT>
<DD>eventually make dialog more convenient.</DD>
<DT>libacl and libacl-devel</DT>
<DD>eventually allow on Linux to get and set ACLs.</DD>
<DT>zlib and zlib-devel</DT>
<DD>eventually allow zisofs and gzip compression.</DD>
</DL>
</P>
<P>
This program has been tested on Linux, FreeBSD, and Solaris systems.<BR>
For ports to other usable systems <A HREF="#contact">contact us</A>.
</P>
<HR>
<P>
<H2>Special features:</H2>
<UL>
<LI>
ISO 9660 formatter and burner for CD, DVD, BD are fixely integrated.
</LI>
<LI>
Operates on an existing ISO image or creates a new one.
</LI>
<LI>
Copies files from filesystem into the ISO image and vice versa.
</LI>
<LI>
Changes file properties, renames or deletes file objects in the ISO image.
</LI>
<LI>
Updates ISO subtrees incrementally to match given disk subtrees.
</LI>
<LI>
Can record and restore hard link relations, ACL, and xattr.
</LI>
<LI>
File content may get zisofs or gzip compressed or filtered by external
processes.
</LI>
<LI>
Writes result as completely new image or as add-on session
to optical media or filesystem objects.
</LI>
<LI>
Can activate ISOLINUX boot images by El Torito boot record.
</LI>
<LI>
Can perform multi-session tasks as emulation of mkisofs and cdrecord.
</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-R, BD-RE.
</LI>
<LI>
Reads its instructions from command line arguments, dialog, and batch files.
</LI>
<LI>
Provides navigation commands for interactive ISO image manipulation.
</LI>
</UL>
</P>
<P>
<H2>Command Examples:</H2>
<DL>
<DT>Get an overview of drives and their addresses</DT>
<DD>#<KBD>&nbsp;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
as listed by option -devices.</DT>
<DT>&nbsp;</DT>
<DT>Options are either performed as program arguments or as dialog input.
Some options have a parameter list of variable length. This list has to
be terminated by word '--' or by the end of the input line. Option -add
may accept pathspecs of form target=source as known from program mkisofs.</DT>
<HR>
<DT>Get info about a particular drive and loaded media:</DT>
<DD>$<KBD>&nbsp;xorriso -indev /dev/sr0 -du / -- -toc 2>&amp;1 | less</KBD></DD>
<DT>Make re-usable media writable again, delete any ISO 9660 image,
eventually prepare yet unused BD-RE:</DT>
<DD>$<KBD>&nbsp;xorriso -outdev /dev/sr0 -blank as_needed -eject all</KBD></DD>
<DT>
<HR>
</DT>
<DT>Write some directories into a new or existing ISO 9660 image:</DT>
<DD>$<KBD>&nbsp;xorriso -dev /dev/sr0 -add /home/me/sounds /home/me/pictures
</KBD></DD>
<DT>Have a look at the result:</DT>
<DD>$<KBD>&nbsp;xorriso -indev /dev/sr0 -du / -- -toc 2>&amp;1 | less</KBD></DD>
<DT>
<HR>
</DT>
<DT>Create new ISO-9660 filesystem image, compose content,
adjust permissions to make it publicly read-only,
write it to media and immediately eject media without
previously reloading the written image.
</DT>
<DD>$<KBD>&nbsp;cd /home/me</KBD></DD>
<DD>$<KBD>&nbsp;xorriso -outdev /dev/sr0 -blank as_needed \</KBD></DD>
<DD><KBD>&nbsp;&nbsp;-map /home/me/sounds /sounds \</KBD></DD>
<DD><KBD>&nbsp;&nbsp;-map /home/me/pictures /pictures \</KBD></DD>
<DD><KBD>&nbsp;&nbsp;-rm_r /sounds/indecent '/pictures/*private*' -- \</KBD></DD>
<DD><KBD>&nbsp;&nbsp;-cd / \</KBD></DD>
<DD><KBD>&nbsp;&nbsp;-add pictures/private/horses* -- \</KBD></DD>
<DD><KBD>&nbsp;&nbsp;-chmod_r a+r,a-w / -- \</KBD></DD>
<DD><KBD>&nbsp;&nbsp;-find / -type d -exec chmod a+x -- \</KBD></DD>
<DD><KBD>&nbsp;&nbsp;-volid SOUNDS_PICS_2008_01_16 \</KBD></DD>
<DD><KBD>&nbsp;&nbsp;-commit_eject all</KBD></DD>
<DT>
<HR>
</DT>
<DT>Load the previous session from media,
remove (i.e. hide) directory /sounds,
rename /pictures/private/horses,
add new directory trees /sounds and /movies,
disallow any access for group and others.
Finally write as additional session to media and eject:</DT>
<DD>$<KBD>&nbsp;xorriso -dev /dev/sr0 \</KBD></DD>
<DD><KBD>&nbsp;&nbsp;-rm_r /sounds -- \</KBD></DD>
<DD><KBD>&nbsp;&nbsp;-mv /pictures/private/horses /horse_show -- \</KBD></DD>
<DD><KBD>&nbsp;&nbsp;-map /home/me/prepared_for_dvd/sounds_dummy /sounds \</KBD></DD>
<DD><KBD>&nbsp;&nbsp;-map /home/me/prepared_for_dvd/movies /movies \</KBD></DD>
<DD><KBD>&nbsp;&nbsp;-chmod_r go-rwx / -- \</KBD></DD>
<DD><KBD>&nbsp;&nbsp;-volid SOUNDS_PICS_2008_01_17 \</KBD></DD>
<DD><KBD>&nbsp;&nbsp;-commit_eject all</KBD></DD>
<DT>
<HR>
</DT>
<DT>Merge the various sessions from old readable media into a single session
on new writeable media,
cleaning out all invalidated files and session overhead.
Touch / in order to mark the image as worth to be written.
<BR>
Important: -indev and -outdev have to be different drives.
</DT>
<DD>$<KBD>&nbsp;xorriso -indev /dev/dvd \</KBD></DD>
<DD><KBD>&nbsp;&nbsp;-alter_date a +0 / -- \</KBD></DD>
<DD><KBD>&nbsp;&nbsp;-outdev /dev/sr0 -blank fast \</KBD></DD>
<DD><KBD>&nbsp;&nbsp;-commit_eject all</KBD></DD>
<DT>
<HR>
</DT>
<DT>Dialog mode accepts one or more options per line. An option and all its
arguments have to be given in one single line. Backslash may be used to mark
a line as incomplete so it gets continued by the next input line.
<BR>
Command -end stops the program run. It will write eventually pending changes
to media, if that has not already been done by a previous -commit.</DT>
<DD>$<KBD>&nbsp;xorriso -dialog on</KBD></DD>
<DD><KBD>enter option and arguments :</KBD></DD>
<DD><KBD><B>-dev /dev/sr0</B></KBD></DD>
<DD><KBD>enter option and arguments :</KBD></DD>
<DD><KBD><B>-map /home/me/prepared_for_dvd/sounds_dummy /sounds</B></KBD></DD>
<DD><KBD>enter option and arguments :</KBD></DD>
<DD><KBD><B>-map /home/me/prepared_for_dvd/movies \</B></KBD></DD>
<DD><KBD>Trailing backslash : Enter rest of line (or @@@ to clear it) :
</KBD></DD>
<DD><KBD><B> /movies</B></KBD></DD>
<DD>Available navigation commands: -cd, -ls, -du, -find</DD>
<DD><KBD>enter option and arguments :</KBD></DD>
<DD><KBD><B>-commit</B></KBD></DD>
<DD>... perform further commands and finally do:</DD>
<DD><KBD>enter option and arguments :</KBD></DD>
<DD><KBD><B>-end</B></KBD></DD>
<DT>
<HR>
</DT>
<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>
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>&nbsp;xorriso -acl on -xattr on -disk_dev_ino on \</KBD></DD>
<DD><KBD>&nbsp;&nbsp; -assert_volid 'PROJECTS_MAIL_*' FATAL \</KBD></DD>
<DD><KBD>&nbsp;&nbsp; -dev /dev/sr0 \</KBD></DD>
<DD><KBD>&nbsp;&nbsp; -volid PROJECTS_MAIL_"$(date '+%Y_%m_%d_%H%M%S')" \</KBD></DD>
<DD><KBD>&nbsp;&nbsp; -not_leaf '*.o' -not_leaf '*.swp' \</KBD></DD>
<DD><KBD>&nbsp;&nbsp; -update_r /home/thomas/open_source_projects /open_source_projects \</KBD></DD>
<DD><KBD>&nbsp;&nbsp; -update_r /home/thomas/personal_mail /personal_mail \</KBD></DD>
<DD><KBD>&nbsp;&nbsp; -commit -toc -eject all</KBD></DD>
<DT>
To apply zisofs compression to those data files which get newly copied from
the local filesystem, perform immediately before -commit :
<DD>
<KBD>&nbsp;&nbsp; -find / -type f -pending_data -exec set_filter --zisofs -- \</KBD></DD>
</DD>
</DT>
<DT>
<HR>
</DT>
<DT>
Operating systems usually mount the most recent session on media.
xorriso can issue the appropriate mount commands for older sessions.
First get an overview of the sessions on the media:
</DT>
<DD>$<KBD>&nbsp;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>
&nbsp;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>&nbsp;xorriso -outdev /dev/sr0 -blank as_needed \</KBD></DD>
<DD><KBD>&nbsp;&nbsp; -map /home/me/ISOLINUX_prepared_tree / \</KBD></DD>
<DD><KBD>&nbsp;&nbsp; -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>&nbsp;xorriso -dev /tmp/regular_file ...other.options...</DD>
<DT>
A default setting for safety reasons requires that files below /dev/
need prefix &quot;stdio:&quot; 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>&nbsp;xorriso -dev stdio:/dev/sdb ...other.options...</DD>
<DT>Other file types are suitable only for writing but not for reading:</DT>
<DD>$<KBD>&nbsp;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.
Examples for consumers are cdrecord or growisofs on operating systems
where xorriso cannot operate the burner drive directly,
or a ssh pipe to another system which has the desired drive
and a suitable burn program.</DT>
<DD>$<KBD>&nbsp;xorriso -outdev - ...other.options... | consumer</KBD></DD>
<DT>
<HR>
</DT>
<DT>
Let xorriso serve underneath growisofs via its alias name "xorrisofs"
which enables mkisofs emulation:
</DT>
<DD>$<KBD>&nbsp;export MKISOFS="xorrisofs"</KBD></DD>
<DD>$<KBD>&nbsp;growisofs -Z /dev/dvd /some/files</KBD></DD>
<DD>$<KBD>&nbsp;growisofs -M /dev/dvd /more/files</KBD></DD>
<DT>
One may switch from mkisofs emulation to xorriso's own command mode:
</DT>
<DD>$<KBD>&nbsp;growisofs -M /dev/dvd -- outdev - -update_r /my/files /files
</KBD></DD>
<DT>
<HR>
</DT>
<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>&nbsp;xorriso -acl on -xattr on \</KBD></DD>
<DD><KBD>&nbsp;&nbsp; -indev /dev/sr0 \</KBD></DD>
<DD><KBD>&nbsp;&nbsp; -osirrox on \</KBD></DD>
<DD><KBD>&nbsp;&nbsp; -cpx '/pictures/private/horses*/*buttercup*' \</KBD></DD>
<DD><KBD>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /home/her/buttercup_dir -- \</KBD>
<DD><KBD>&nbsp;&nbsp; -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>
<DT>Get overview of the options:</DT>
<DD>$<KBD>&nbsp;<A HREF="xorriso_help">xorriso -help</A></KBD></DD>
<DT>Read the detailed manual page:</DT>
<DD>$<KBD>&nbsp;<A HREF="man_1_xorriso.html">man xorriso</A></KBD></DD>
</DL>
</P>
<HR>
<A NAME="download"></A>
<P>
<DL>
<DT><H3>Download as source code (see README):</H3></DT>
<DD><A HREF="xorriso-0.4.0.pl01.tar.gz">xorriso-0.4.0.pl01.tar.gz</A>
(1270 KB).
</DD>
<DD>(Released 20 Jul 2009)</DD>
</DL>
</DD>
</DL>
<DL><DT>Documentation:</DT>
<DD><A HREF="README_xorriso">README</A> about installation and drive setup</DD>
<DD><A HREF="xorriso_help">xorriso -help</A> gives an overview of options</DD>
<DD><A HREF="man_1_xorriso.html">man xorriso</A> is the manual page</DD>
</DL>
<A NAME="contact"></A>
<DL><DT>Contact:</DT>
<DD>Thomas Schmitt, <A HREF="mailto:scdbackup@gmx.net">scdbackup@gmx.net</A></DD>
<DD>libburn development mailing list,
<A HREF="mailto:libburn-hackers@pykix.org">libburn-hackers@pykix.org</A></DD>
</DL>
<DL><DT>License:</DT>
<DD><A HREF="COPYING_xorriso">GPL version 2</A>,
an <A HREF="http://www.opensource.org/">Open Source</A> approved license</DD>
<DD>&nbsp;</DD>
</DL>
</P>
<HR>
<P>
Bug fixes towards xorriso-0.3.8.pl00:
<UL>
<LI>SIGSEGV by dereferencing NULL with option -status and no search string</LI>
<LI>-load volid did not perform pattern search</LI>
<!--
<LI>- none -</LI>
-->
</UL>
</P>
<P>
Bug fix towards xorriso-0.4.0.pl00:
<UL>
<LI>xorriso -as mkisofs did not understand the -C option of growisofs any more
</LI>
</UL>
</P>
<P>
Enhancements towards previous stable version xorriso-0.3.8.pl00:
<UL>
<LI>New option -hardlinks for recording and restoring of hard link relations
</LI>
<LI>New option -for_backup as shortcut for -acl -xattr -hardlinks
</LI>
<LI>Improved read performance with -update_r
</LI>
<LI>Improved read performance with -extract by -osirrox sort_lba
</LI>
<LI>Operators with option -find : -not, -or, -and, (, ), -if, -then, -else</LI>
<LI>New -find tests -wholename, -prune, -sort_lba</LI>
<!--
<LI>- none -</LI>
-->
</UL>
</P>
<HR>
<P>
<H3>
Library copies included in xorriso tarballs:
</H3>
<DL>
<DT>libburn-0.6.7</DT>
<DD>reads and writes data from and to CD, DVD, BD.</DD>
<DD>(founded by Derek Foreman and Ben Jansens,
developed and maintained since August 2006 by
Thomas Schmitt from team of libburnia-project.org)</DD>
<DT>libisofs-0.6.21</DT>
<DD>operates on ISO 9660 filesystem images.</DD>
<DD>(By Vreixo Formoso, Mario Danic and Thomas Schmitt
from team of libburnia-project.org)</DD>
<DT>libisoburn-0.4.0</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>
<DD>&nbsp;</DD>
<DT>The source code of this software is independent of
cdrecord and mkisofs.</DT>
</DL>
</P>
<HR>
<P>
<DL>
<DT><H3>Development snapshot, version 0.4.1 :</H3></DT>
<DD>Bug fixes towards xorriso-0.4.0.pl00:
<UL>
<LI>xorriso -as mkisofs did not understand the -C option of growisofs any more
</LI>
<!--
<LI>- none yet -</LI>
-->
</UL>
</DD>
<DD>Enhancements towards stable version 0.4.0.pl01:
<UL>
<LI>Options -lsl and -lsdl now display correct link counts if -hardlinks is on
</LI>
<LI>New option -md5, new -as mkisofs option --md5</LI>
<LI>New options -check_md5, -check_md5_r</LI>
<LI>New find actions check_md5 get_md5, get_any_xattr</LI>
<LI>New find tests -has_md5, -has_any_xattr</LI>
<!--
<LI>- none yet -</LI>
-->
</UL>
</DD>
<DD>&nbsp;</DD>
<DD><A HREF="README_xorriso_devel">README 0.4.1</A>
<DD><A HREF="xorriso_help_devel">xorriso_0.4.1 -help</A></DD>
<DD><A HREF="man_1_xorriso_devel.html">man xorriso (as of 0.4.1)</A></DD>
<DD>&nbsp;</DD>
<DT>If you want to distribute development versions of xorriso, then use
this tarball which produces static linking between xorriso and the
libburnia libraries.
</DT>
<DD>Source (./bootstrap is already applied, build tested,
installation see README)
</DD>
<DD>
<A HREF="xorriso-0.4.1.tar.gz">xorriso-0.4.1.tar.gz</A>
(1280 KB).
</DD>
<DT>A dynamically linked development version of xorriso can be obtained
from repositories of
<A HREF="http://libburnia-project.org"> libburnia-project.org</A>.
xorriso is part of libisoburn/trunk and will get built by its "make".
</DT>
<DT>Be warned that the libraries in SVN and bzr are development versions with
possibly unstable API/ABI enhancements. Do not distribute development
versions for dynamic linking. Only release versions are safe for that.
</DT>
<DD>Download: <KBD><B>svn co http://svn.libburnia-project.org/libburn/trunk libburn</B>
</KBD></DD>
<DD>Install: <KBD><B>cd libburn ; ./bootstrap ; ./configure --prefix /usr ; make ; make install</B>
</KBD></DD>
<DD>Download:
<KBD><B>bzr branch lp:~libburnia-team/libisofs/scdbackup</B></KBD>
</DD>
<DD>Install: <KBD><B>cd libisofs ; ./bootstrap ; ./configure --prefix /usr ; make ; make install</B>
</KBD></DD>
<DD>Download: <KBD><B>svn co http://svn.libburnia-project.org/libisoburn/trunk libisoburn</B>
</KBD></DD>
<DD>Install: <KBD><B>cd libisoburn ; ./bootstrap ; ./configure --prefix /usr ; make ; make install</B>
</KBD></DD>
<DT>Build of SVN versions needs <A HREF="http://sources.redhat.com/autobook/">
autotools</A> of at least version 1.7 installed.
But after the run of <KBD>./bootstrap</KBD>, only
vanilla tools like make and gcc are needed.
</DT>
<DD>&nbsp;</DD>
</DL>
</P>
<HR>
<P>
Many thanks to Derek Foreman and Ben Jansens for starting libburn.
<BR>
Very special thanks to Andy Polyakov whose
<A HREF="http://fy.chalmers.se/~appro/linux/DVD+RW/tools">dvd+rw-tools</A>
provide the libburnia project with invaluable examples on how to deal
with DVD media and how to emulate multi-session on overwriteable media.
</P>
<HR>
<CENTER><FONT SIZE=+0>
<!-- <A NAME="bottom" HREF="main_ger.html#bottom">deutsch (german)</A>
<BR><BR>
-->
<BR><BR>
<FONT SIZE=+0>Enjoying free Open Source hosting by <A HREF="http://www.webframe.org">www.webframe.org</A><BR>
<A HREF="http://www.webframe.org">
<IMG SRC="msfree.gif" ALT="100 % Microsoft free" BORDER=0></A><BR>
and by <A HREF="http://sourceforge.net">sourceforge.net</A><BR>
<A href="http://sourceforge.net">
<IMG src="sflogo-88-1.png" BORDER="0" ALT="SourceForge Logo"></A>
<!-- on sourceforge use : <IMG src="http://sourceforge.net/sflogo.php?group_id=16010" width="88" height="31" border="0" alt="SourceForge Logo"></A> -->
<P>
Enjoying a FreeBSD shell account with the opportunity to
build, install and test xorriso at<BR>
<A HREF="http://www.en.free-shells.com.ar">free-shells.com.ar</A>
</P>
</FONT></CENTER>
<HR>
<DL>
<DT>Links to my other published software projects :</DT>
<DD><A HREF=http://scdbackup.webframe.org/cdrskin_eng.html>
cdrskin, a cdrecord emulator</A></DD>
<DD><A HREF=http://scdbackup.webframe.org/main_eng.html>
scdbackup, multi volume CD backup</A></DD>
<DL><DD><A HREF=http://scdbackup.sourceforge.net/main_eng.html>
(a second source of above)</A></DD></DL>
<DD><A HREF=http://stic.sourceforge.net>Some Tools for Image Collectors</A></DD>
<DD><A HREF=http://scdbackup.webframe.org/pppoem>
pppoem, a DSL throughput monitor (mainly for Linux kernel 2.4)</A></DD>
</DL>
<BR><BR>
Legal statement: This website does not serve any commercial purpose.<BR>
<BR><BR>
</FONT>
</BODY>
</HTML>

View File

@ -0,0 +1,252 @@
# ts A90315 : LIBBURNIA_PKGCONFDIR is defined OS specific in acinclude.m4
# was: pkgconfigdir=$(libdir)/pkgconfig
pkgconfigdir=$(LIBBURNIA_PKGCONFDIR)
libincludedir=
lib_LTLIBRARIES =
## ========================================================================= ##
libinclude_HEADERS =
## ========================================================================= ##
bin_PROGRAMS = \
xorriso/xorriso
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 \
$(READLINE_DEF) $(LIBACL_DEF) $(XATTR_DEF) \
$(EXTF_DEF) $(EXTF_SUID_DEF) $(ZLIB_DEF)
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
# 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_SOURCES = \
\
xorriso/xorriso.h \
xorriso/xorriso_private.h \
xorriso/xorriso.c \
xorriso/xorrisoburn.h \
xorriso/xorrisoburn.c \
xorriso/xorriso_timestamp.h \
xorriso/xorriso_buildstamp.h \
\
libisoburn/libisoburn.h \
libisoburn/isoburn.h \
libisoburn/isoburn.c \
libisoburn/isofs_wrap.c \
libisoburn/burn_wrap.c \
libisoburn/data_source.c \
\
libisofs/libisofs.h \
libisofs/builder.h \
libisofs/builder.c \
libisofs/node.h \
libisofs/node.c \
libisofs/tree.h \
libisofs/tree.c \
libisofs/image.h \
libisofs/image.c \
libisofs/iso1999.h \
libisofs/iso1999.c \
libisofs/fsource.h \
libisofs/fsource.c \
libisofs/fs_local.c \
libisofs/fs_image.c \
libisofs/messages.h \
libisofs/messages.c \
libisofs/libiso_msgs.h \
libisofs/libiso_msgs.c \
libisofs/stream.h \
libisofs/stream.c \
libisofs/util.h \
libisofs/util.c \
libisofs/util_rbtree.c \
libisofs/util_htable.c \
libisofs/filesrc.h \
libisofs/filesrc.c \
libisofs/ecma119.h \
libisofs/ecma119.c \
libisofs/ecma119_tree.h \
libisofs/ecma119_tree.c \
libisofs/writer.h \
libisofs/buffer.h \
libisofs/buffer.c \
libisofs/rockridge.h \
libisofs/rockridge.c \
libisofs/rockridge_read.c \
libisofs/joliet.h \
libisofs/joliet.c \
libisofs/eltorito.h \
libisofs/eltorito.c \
libisofs/data_source.c \
libisofs/find.c \
libisofs/filter.h \
libisofs/filter.c \
libisofs/filters/external.c \
libisofs/filters/zisofs.c \
libisofs/filters/gzip.c \
libisofs/system_area.h \
libisofs/system_area.c \
libisofs/make_isohybrid_mbr.c \
libisofs/aaip_0_2.h \
libisofs/aaip_0_2.c \
libisofs/md5.h \
libisofs/md5.c \
\
libburn/async.c \
libburn/async.h \
libburn/back_hacks.h \
libburn/cleanup.c \
libburn/cleanup.h \
libburn/crc.c \
libburn/crc.h \
libburn/debug.c \
libburn/debug.h \
libburn/drive.c \
libburn/drive.h \
libburn/error.h \
libburn/file.c \
libburn/file.h \
libburn/init.c \
libburn/init.h \
libburn/lec.c \
libburn/lec.h \
libburn/libburn.h \
libburn/libdax_audioxtr.h \
libburn/libdax_audioxtr.c \
libburn/libdax_msgs.h \
libburn/libdax_msgs.c \
libburn/mmc.c \
libburn/mmc.h \
libburn/null.c \
libburn/null.h \
libburn/options.c \
libburn/options.h \
libburn/os.h \
libburn/read.c \
libburn/read.h \
libburn/sbc.c \
libburn/sbc.h \
libburn/sector.c \
libburn/sector.h \
libburn/sg.c \
libburn/sg.h \
libburn/source.h \
libburn/source.c \
libburn/spc.c \
libburn/spc.h \
libburn/structure.c \
libburn/structure.h \
libburn/toc.c \
libburn/toc.h \
libburn/transport.h \
libburn/util.c \
libburn/util.h \
libburn/write.c \
libburn/write.h \
\
version.h
noinst_PROGRAMS = \
test/compare_file
# A program to compare two trees of files 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
# 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 manually.
buildstamped: buildstamp
make
## ========================================================================= ##
# Indent source files
indent_files =
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 = \
# xorriso.pc
man_MANS = xorriso/xorriso.1
EXTRA_DIST = \
xorriso.pc.in \
version.h.in \
README \
AUTHORS \
CONTRIBUTORS \
COPYRIGHT \
COPYING \
INSTALL \
xorriso/changelog.txt \
xorriso/xorriso_buildstamp_none.h \
$(man_MANS) \
doc/susp_aaip_2_0.txt \
doc/susp_aaip_isofs_names.txt \
doc/zisofs_format.txt \
libisofs/aaip-os-dummy.c \
libisofs/aaip-os-linux.c \
libisofs/aaip-os-freebsd.c \
libburn/os-dummy.h \
libburn/os-freebsd.h \
libburn/os-linux.h \
libburn/sg-dummy.c \
libburn/sg-freebsd.c \
libburn/sg-linux.c

View File

@ -0,0 +1,12 @@
prefix=@prefix@
exec_prefix=@exec_prefix@
libdir=@libdir@
includedir=@includedir@
Name: xorriso
Description: ISO 9660 filesystem image manipulator
Version: @VERSION@
Requires:
Libs: -L${libdir} -lpthread
Cflags:

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1 @@
#define Xorriso_timestamP "2009.08.28.112825"

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,491 @@
/* Adapter to libisoburn, libisofs and libburn for xorriso,
a command line oriented batch and dialog tool which creates, loads,
manipulates and burns ISO 9660 filesystem images.
Copyright 2007-2009 Thomas Schmitt, <scdbackup@gmx.net>
Provided under GPL version 2.
This file contains the inner isofs- and burn-library interface of xorriso.
*/
#ifndef Xorrisoburn_includeD
#define Xorrisoburn_includeD yes
/* The minimum version of libisoburn to be used with this version of xorriso
*/
#define xorriso_libisoburn_req_major 0
#define xorriso_libisoburn_req_minor 4
#define xorriso_libisoburn_req_micro 1
struct SpotlisT; /* List of intervals with different read qualities */
struct CheckmediajoB; /* Parameters for Xorriso_check_media() */
int Xorriso_startup_libraries(struct XorrisO *xorriso, int flag);
/* @param flag bit0= global shutdown of libraries */
int Xorriso_detach_libraries(struct XorrisO *xorriso, int flag);
int Xorriso_create_empty_iso(struct XorrisO *xorriso, int flag);
/* @param flag bit0=aquire as isoburn input drive
bit1=aquire as libburn output drive (as isoburn drive if bit0)
@return <=0 failure , 1=success , 2=neither readable or writeable
*/
int Xorriso_aquire_drive(struct XorrisO *xorriso, char *adr, int flag);
int Xorriso_give_up_drive(struct XorrisO *xorriso, int flag);
int Xorriso_write_session(struct XorrisO *xorriso, int flag);
/* @param boss_iter Opaque handle to be forwarded to actions in ISO image
Set to NULL if calling this function from outside ISO world
@param flag bit0= mkdir: graft in as empty directory, not as copy from disk
bit1= do not report added files
@return <=0 = error , 1 = added simple node , 2 = added directory
*/
int Xorriso_graft_in(struct XorrisO *xorriso, void *boss_iter,
char *disk_path, char *img_path,
off_t offset, off_t cut_size, int flag);
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,
int *media_space, int *free_space, int flag);
/* @param flag bit0=fast , bit1=deformat
@return 0=failure, did not touch media , -1=failure, altered media
1=success, altered media , 2=success, did not touch media
*/
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, off_t size, int flag);
/* @return <=0 error, 1 success
*/
int Xorriso_list_formats(struct XorrisO *xorriso, int flag);
/* @param flag bit1= obtain outdrive, else indrive
@return <=0 error, 1 success
*/
int Xorriso_list_profiles(struct XorrisO *xorriso, int flag);
/* @param flag bit2= formatting rather than blanking
@return 0=failure, did not touch media , -1=failure, altered media
1=success, altered media , 2=success, did not touch media
*/
int Xorriso_blank_as_needed(struct XorrisO *xorriso, int flag);
/* @param boss_iter Opaque internal handle. Use NULL outside xorrisoburn.c :
If not NULL then this is an iterator suitable for
iso_dir_iter_remove() which is then to be used instead
of iso_node_remove().
@param flag bit0= remove whole sub tree: rm -r
bit1= remove empty directory: rmdir
bit2= recursion: do not reassure in mode 2 "tree"
bit3= this is for overwriting and not for plain removal
@return <=0 = error
1 = removed simple node
2 = removed directory or tree
3 = did not remove on user revocation
*/
int Xorriso_rmi(struct XorrisO *xorriso, void *boss_iter, off_t boss_mem,
char *path, int flag);
/* @param flag bit0= long format
bit1= do not print count of nodes
bit2= du format
bit3= print directories as themselves (ls -d)
*/
int Xorriso_ls_filev(struct XorrisO *xorriso, char *wd,
int filec, char **filev, off_t boss_mem, int flag);
/* This function needs less buffer memory than Xorriso_ls_filev() but cannot
perform structured pattern matching.
@param flag bit0= long format
bit1= only check for directory existence
bit2= do not apply search pattern but accept any file
bit3= just count nodes and return number
*/
int Xorriso_ls(struct XorrisO *xorriso, int flag);
/* @param wd Path to prepend in case img_path is not absolute
@param img_path Absolute or relative path to be normalized
@param eff_path returns resulting effective path.
Must provide at least SfileadrL bytes of storage.
@param flag bit0= do not produce problem events (unless faulty path format)
bit1= work purely literally, do not use libisofs
bit2= (with bit1) this is an address in the disk world
@return -1 = faulty path format, 0 = not found ,
1 = found simple node , 2 = found directory
*/
int Xorriso_normalize_img_path(struct XorrisO *xorriso, char *wd,
char *img_path, char eff_path[], int flag);
/* @param boss_iter Opaque handle to be forwarded to actions in ISO image
Set to NULL if calling this function from outside ISO world
*/
int Xorriso_rename(struct XorrisO *xorriso, void *boss_iter,
char *origin, char *dest, int flag);
/* @param flag bit0= do not produce info message on success
@return 1=success, 0=was already directory, -1=was other type, -2=bad path
*/
int Xorriso_mkdir(struct XorrisO *xorriso, char *img_path, int flag);
/* @param flag bit0= a match count !=1 is a SORRY event */
int Xorriso_expand_pattern(struct XorrisO *xorriso,
int num_patterns, char **patterns, int extra_filec,
int *filec, char ***filev, off_t *mem, int flag);
int Xorriso_set_st_mode(struct XorrisO *xorriso, char *path,
mode_t mode_and, mode_t mode_or, int flag);
int Xorriso_set_uid(struct XorrisO *xorriso, char *in_path, uid_t uid,
int flag);
int Xorriso_set_gid(struct XorrisO *xorriso, char *in_path, gid_t gid,
int flag);
/* @parm flag bit0= atime, bit1= ctime, bit2= mtime, bit8=no auto ctime */
int Xorriso_set_time(struct XorrisO *xorriso, char *in_path, time_t t,
int flag);
/* @param flag bit0= recursion
bit1= do not count deleted files with rm and rm_r
*/
int Xorriso_findi(struct XorrisO *xorriso, struct FindjoB *job,
void *boss_iter, off_t boss_mem,
void *dir_node_generic, char *dir_path,
struct stat *dir_stbuf, int depth, int flag);
/* @param flag bit0= do not dive into trees
bit1= do not perform job->action on resulting node array
*/
int Xorriso_findi_sorted(struct XorrisO *xorriso, struct FindjoB *job,
off_t boss_mem, int filec, char **filev, int flag);
/* @param flag bit0= do not mark image as changed */
int Xorriso_set_volid(struct XorrisO *xorriso, char *volid, int flag);
int Xorriso_get_volid(struct XorrisO *xorriso, char volid[33], int flag);
int Xorriso_set_abort_severity(struct XorrisO *xorriso, int flag);
int Xorriso_report_lib_versions(struct XorrisO *xorriso, int flag);
/* @return 0= stbuf content is valid ,
-1 = path not found , -2 = severe error occured
*/
int Xorriso_iso_lstat(struct XorrisO *xorriso, char *path, struct stat *stbuf,
int flag);
/* @param flag bit0= -inq
bit1= -checkdrive
*/
int Xorriso_atip(struct XorrisO *xorriso, int flag);
/* @param write_start_address is valid if >=0
@param tsize is valid if >0
@param flag bit0= grow_overwriteable_iso
bit1= do_isosize
*/
int Xorriso_burn_track(struct XorrisO *xorriso, off_t write_start_address,
char *track_source, off_t tsize, int flag);
/* @param flag bit1= outdev rather than indev
@return <=0 = failure , 1= ok , 2= ok, is CD profile
*/
int Xorriso_get_profile(struct XorrisO *xorriso, int *profile_number,
char profile_name[80], int flag);
/* @param flag bit0= node_pt is a valid ISO object handle, ignore pathname
bit1= dig out the most original stream for reading
*/
int Xorriso_iso_file_open(struct XorrisO *xorriso, char *pathname,
void *node_pt, void **stream, int flag);
int Xorriso_iso_file_read(struct XorrisO *xorriso, void *stream, char *buf,
int count, int flag);
int Xorriso_iso_file_close(struct XorrisO *xorriso, void **stream, int flag);
/* @param bit0= copy link target properties rather than link properties
*/
int Xorriso_copy_properties(struct XorrisO *xorriso,
char *disk_path, char *img_path, int flag);
int Xorriso_cut_out(struct XorrisO *xorriso, char *disk_path,
off_t startbyte, off_t bytecount, char *iso_rr_path, int flag);
int Xorriso_paste_in(struct XorrisO *xorriso, char *disk_path,
off_t startbyte, off_t bytecount, char *iso_rr_path, int flag);
struct SplitparT;
/* @param flag bit0= in_node is valid, do not resolve iso_adr
*/
int Xorriso_identify_split(struct XorrisO *xorriso, char *iso_adr,
void *in_node,
struct SplitparT **parts, int *count,
struct stat *total_stbuf, int flag);
/* @param flag bit0= node is valid, do not resolve path
bit1= insist in complete collection of part files
*/
int Xorriso_is_split(struct XorrisO *xorriso, char *path, void *node,
int flag);
/* @param flag
>>> bit0= mkdir: graft in as empty directory, not as copy from iso
bit1= do not report copied files
bit2= -follow, -not_*: this is not a command parameter
bit3= use offset and cut_size for -paste_in
bit4= return 3 on rejection by exclusion or user
bit5= if directory then do not add sub tree
bit6= this is a copy action: do not fake times and ownership
@return <=0 = error , 1 = added leaf file object , 2 = added directory ,
3 = rejected
*/
int Xorriso_restore(struct XorrisO *xorriso,
char *img_path, char *disk_path,
off_t offset, off_t cut_size, int flag);
/* @param flag bit0= in_node is valid, do not resolve img_path
*/
int Xorriso_restore_is_identical(struct XorrisO *xorriso, void *in_node,
char *img_path, char *disk_path,
char type_text[5], int flag);
/* Return the official libburn address of an address string. This may fail
if the string does not constitute a valid drive address.
@param official_adr must offer SfileadrL bytes of reply buffer
@return 1 = success , 0 = failure , -1 = severe error
*/
int Xorriso_libburn_adr(struct XorrisO *xorriso, char *address_string,
char official_adr[], int flag);
/* @param flag bit1= obtain info from outdev
*/
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);
int Xorriso_destroy_node_array(struct XorrisO *xorriso, int flag);
int Xorriso_destroy_hln_array(struct XorrisO *xorriso, int flag);
int Xorriso_destroy_di_array(struct XorrisO *xorriso, int flag);
int Xorriso_new_node_array(struct XorrisO *xorriso, off_t mem_limit,
int addon_nodes, int flag);
int Xorriso_sort_node_array(struct XorrisO *xorriso, int flag);
int Xorriso_new_hln_array(struct XorrisO *xorriso, off_t mem_limit, int flag);
/* @param flag bit0= allocate xorriso->node_targets too
*/
int Xorriso_restore_node_array(struct XorrisO *xorriso, int flag);
int Xorriso_check_md5(struct XorrisO *xorriso, void *in_node, char *path,
int flag);
int Xorriso_check_session_md5(struct XorrisO *xorriso, char *severity,
int flag);
int Xorriso_image_has_md5(struct XorrisO *xorriso, int flag);
int Xorriso_check_media(struct XorrisO *xorriso, struct SpotlisT **spotlist,
struct CheckmediajoB *job, int flag);
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);
int Xorriso_set_filter(struct XorrisO *xorriso, void *in_node,
char *path, char *filter_name, int flag);
/* @param flag bit0= delete filter with the given name
*/
int Xorriso_external_filter(struct XorrisO *xorriso,
char *name, char *options, char *path,
int argc, char **argv, int flag);
int Xorriso_status_extf(struct XorrisO *xorriso, char *filter, FILE *fp,
int flag);
int Xorriso_destroy_all_extf(struct XorrisO *xorriso, int flag);
int Xorriso_show_stream(struct XorrisO *xorriso, void *in_node,
char *path, int flag);
int Xorriso_set_zisofs_params(struct XorrisO *xorriso, int flag);
int Xorriso_status_zisofs(struct XorrisO *xorriso, char *filter, FILE *fp,
int flag);
/* @param flag bit0= overwrite existing di_array (else return 2)
*/
int Xorriso_make_di_array(struct XorrisO *xorriso, int flag);
/* @param flag bit0= overwrite existing hln_array (else return 2)
*/
int Xorriso_make_hln_array(struct XorrisO *xorriso, int flag);
/*
@param flag bit2= -follow: this is not a command parameter
@return -1= severe error
0= not applicable for hard links
1= go on with processing
2= iso_rr_path is fully updated
*/
int Xorriso_hardlink_update(struct XorrisO *xorriso, int *compare_result,
char *disk_path, char *iso_rr_path, int flag);
int Xorriso_finish_hl_update(struct XorrisO *xorriso, int flag);
int Xorriso_get_md5(struct XorrisO *xorriso, void *in_node, char *path,
char md5[16], int flag);
int Xorriso_make_md5(struct XorrisO *xorriso, void *in_node, char *path,
int flag);
int Xorriso_md5_start(struct XorrisO *xorriso, void **ctx, int flag);
int Xorriso_md5_compute(struct XorrisO *xorriso, void *ctx,
char *data, int datalen, int flag);
int Xorriso_md5_end(struct XorrisO *xorriso, void **ctx, char md5[16],
int flag);
/* @param flag bit0=input drive
bit1=output drive
*/
int Xorriso_drive_snooze(struct XorrisO *xorriso, int flag);
/* 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 */