Compare commits

...

115 Commits

Author SHA1 Message Date
8039cfc79a Promoted branch to tag 2009-03-01 12:55:05 +00:00
cb774a21b2 Correction about libisofs.so version requirement 2009-03-01 11:26:03 +00:00
36c5a8f417 Documented changes and release timestamp 2009-03-01 11:10:18 +00:00
f3469c3839 Version leap to 0.3.4 2009-03-01 10:52:55 +00:00
35386d7ed0 Branching for libisoburn release 0.3.4 2009-03-01 09:52:22 +00:00
8a1574b632 Switched standalone version to libisofs-0.6.15 2009-02-28 18:17:47 +00:00
1af09c3ac8 New -stream_recording mode with start address, "on" is now 32s 2009-02-28 18:13:56 +00:00
f0734966ff New API function isoburn_igopt_get_data_start() 2009-02-28 17:59:20 +00:00
da07c22d31 Requiring libisofs-0.6.14 now, libburn-0.6.0 still suffices 2009-02-28 17:57:55 +00:00
c8122f4659 -disk_dev_ino mode ino_only 2009-02-25 14:40:47 +00:00
b6a998318c Adapted to version leap libburn-0.6.2 2009-02-20 13:12:30 +00:00
659fb43291 Committing forgotten xorriso_private.h 2009-02-19 18:37:28 +00:00
237113e1af Adapted to version leap libisofs-0.6.14 2009-02-19 16:29:24 +00:00
8e08cf3c57 Adapted to removal of Libburn_with_aaiP macro 2009-02-19 12:36:09 +00:00
ca4777fba9 Adapted to removal of Libburn_with_aaiP macro 2009-02-19 12:35:22 +00:00
e69f4e1234 New option -disk_dev_ino 2009-02-17 18:42:41 +00:00
1251c6e135 Took into respect ACL and xattr with -compare and -update 2009-02-16 08:26:53 +00:00
ef8333effe -as mkisofs --acl and --xattr was not properly recognized 2009-02-14 13:30:27 +00:00
333a7d95bb New option -setfattr_list 2009-02-13 20:25:42 +00:00
d9e76c54a6 Updated xorriso man page 2009-02-12 11:06:30 +00:00
5d9f43c7de New -as mkisofs options --acl and --xattr 2009-02-12 11:05:17 +00:00
26dc31682a Adapted html man page generator to textchanges 2009-02-12 07:26:49 +00:00
e4b8310812 Closed a memory leak with unreleased IsoImage in boot image inquiry 2009-02-10 12:58:36 +00:00
d2cc6531c0 Updated xorriso home page 2009-02-10 11:47:57 +00:00
c8fbf6ac4b New options -setfattr, -setfattr_r, new find -exec setfattr 2009-02-09 18:59:41 +00:00
af43ee46fd Displaying "+" with lslx if ACL is detected 2009-02-08 15:14:05 +00:00
5d21c97de7 First code for -setfattr (have to fix some ACL problems before going on) 2009-02-08 13:21:36 +00:00
27c45c6df6 Correct group permission bits with -acl off and disk file that has ACL 2009-02-07 14:26:12 +00:00
f5e6a8147b Correct group permission bits with -acl off and -extract file that has ACL 2009-02-07 09:01:26 +00:00
c854275d51 Checking for iconv(3) in separate libiconv (e.g. on FreeBSD) 2009-02-04 20:06:56 +00:00
0e26c05593 Took into respect eventual resolution of symbolic links 2009-02-04 20:01:22 +00:00
03e92f4f72 Linking with $LIBBURN_ARCH_LIBS to get -lcam on FreeBSD 2009-02-03 16:24:48 +00:00
efa1164328 Enabled restoring of xattr 2009-02-02 20:11:26 +00:00
f861321c45 New options -xattr, -getfattr, find -has_xattr, -has_aaip, -exec getfattr 2009-02-02 13:44:00 +00:00
4ceee394f7 Equipped output of lsl with '+' perm if ACL is present 2009-01-31 10:11:37 +00:00
002ba5d6d2 Followed changes in iso_node_*acl_text API 2009-01-30 14:56:31 +00:00
2756789dfe Bug fix: included sys/wait.h rather than wrong wait.h 2009-01-29 21:06:14 +00:00
db02a5e88a Added aaip-os-dummy.c to xorriso-standalone 2009-01-29 21:04:49 +00:00
767b0c3840 Updated xorriso web page 2009-01-29 16:56:01 +00:00
4bc34cc0ed New option -setfacl_list 2009-01-29 16:53:45 +00:00
78a3402bf3 Made -getfacl file name escaping more similar to shell command behavior 2009-01-28 19:01:47 +00:00
0e70724dc2 Bug fixes and enhancements about "default" ACL 2009-01-28 11:48:04 +00:00
d048fc4710 Bug fixes and enhancements about "default" ACL 2009-01-28 07:49:56 +00:00
a74260d09f Mentioned the need for 64 bit file i/o 2009-01-27 12:14:28 +00:00
aaf0c184d1 Including doc/susp_aaip_0_2.txt in xorriso-standalone 2009-01-26 17:38:33 +00:00
0cd2d869c3 Gave user control over isoburn_igopt_aaip_susp_1_10 2009-01-26 17:36:15 +00:00
e0fc368105 New macro isoburn_igopt_aaip_susp_1_10 controls writing of AAIP ER and ES 2009-01-26 17:33:02 +00:00
fc2d3655b0 AAIP code now resides in libisofs 2009-01-25 15:04:35 +00:00
02f2954bd5 New option -setfacl, -setfacl_r, new -find action setfacl 2009-01-25 14:11:37 +00:00
40d4330bcc Took into respect changed .o file names of libisofs 2009-01-24 16:38:13 +00:00
75ae510390 Updated xorriso web page 2009-01-23 17:53:26 +00:00
86b5ffda4f Silenced a FAILURE message with -acl if no image is loaded 2009-01-23 17:28:02 +00:00
5e1adef785 xorriso compilation detects availability of libacl and of Linux listxattr call 2009-01-23 17:27:04 +00:00
21adcfc5b3 Updated xorriso web page 2009-01-23 14:57:38 +00:00
e7036f90dc New find tests -has_acl, -has_no_acl, new action getfacl, new option getfacl_r 2009-01-23 14:08:31 +00:00
41619c2763 Demanding libisofs 0.6.13 now 2009-01-23 10:28:47 +00:00
b3b9381dad Promoted standalone libisofs to 0.6.13 2009-01-23 10:13:10 +00:00
b55cea36b1 Removing leading slash from -getfacl output of file path 2009-01-22 15:50:54 +00:00
8bb3c084e3 Restoring ACL only if -acl "on" 2009-01-22 15:22:57 +00:00
2c11219da5 Making use of new libisoburn macro isoburn_igopt_aaip 2009-01-22 14:33:09 +00:00
2e7f566be0 New macro isoburn_igopt_aaip controls writing of AAIP info into images 2009-01-22 14:32:15 +00:00
a1dd938400 Adapted to new macro situation in libisoburn 2009-01-22 13:03:02 +00:00
d03734211f Now it is isoburn_ropt_noaaip , isoburn_ropt_noacl and isoburn_ropt_noea 2009-01-22 13:01:13 +00:00
ecbf829ea9 New option -acl enables ACL loading 2009-01-21 20:45:22 +00:00
d678296449 Had to split isoburn_ropt_noaaip into isoburn_ropt_noacl and isoburn_ropt_noea 2009-01-21 20:39:00 +00:00
9716ac2333 New API macro isoburn_ropt_noaaip controls enabling of AAIP loading 2009-01-21 15:02:56 +00:00
acfdb36e73 Restoring ACLs with -extract and others 2009-01-18 21:40:42 +00:00
72743ca23b New option -getfacl 2009-01-17 18:15:22 +00:00
c4ced566b1 Introduced AAIP code. Now linking with libacl. 2009-01-14 11:10:53 +00:00
2fdd8738ef Clarified that AAIP is only allowed if RRIP is present 2009-01-14 11:04:55 +00:00
bca4682e63 Avoiding use of function parameter name "class" 2009-01-10 15:40:45 +00:00
50ebdac74f Mentioned bug fix and pl01 2009-01-09 10:33:59 +00:00
e415034e60 Some small corrections of documentation 2009-01-06 12:31:11 +00:00
55ac4a7305 Documented changes and release timestamp 2009-01-05 15:36:02 +00:00
f803da91b4 Version leap to 0.3.3 2009-01-05 15:33:46 +00:00
b07e37454a Updated copyright marks to 2009 2009-01-05 14:57:55 +00:00
2d6c71d335 Standalone version switch to libburn-0.6.1 2009-01-04 11:52:18 +00:00
dcec7a1be9 Corrected some more bug with attribute list decoding 2009-01-01 19:19:43 +00:00
598d994644 Corrected some bugs with attribute list decoding 2009-01-01 16:13:16 +00:00
aac9c23152 Introduced system adapters for getting and setting EA and ACL 2009-01-01 10:48:58 +00:00
6caddd2808 Decoder for ACL to long text form 2008-12-26 12:40:04 +00:00
37f4eaa9bb Encoder for ACL long text form 2008-12-25 14:01:36 +00:00
2c2a394a61 Gave aaip_0_2 a ring buffer rather than a shifted fifo 2008-12-23 14:47:00 +00:00
ef5a1c48ba A first implementation of AAIP 0.2 encoding and decoding 2008-12-21 10:19:16 +00:00
f348faeb5f Corrected message about non-matching volume id 2008-12-21 10:17:21 +00:00
9376623917 Corrected list of authors in libisoburn API documentation 2008-12-17 11:10:41 +00:00
a0dfbc4441 Delivering doxygen input for API documentation with releases 2008-12-17 10:22:35 +00:00
28a379db83 Preparations for a more presentable online API documentation 2008-12-17 10:13:43 +00:00
2efe2b0f01 Updated xorriso documentation 2008-12-16 16:37:49 +00:00
1a5307c2e9 New option -drive_class for safety management of pseudo-drive access 2008-12-16 13:02:11 +00:00
d0f8bb5dfe Options for -as mkisofs: -input-charset, -output-charset 2008-12-14 23:12:05 +00:00
8cfade6692 Removed outdated alternative code 2008-12-14 15:16:09 +00:00
1a0195b25f New option -assert_volid 2008-12-14 09:31:52 +00:00
071a0c995e Updated xorriso web page 2008-12-13 16:23:49 +00:00
581ff82167 Revoked -format mode by_size for DVD-RW 2008-12-13 16:17:18 +00:00
3f034883a6 Demanding libburn-0.5.9 now 2008-12-13 14:46:45 +00:00
48614c76a9 New -format modes by_size_ and fast_by_size_ 2008-12-13 14:32:21 +00:00
a8575df376 New -format modes by_size_ and fast_by_size_ 2008-12-13 14:27:58 +00:00
9b0518dfe9 Proper message after failed or refused formatting 2008-12-11 07:24:45 +00:00
3099f5cd6e Mentioned BD-R in man xorriso 2008-12-10 18:55:13 +00:00
ed437d4424 Enabled formatting of BD-R media to SRM-POW default size 2008-12-10 09:34:57 +00:00
fcbe94656f Got rid of Xorriso_with_regeX 2008-12-08 15:46:17 +00:00
af312dbbba Small documentation adjustments 2008-12-08 12:12:34 +00:00
b86f1b128d Requiring at least libburn-0.5.8 2008-12-08 12:11:33 +00:00
d5027ce4ec Standalone version switch to libburn-0.5.9 2008-12-08 12:07:38 +00:00
775c717fb4 Small documentation adjustments 2008-12-07 12:47:31 +00:00
87ff0c5594 Small documentation adjustments 2008-12-07 12:39:41 +00:00
f5b81c7b97 Got rid of call system() in Xorriso_mount(), new option -session_string 2008-12-07 12:25:07 +00:00
ab691084c6 Using uname() rather than #ifdef __FreeBSD__ 2008-12-06 14:08:54 +00:00
8e131041a4 New options -mount and -mount_cmd 2008-12-05 17:17:29 +00:00
e7ab799c76 New API function isoburn_get_mount_params() 2008-12-05 17:10:27 +00:00
1bc60d0c0c Bug fix: Options -extract and -extract_single were enabled with -osirrox off 2008-12-04 18:06:32 +00:00
fc58080467 Bug fix: Options -extract and -extract_single were enabled with -osirrox off 2008-12-04 17:55:30 +00:00
b905907d10 Documented changes and release timestamp 2008-12-01 20:49:47 +00:00
0913122f6f Version leap to 0.3.1 2008-12-01 20:48:49 +00:00
26 changed files with 6014 additions and 709 deletions

View File

@ -1,11 +1,11 @@
Mario Danic <mario.danic@gmail.com>,
Vreixo Formoso <metalpain2002@yahoo.es>
Thomas Schmitt <scdbackup@gmx.net>
libisoburn is Copyright (C) 2007-2008 Vreixo Formoso, Thomas Schmitt
xorriso is Copyright (C) 2007-2008 Thomas Schmitt
libisofs (if included) is Copyright (C) 2007-2008 Vreixo Formoso, Mario Danic
libisoburn is Copyright (C) 2007-2009 Vreixo Formoso, Thomas Schmitt
xorriso is Copyright (C) 2007-2009 Thomas Schmitt
libisofs (if included) is Copyright (C) 2007-2009 Vreixo Formoso, Mario Danic
libburn (if included) is Copyright (C) 2002-2006 Derek Foreman, Ben Jansens
and Copyright (C) 2006-2008 Mario Danic, Thomas Schmitt
and Copyright (C) 2006-2009 Mario Danic, Thomas Schmitt
This program is free software; you can redistribute it and/or modify

View File

@ -46,8 +46,12 @@ bin_PROGRAMS = \
# cat xorriso/xorriso_buildstamp.h
xorriso_xorriso_CPPFLAGS = -Ilibisoburn
xorriso_xorriso_CFLAGS = -DXorriso_with_maiN -DXorriso_with_regeX $(READLINE_DEF)
xorriso_xorriso_LDADD = libisoburn/libisoburn.la -lisofs -lburn $(THREAD_LIBS)
xorriso_xorriso_CFLAGS = -DXorriso_with_maiN \
$(READLINE_DEF) $(LIBACL_DEF) $(XATTR_DEF)
xorriso_xorriso_LDADD = libisoburn/libisoburn.la -lisofs -lburn \
$(THREAD_LIBS) $(LIBBURN_ARCH_LIBS)
xorriso_xorriso_SOURCES = \
xorriso/xorriso.h \
xorriso/xorriso_private.h \
@ -152,6 +156,8 @@ man_MANS = xorriso/xorriso.1
EXTRA_DIST = \
libisoburn-1.pc.in \
version.h.in \
doc/comments \
doc/doxygen.conf.in \
README \
AUTHORS \
CONTRIBUTORS \

18
README
View File

@ -4,8 +4,8 @@
libisoburn. By Vreixo Formoso <metalpain2002@yahoo.es>
and Thomas Schmitt <scdbackup@gmx.net>
Integrated sub project of libburnia-project.org.
http://files.libburnia-project.org/releases/libisoburn-0.2.9.tar.gz
Copyright (C) 2006-2008 Vreixo Formoso, Thomas Schmitt.
http://files.libburnia-project.org/releases/libisoburn-0.3.4.pl00.tar.gz
Copyright (C) 2006-2009 Vreixo Formoso, Thomas Schmitt.
Provided under GPL version 2.
------------------------------------------------------------------------------
@ -27,18 +27,18 @@ By using this software you agree to the disclaimer at the end of this text:
Compilation, First Glimpse, Installation
Dynamic library and compile time header requirements for libisoburn-0.2.9 :
- libburn.so.4 , version libburn-0.5.4 or higher
- libisofs.so.6 , version libisofs-0.6.10 or higher
Dynamic library and compile time header requirements for libisoburn-0.3.4 :
- libburn.so.4 , version libburn-0.6.0 or higher
- libisofs.so.6 , version libisofs-0.6.14 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.
Obtain libisoburn-0.2.9.tar.gz, take it to a directory of your choice
Obtain libisoburn-0.3.4.pl00.tar.gz, take it to a directory of your choice
and do:
tar xzf libisoburn-0.2.9.tar.gz
cd libisoburn-0.2.9
tar xzf libisoburn-0.3.4.pl00.tar.gz
cd libisoburn-0.3.4
Within that directory execute:
@ -156,7 +156,7 @@ libburnia-project.org
By Mario Danic <mario.danic@gmail.com>,
Vreixo Formoso <metalpain2002@yahoo.es>
Thomas Schmitt <scdbackup@gmx.net>
Copyright (C) 2006-2008 Mario Danic, Vreixo Formoso, Thomas Schmitt.
Copyright (C) 2006-2009 Mario Danic, Vreixo Formoso, Thomas Schmitt.
libburnia-project.org is inspired by and in other components still containing
parts of old

View File

@ -1,4 +1,4 @@
AC_INIT([libisoburn], [0.2.9], [http://libburnia-project.org])
AC_INIT([libisoburn], [0.3.4], [http://libburnia-project.org])
AC_PREREQ([2.50])
dnl AC_CONFIG_HEADER([config.h])
@ -8,7 +8,7 @@ AC_CANONICAL_TARGET
AM_INIT_AUTOMAKE([subdir-objects])
dnl Hint: Search list for version code aspects:
dnl /AC_INT(
dnl /AC_INIT(
dnl /ISOBURN_.*_VERSION
dnl /LT_.*
dnl /LIB.*_REQUIRED
@ -20,8 +20,8 @@ dnl LT_CURREN, LT_AGE, LT_REVISION where SONAME becomes LT_CURRENT - LT_AGE
dnl
dnl These three are only copies to provide libtool with unused LT_RELEASE
ISOBURN_MAJOR_VERSION=0
ISOBURN_MINOR_VERSION=2
ISOBURN_MICRO_VERSION=9
ISOBURN_MINOR_VERSION=3
ISOBURN_MICRO_VERSION=4
dnl ISOBURN_VERSION=$ISOBURN_MAJOR_VERSION.$ISOBURN_MINOR_VERSION.$ISOBURN_MICRO_VERSION
AC_SUBST(ISOBURN_MAJOR_VERSION)
@ -33,16 +33,16 @@ dnl Libtool versioning
dnl Generate libisoburn.so.1.x.y
dnl SONAME will become LT_CURRENT - LT_AGE
dnl
dnl ts A80920
dnl ### This is the release version 0.2.8 = libisoburn.so.1.17.0
dnl This is the development version after above stable release
dnl ts A90301
dnl This is the release version 0.3.4 = libisoburn.so.1.23.0
dnl ### This is the development version after above stable release
dnl LT_CURRENT++, LT_AGE++ have not happened happened yet.
dnl ### LT_CURRENT++, LT_AGE++ has happened meanwhile.
dnl
dnl SONAME = 18 - 17 = 1 . Library name = libisoburn.so.1.17.0
dnl SONAME = 24 - 23 = 1 . Library name = libisoburn.so.1.23.0
LT_RELEASE=$ISOBURN_MAJOR_VERSION.$ISOBURN_MINOR_VERSION
LT_CURRENT=18
LT_AGE=17
LT_CURRENT=24
LT_AGE=23
LT_REVISION=0
LT_CURRENT_MINUS_AGE=`expr $LT_CURRENT - $LT_AGE`
@ -70,6 +70,10 @@ if test ! $ac_cv_func_fseeko; then
AC_ERROR([Libburn requires largefile support.])
fi
dnl If iconv(3) is in an extra lib, then it gets added to variable LIBS.
dnl If not, then no -liconv will be added.
AC_CHECK_LIB(iconv, iconv, , )
AC_PROG_LIBTOOL
AC_SUBST(LIBTOOL_DEPS)
LIBTOOL="$LIBTOOL --silent"
@ -102,12 +106,41 @@ else
fi
AC_SUBST(READLINE_DEF)
AC_ARG_ENABLE(libacl,
[ --enable-libacl Enable use of libacl by libisofs, default=yes],
, enable_libacl=yes)
if test x$enable_libacl = xyes; then
dnl Check whether there is libacl-devel and libacl-runtime.
dnl If not, erase this macro which would enable use of acl_to_text and others
LIBACL_DEF="-DLibisofs_with_aaip_acL"
dnl The empty yes case obviously causes -lacl to be linked
AC_CHECK_HEADER(sys/acl.h, AC_CHECK_LIB(acl, acl_to_text, , LIBACL_DEF= ), LIBACL_DEF= )
else
LIBACL_DEF=
fi
AC_SUBST(LIBACL_DEF)
AC_ARG_ENABLE(xattr,
[ --enable-xattr Enable use of xattr by libisofs, default=yes],
, enable_xattr=yes)
if test x$enable_xattr = xyes; then
dnl Check whether there is the header for Linux xattr.
dnl If not, erase this macro which would enable use of listxattr and others
XATTR_DEF="-DLibisofs_with_aaip_xattR"
AC_CHECK_HEADER(attr/xattr.h, AC_CHECK_LIB(c, listxattr, X= , XATTR_DEF= ), XATTR_DEF= )
else
XATTR_DEF=
fi
AC_SUBST(XATTR_DEF)
AC_CHECK_HEADER(libburn/libburn.h)
AC_CHECK_HEADER(libisofs/libisofs.h)
dnl Check for proper library versions
LIBBURN_REQUIRED=0.5.4
LIBISOFS_REQUIRED=0.6.10
LIBBURN_REQUIRED=0.6.0
LIBISOFS_REQUIRED=0.6.14
PKG_CHECK_MODULES(LIBBURN, libburn-1 >= $LIBBURN_REQUIRED)
PKG_CHECK_MODULES(LIBISOFS, libisofs-1 >= $LIBISOFS_REQUIRED)

58
doc/comments Normal file
View File

@ -0,0 +1,58 @@
/**
@author Mario Danic, Vreixo Formoso, Thomas Schmitt
@mainpage Libisoburn Documentation Index
@section intro Introduction
Libburnia is an open-source project for reading, mastering and writing
optical discs. This page is about its capability to read, manipulate, and
write ISO 9660 filesystems with Rock Ridge extensions. Media can be optical
media or filesystem objects.
Our scope is currently Linux 2.4 and 2.6, or FreeBSD .
libisoburn is an add-on to libburn and libisofs which coordinates both and
also allows to grow ISO-9660 filesystem images on multi-session media as well
as on overwriteable media via the same API.
All media peculiarities are handled automatically.
xorriso is an application of all three libraries which creates, loads,
manipulates and writes ISO 9660 filesystem images with Rock Ridge extensions.
Manipulation is not only adding or overwriting of files but also deletion,
renaming, and attribute changing. An incremental backup feature is provided.
See xorriso/README for more
SONAME:
libisoburn.so.1 (since 0.1.0, February 2008).
@section using Using the libraries
Our build system is based on autotools.
User experience tells us that you will need at least autotools version 1.7.
To build libisoburn go into its toplevel directory and execute
- ./bootstrap (needed if you downloaded from SVN)
- ./configure
- make
To make the libraries accessible for running resp. developing applications
- make install
Read libisoburn/libisoburn.h for a description of the API.
See also README, xorriso/README, and the man page xorriso/xorriso.1 which
gives an idea of the capabilities provided by Libburnia.
You will also have to install and understand the two libraries of the
Libburnia project which provide fundamental services:
libburn is the library by which preformatted data get onto optical media.
See libburn/libburn.h for its API description.
libisofs is the library to handle ISO 9660 filesystems with Rock Ridge
extensions. Its API is described in libisofs/libisofs.h .
*/

View File

@ -6,7 +6,7 @@
*/
/* libburn wrappers for libisoburn
Copyright 2007 - 2008 Thomas Schmitt, <scdbackup@gmx.net>
Copyright 2007 - 2009 Thomas Schmitt, <scdbackup@gmx.net>
*/
/* <<< A70929 : hardcoded CD-RW with fabricated -msinfo
@ -24,6 +24,7 @@
#include <sys/stat.h>
#include <fcntl.h>
#include <time.h>
#include <regex.h>
#ifndef Xorriso_standalonE
@ -82,11 +83,11 @@ int isoburn_initialize(char msg[1024], int flag)
iso_lib_header_version_minor
iso_lib_header_version_micro
If the header is too old then the following code shall cause failure of
cdrskin compilation rather than to allow production of a program with
libisoburn compilation rather than to allow production of a program with
unpredictable bugs or memory corruption.
The compiler messages supposed to appear in this case are:
error: 'LIBISOFS_MISCONFIGURATION' undeclared (first use in this function)
error: 'INTENTIONAL_ABORT_OF_COMPILATION__HEADERFILE_libisofs_dot_h_TOO_OLD__SEE_libisoburn_dot_h_and_burn_wrap_dot_h' undeclared (first use in this function)
error: 'INTENTIONAL_ABORT_OF_COMPILATION__HEADERFILE_libisofs_dot_h_TOO_OLD__SEE_libisoburn_dot_h_AND_burn_wrap_dot_h' undeclared (first use in this function)
error: 'LIBISOFS_MISCONFIGURATION_' undeclared (first use in this function)
*/
/* The indendation is an advise of man gcc to help old compilers ignoring */
@ -102,7 +103,7 @@ int isoburn_initialize(char msg[1024], int flag)
#ifdef Isoburn_libisofs_dot_h_too_olD
LIBISOFS_MISCONFIGURATION = 0;
INTENTIONAL_ABORT_OF_COMPILATION__HEADERFILE_libisofs_dot_h_TOO_OLD__SEE_libisoburn_dot_h_and_burn_wrap_dot_h = 0;
INTENTIONAL_ABORT_OF_COMPILATION__HEADERFILE_libisofs_dot_h_TOO_OLD__SEE_libisoburn_dot_h_AND_burn_wrap_dot_h = 0;
LIBISOFS_MISCONFIGURATION_ = 0;
#endif
@ -264,6 +265,8 @@ int isoburn_is_intermediate_dvd_rw(struct burn_drive *d, int flag)
bit3= if the drive reports a -ROM profile then try to read
table of content by scanning for ISO image headers.
bit4= do not emulate TOC on overwriteable media
bit5= ignore ACL from external filesystems
bit6= ignore POSIX Extended Attributes from external filesystems
*/
static int isoburn_welcome_media(struct isoburn **o, struct burn_drive *d,
int flag)
@ -289,6 +292,7 @@ static int isoburn_welcome_media(struct isoburn **o, struct burn_drive *d,
(*o)->msgs_submit= libisoburn_default_msgs_submit;
(*o)->msgs_submit_handle= libisoburn_default_msgs_submit_handle;
(*o)->msgs_submit_flag= libisoburn_default_msgs_submit_flag;
iso_image_set_ignore_aclea((*o)->image, (flag >> 5 ) & 3);
#ifdef Hardcoded_cd_rW
/* <<< A70929 : hardcoded CD-RW with fabricated -msinfo */
@ -381,6 +385,8 @@ ex:
(depending on media type and drive state this might
help or it might make the resulting toc even worse)
bit4= do not emulate TOC on overwriteable media
bit5= ignore ACL from external filesystems
bit6= ignore POSIX Extended Attributes from external filesystems
*/
int isoburn_drive_aquire(struct burn_drive_info *drive_infos[],
char *adr, int flag)
@ -411,7 +417,7 @@ int isoburn_drive_aquire(struct burn_drive_info *drive_infos[],
goto ex;
drive_grabbed= 1;
ret= isoburn_welcome_media(&o, (*drive_infos)[0].drive,
(flag & 24) | !!(flag&2));
(flag & (8 | 16 | 32 | 64)) | !!(flag&2));
if(ret<=0)
goto ex;
@ -1041,7 +1047,9 @@ int isoburn_read_iso_head(struct burn_drive *d, int lba,
}
ret= isoburn_read_iso_head_parse(d, buffer+32*1024, image_blocks, info,
info_mode);
return(ret);
if(ret<=0)
return(ret);
return(1);
}
@ -1509,12 +1517,14 @@ int isoburn_drive_set_msgs_submit(struct burn_drive *d,
/* @param flag bit0= with adr_mode 3: adr_value might be 16 blocks too high
bit1= insist in seeing a disc object with at least one session
bit2= with adr_mode 4: use adr_value as regular expression
*/
int isoburn_set_msc1(struct burn_drive *d, int adr_mode, char *adr_value,
int flag)
{
int ret, num_sessions, num_tracks, adr_num, i, j, total_tracks;
int lba, best_lba, size;
int lba, best_lba, size, re_valid= 0;
char volid[33], msg[160];
struct isoburn *o;
struct isoburn_toc_disc *disc= NULL;
@ -1522,6 +1532,8 @@ int isoburn_set_msc1(struct burn_drive *d, int adr_mode, char *adr_value,
struct isoburn_toc_track **tracks= NULL;
static char mode_names[][20]= {"auto", "session", "track", "lba", "volid"};
static int max_mode_names= 4;
regex_t re;
regmatch_t match[1];
ret= isoburn_find_emulator(&o, d, 0);
if(ret<0)
@ -1530,7 +1542,7 @@ int isoburn_set_msc1(struct burn_drive *d, int adr_mode, char *adr_value,
return(-1);
adr_num= atoi(adr_value);
if(adr_mode!=3) {
if(adr_mode!=3 || (flag & 2)) {
disc= isoburn_toc_drive_get_disc(d);
if(disc==NULL) {
not_found:;
@ -1589,6 +1601,13 @@ not_found:;
}
} else if(adr_mode==4) {
/* search for volume id that is equal to adr_value */
if(flag & 4) {
ret= regcomp(&re, adr_value, 0);
if(ret != 0)
flag&= ~4;
else
re_valid= 1;
}
best_lba= -1;
for(i=0; i<num_sessions; i++) {
tracks= isoburn_toc_session_get_tracks(sessions[i], &num_tracks);
@ -1599,8 +1618,14 @@ not_found:;
ret= isoburn_read_iso_head(d, lba, &size, volid, 1);
if(ret<=0)
continue;
if(strcmp(volid, adr_value)!=0)
if(flag & 4) {
ret= regexec(&re, volid, 1, match, 0);
if(ret != 0)
continue;
} else {
if(strcmp(volid, adr_value)!=0)
continue;
}
best_lba= lba;
}
}
@ -1618,7 +1643,64 @@ unknown_mode:;
ex:;
if(disc!=NULL)
isoburn_toc_disc_free(disc);
if((flag & 4) && re_valid)
regfree(&re);
return(ret);
}
int isoburn_get_mount_params(struct burn_drive *d,
int adr_mode, char *adr_value,
int *lba, int *track, int *session,
char volid[33], int flag)
{
int msc1_mem, ret, total_tracks, num_sessions, num_tracks, i, j, track_lba;
int size, is_iso= 0;
struct isoburn *o;
struct isoburn_toc_disc *disc= NULL;
struct isoburn_toc_session **sessions= NULL;
struct isoburn_toc_track **tracks= NULL;
*lba= *track= *session= -1;
volid[0]= 0;
ret= isoburn_find_emulator(&o, d, 0);
if(ret < 0 || o == NULL)
return(-1);
msc1_mem= o->fabricated_msc1;
ret= isoburn_set_msc1(d, adr_mode, adr_value, 2 | (flag & 4));
if(ret <= 0)
return(ret);
*lba= o->fabricated_msc1;
disc= isoburn_toc_drive_get_disc(d);
if(disc==NULL)
{ret= -1; goto ex;} /* cannot happen because checked by isoburn_set_msc1 */
sessions= isoburn_toc_disc_get_sessions(disc, &num_sessions);
if(sessions==NULL || num_sessions<=0)
{ret= -1; goto ex;} /* cannot happen because checked by isoburn_set_msc1 */
total_tracks= 0;
for(i=0; i<num_sessions && *session < 0; i++) {
tracks= isoburn_toc_session_get_tracks(sessions[i], &num_tracks);
if(tracks==NULL)
continue;
for(j= 0; j<num_tracks && *track < 0; j++) {
total_tracks++;
isoburn_get_track_lba(tracks[j], &track_lba, 0);
if(track_lba == *lba) {
*track= total_tracks;
*session= i + 1;
}
}
}
ret= isoburn_read_iso_head(d, *lba, &size, volid, 1);
if(ret <= 0)
volid[0]= 0;
else
is_iso= 1;
ex:;
o->fabricated_msc1= msc1_mem;
return(2 - is_iso);
}

View File

@ -1,7 +1,7 @@
/*
data source for libisoburn.
Copyright 2007 - 2008 Vreixo Formoso Lopes <metalpain2002@yahoo.es>
Copyright 2007 - 2009 Vreixo Formoso Lopes <metalpain2002@yahoo.es>
and Thomas Schmitt <scdbackup@gmx.net>
*/

View File

@ -6,7 +6,7 @@
/*
Class core of libisoburn.
Copyright 2007 - 2008 Vreixo Formoso Lopes <metalpain2002@yahoo.es>
Copyright 2007 - 2009 Vreixo Formoso Lopes <metalpain2002@yahoo.es>
Thomas Schmitt <scdbackup@gmx.net>
*/
@ -353,6 +353,7 @@ int isoburn_prepare_disc_aux(struct burn_drive *in_d, struct burn_drive *out_d,
IsoWriteOpts *wopts= NULL;
enum burn_disc_status state;
int ret, fifo_chunks, lba, nwa, i, new_img, early_indev_release;
uint32_t data_start= -1;
size_t buffer_size= 0, buffer_free= 0;
char msg[160];
@ -404,6 +405,7 @@ int isoburn_prepare_disc_aux(struct burn_drive *in_d, struct burn_drive *out_d,
iso_write_opts_set_rockridge(wopts, opts->rockridge);
iso_write_opts_set_joliet(wopts, opts->joliet);
iso_write_opts_set_iso1999(wopts, opts->iso1999);
iso_write_opts_set_aaip(wopts, opts->aaip);
iso_write_opts_set_omit_version_numbers(wopts, opts->omit_version_numbers);
iso_write_opts_set_allow_deep_paths(wopts, opts->allow_deep_paths);
iso_write_opts_set_allow_longer_paths(wopts, opts->allow_longer_paths);
@ -416,6 +418,7 @@ int isoburn_prepare_disc_aux(struct burn_drive *in_d, struct burn_drive *out_d,
iso_write_opts_set_always_gmt(wopts, opts->always_gmt);
iso_write_opts_set_rrip_version_1_10(wopts, opts->rrip_version_1_10);
iso_write_opts_set_dir_rec_mtime(wopts, opts->dir_rec_mtime);
iso_write_opts_set_aaip_susp_1_10(wopts, opts->aaip_susp_1_10);
iso_write_opts_set_sort_files(wopts, opts->sort_files);
iso_write_opts_set_replace_mode(wopts, opts->replace_dir_mode,
opts->replace_file_mode, opts->replace_uid, opts->replace_gid);
@ -468,6 +471,16 @@ int isoburn_prepare_disc_aux(struct burn_drive *in_d, struct burn_drive *out_d,
if(in_o->iso_data_source!=NULL)
isoburn_data_source_shutdown(in_o->iso_data_source, 0);
}
#ifdef Libisofs_has_iwo_get_data_starT
ret= iso_write_opts_get_data_start(wopts, &data_start, 0);
#else
ret= ISO_ERROR;
#endif
opts->data_start_lba= -1;
if(ret > 0 && data_start <= 0x7FFFFFFF)
opts->data_start_lba= data_start;
/* TODO check return values for failure. propertly clean-up on error */
@ -629,6 +642,9 @@ int isoburn_ropt_new(struct isoburn_read_opts **new_o, int flag)
o->norock= 0;
o->nojoliet= 0;
o->noiso1999= 1;
o->noaaip= 1;
o->noacl= 1;
o->noea= 1;
o->preferjoliet= 0;
o->uid= geteuid();
o->gid= getegid();
@ -662,6 +678,9 @@ int isoburn_ropt_set_extensions(struct isoburn_read_opts *o, int ext)
o->noiso1999= !!(ext&4);
o->preferjoliet= !!(ext&8);
o->pretend_blank= !!(ext&16);
o->noaaip= !!(ext & 32);
o->noacl= !!(ext & 64);
o->noea= !!(ext & 128);
return(1);
}
@ -669,7 +688,8 @@ int isoburn_ropt_set_extensions(struct isoburn_read_opts *o, int ext)
int isoburn_ropt_get_extensions(struct isoburn_read_opts *o, int *ext)
{
*ext= (!!o->norock) | ((!!o->nojoliet)<<1) | ((!!o->noiso1999)<<2) |
((!!o->preferjoliet)<<3) | ((!!o->pretend_blank)<<4);
((!!o->preferjoliet)<<3) | ((!!o->pretend_blank)<<4) |
((!!o->noaaip) << 5) | ((!!o->noacl) << 6) | ((!!o->noea) << 7);
return(1);
}
@ -779,6 +799,7 @@ int isoburn_igopt_new(struct isoburn_imgen_opts **new_o, int flag)
o->always_gmt= 0;
o->rrip_version_1_10= 0;
o->dir_rec_mtime= 0;
o->aaip_susp_1_10= 0;
o->sort_files= 0;
o->replace_dir_mode= 0;
o->replace_file_mode= 0;
@ -791,6 +812,7 @@ int isoburn_igopt_new(struct isoburn_imgen_opts **new_o, int flag)
o->output_charset= NULL;
o->fifo_size= 4*1024*1024;
o->effective_lba= -1;
o->data_start_lba= -1;
return(1);
}
@ -824,13 +846,15 @@ int isoburn_igopt_set_extensions(struct isoburn_imgen_opts *o, int ext)
o->rockridge= !!(ext&1);
o->joliet= !!(ext&2);
o->iso1999= !!(ext&4);
o->aaip= !!(ext & 32);
return(1);
}
int isoburn_igopt_get_extensions(struct isoburn_imgen_opts *o, int *ext)
{
*ext= (!!o->rockridge) | ((!!o->joliet)<<1) | ((!!o->iso1999)<<2);
*ext= (!!o->rockridge) | ((!!o->joliet)<<1) | ((!!o->iso1999)<<2) |
((!!o->aaip) << 5);
return(1);
}
@ -848,6 +872,7 @@ int isoburn_igopt_set_relaxed(struct isoburn_imgen_opts *o, int relax)
o->always_gmt= !!(relax & isoburn_igopt_always_gmt);
o->rrip_version_1_10= !!(relax & isoburn_igopt_rrip_version_1_10);
o->dir_rec_mtime= !!(relax & isoburn_igopt_dir_rec_mtime);
o->aaip_susp_1_10= !!(relax & isoburn_igopt_aaip_susp_1_10);
return(1);
}
@ -857,7 +882,9 @@ int isoburn_igopt_get_relaxed(struct isoburn_imgen_opts *o, int *relax)
*relax= (!!o->omit_version_numbers) | ((!!o->allow_deep_paths)<<1) |
((!!o->allow_longer_paths)<<2) | ((!!o->max_37_char_filenames)<<3) |
((!!o->no_force_dots)<<4) | ((!!o->allow_lowercase)<<5) |
((!!o->allow_full_ascii)<<6) | ((!!o->joliet_longer_paths)<<7);
((!!o->allow_full_ascii)<<6) | ((!!o->joliet_longer_paths)<<7) |
((!!o->always_gmt)<<8) | ((!!o->rrip_version_1_10)<<9) |
((!!o->dir_rec_mtime)<<10) | ((!!o->aaip_susp_1_10)<<11);
return(1);
}
@ -960,3 +987,9 @@ int isoburn_igopt_get_effective_lba(struct isoburn_imgen_opts *o, int *lba)
}
int isoburn_igopt_get_data_start(struct isoburn_imgen_opts *o, int *lba)
{
*lba= o->data_start_lba;
return(1);
}

View File

@ -250,6 +250,12 @@ struct isoburn_read_opts {
unsigned int norock:1; /*< Do not read Rock Ridge extensions */
unsigned int nojoliet:1; /*< Do not read Joliet extensions */
unsigned int noiso1999:1; /*< Do not read ISO 9660:1999 enhanced tree */
/* ts A90121 */
unsigned int noaaip:1; /* Do not read AAIP for ACL and EA */
unsigned int noacl:1; /* Do not read ACL from external file objects */
unsigned int noea:1; /* Do not read XFS-style EA from externals */
unsigned int preferjoliet:1;
/*< When both Joliet and RR extensions are present, the RR
* tree is used. If you prefer using Joliet, set this to 1. */
@ -302,6 +308,9 @@ struct isoburn_imgen_opts {
unsigned int joliet :1;
unsigned int iso1999 :1;
/* ts A90121 */
unsigned int aaip:1; /* Write eventual AAIP info containing ACL and EA */
/* relaxed constraints */
/*
@ -375,6 +384,13 @@ struct isoburn_imgen_opts {
*/
unsigned int dir_rec_mtime :1;
/**
* Write AAIP as extension according to SUSP 1.10 rather than SUSP 1.12.
* I.e. without announcing it by an ER field and thus without the need
* to preceed the RRIP fields by an ES and to preceed the AA field by ES.
*/
unsigned int aaip_susp_1_10 :1;
unsigned int sort_files:1;
/**< If files should be sorted based on their weight. */
@ -414,12 +430,19 @@ struct isoburn_imgen_opts {
int fifo_size;
/** Output value: Block address of session start as evaluatedfrom media
/** Output value: Block address of session start as evaluated from media
and other options by libisoburn and libburn.
If <0 : Invalid
If >=0: Valid block number. Block size is always 2 KiB.
*/
int effective_lba;
/** Output value: Block address of data section start as predicted by
libisofs.
If < 16: Invalid
If >=16: Valid block number. Block size is always 2 KiB.
*/
int data_start_lba;
};

View File

@ -6,7 +6,7 @@
/*
libisofs related functions of libisoburn.
Copyright 2007 - 2008 Vreixo Formoso Lopes <metalpain2002@yahoo.es>
Copyright 2007 - 2009 Vreixo Formoso Lopes <metalpain2002@yahoo.es>
Thomas Schmitt <scdbackup@gmx.net>
*/
@ -27,6 +27,8 @@
#endif /* Xorriso_standalonE */
#define Libisoburn_with_aaiP yes
#include "isoburn.h"
#include "libisoburn.h"
@ -166,6 +168,8 @@ create_blank_image:;
iso_image_ref(*image); /*protects object from premature free*/
}
}
iso_image_set_ignore_aclea(*image,
(!!(read_opts->noacl)) | ((!!read_opts->noea) << 1) );
return 1;
}
@ -198,6 +202,11 @@ create_blank_image:;
/* Important: do not return until iso_read_opts_free() */
iso_read_opts_set_start_block(ropts, ms_block);
iso_read_opts_set_no_rockridge(ropts, read_opts->norock);
#ifdef Libisoburn_with_aaiP
iso_read_opts_set_no_aaip(ropts, read_opts->noaaip);
#endif /* Libisoburn_with_aaiP */
iso_read_opts_set_no_joliet(ropts, read_opts->nojoliet);
iso_read_opts_set_no_iso1999(ropts, read_opts->noiso1999);
iso_read_opts_set_preferjoliet(ropts, read_opts->preferjoliet);

View File

@ -2,7 +2,7 @@
/*
API definition of libisoburn.
Copyright 2007-2008 Vreixo Formoso Lopes <metalpain2002@yahoo.es>
Copyright 2007-2009 Vreixo Formoso Lopes <metalpain2002@yahoo.es>
and Thomas Schmitt <scdbackup@gmx.net>
*/
@ -124,6 +124,22 @@ One should inquire isoburn_drive_wrote_well() to learn about overall success.
Finally one must call isoburn_activate_session() which will complete any
eventual multi-session emulation.
Application Constraints
Applications shall include libisofs/libisofs.h , libburn/libburn.h and this
file itself: libisoburn/libisoburn.h .
They shall link with -lisofs -lburn -lisoburn or with the .o files emerging
from building those libraries from their sources.
Applications must use 64 bit off_t, e.g. on 32-bit Linux by defining
#define _LARGEFILE_SOURCE
#define _FILE_OFFSET_BITS 64
or take special precautions to interface with the library by 64 bit integers
where above .h files prescribe off_t. Not to use 64 bit file i/o will keep
the application from producing and processing ISO images of more than 2 GB
size.
*/
@ -200,15 +216,15 @@ void isoburn_version(int *major, int *minor, int *micro);
*/
#define isoburn_libisofs_req_major 0
#define isoburn_libisofs_req_minor 6
#define isoburn_libisofs_req_micro 11
#define isoburn_libisofs_req_micro 14
/** The minimum version of libburn to be used with this version of libisoburn
at compile time.
@since 0.1.0
*/
#define isoburn_libburn_req_major 0
#define isoburn_libburn_req_minor 5
#define isoburn_libburn_req_micro 4
#define isoburn_libburn_req_minor 6
#define isoburn_libburn_req_micro 0
/** The minimum version of libisofs to be used with this version of libisoburn
@ -243,8 +259,8 @@ int isoburn_libburn_req(int *major, int *minor, int *micro);
@since 0.1.0
*/
#define isoburn_header_version_major 0
#define isoburn_header_version_minor 2
#define isoburn_header_version_micro 9
#define isoburn_header_version_minor 3
#define isoburn_header_version_micro 4
/** Note:
Above version numbers are also recorded in configure.ac because libtool
wants them as parameters at build time.
@ -336,7 +352,8 @@ int isoburn_set_msgs_submit(int (*msgs_submit)(void *handle, int error_code,
(cdrom/burner). Thus use with driveno 0 only. On failure
the array has no valid elements at all.
The returned array should be freed via burn_drive_info_free()
when the drive is no longer needed.
when the drive is no longer needed. But before this is done
one has to call isoburn_drive_release(drive_infos[0].drive).
@param adr The persistent address of the desired drive.
@param load 1 attempt to load the disc tray. 0 no attempt,rather failure.
@return 1 = success , 0 = drive not found , <0 = other error
@ -353,7 +370,8 @@ int isoburn_drive_scan_and_grab(struct burn_drive_info *drive_infos[],
(cdrom/burner). Thus use with driveno 0 only. On failure
the array has no valid elements at all.
The returned array should be freed via burn_drive_info_free()
when the drive is no longer needed.
when the drive is no longer needed. But before this is done
one has to call isoburn_drive_release(drive_infos[0].drive).
@param adr The persistent address of the desired drive.
@param flag bit0= attempt to load the disc tray.
Else: failure if not loaded.
@ -365,6 +383,9 @@ int isoburn_drive_scan_and_grab(struct burn_drive_info *drive_infos[],
(depending on media type and drive this might
help or it might make the resulting toc even worse)
bit4= do not emulate table of content on overwriteable media
bit5= ignore ACL from external filesystems
bit6= ignore POSIX Extended Attributes from external
filesystems
@return 1 = success , 0 = drive not found , <0 = other error
*/
int isoburn_drive_aquire(struct burn_drive_info *drive_infos[],
@ -375,6 +396,7 @@ int isoburn_drive_aquire(struct burn_drive_info *drive_infos[],
Wrapper for: burn_drive_grab()
@since 0.1.0
@param drive The drive to grab. E.g. drive_infos[1].drive .
Call isoburn_drive_release(drive) when it it no longer needed.
@param load 1 attempt to load the disc tray. 0 no attempt, rather failure.
@return 1 success, <=0 failure
*/
@ -450,12 +472,14 @@ void isoburn_disc_erase(struct burn_drive *drive, int fast);
3= adr_value itself is the lba to be used
4= start lba of last session with volume id
given by adr_value
@parm adr_value A string describing the value to be eventually used.
@param adr_value A string describing the value to be eventually used.
@param flag Bitfield for control purposes.
bit0= @since 0.2.2
with adr_mode 3: adr_value might be 16 blocks too high
(e.g. -C stemming from growisofs). Probe for ISO head
at adr_value-16 and eventually adjust setting.
bit1= insist in seeing a disc object with at least one session
bit2= with adr_mode 4: use adr_value as regular expression
*/
int isoburn_set_msc1(struct burn_drive *d, int adr_mode, char *adr_value,
int flag);
@ -600,6 +624,35 @@ int isoburn_read_iso_head(struct burn_drive *d, int lba,
int *image_blocks, char *info, int flag);
/** Try to convert the given entity address into various entity addresses
which would describe it.
Note: Sessions and tracks are counted beginning with 1, not with 0.
@since 0.3.2
@param drive The drive where msc1 is to be set
@param adr_mode Determines how to interpret the input adr_value.
If adr_value shall represent a number then decimal ASCII
digits are expected.
0= start lba of last session in TOC, ignore adr_value
1= start lba of session number given by adr_value
2= start lba of track given number by adr_value
3= adr_value itself is the lba to be used
4= start lba of last session with volume id
given by adr_value
@param adr_value A string describing the value to be eventually used.
@param lba returns the block address of the entity, -1 means invalid
@param track returns the track number of the entity, -1 means invalid
@param session returns the session number of the entity, -1 means invalid
@param volid returns the volume id of the entity if it is a ISO session
@param flag Bitfield for control purposes.
bit2= with adr_mode 4: use adr_value as regular expression
@return <=0 error , 1 ok, ISO session, 2 ok, not an ISO session
*/
int isoburn_get_mount_params(struct burn_drive *d,
int adr_mode, char *adr_value,
int *lba, int *track, int *session,
char volid[33], int flag);
/* ----------------------------------------------------------------------- */
/*
@ -648,6 +701,18 @@ int isoburn_ropt_destroy(struct isoburn_read_opts **o, int flag);
tree is used. If you prefer using Joliet, set this to 1.
bit4= pretend_blank
Always create empty image.Ignore any image on input drive.
bit5= noaaip
@since 0.3.4
Do not load AAIP information from image. This information
eventually contains ACL or XFS-style Extended Attributes.
bit6= noacl
@since 0.3.4
Do not obtain ACL from external filesystem objects (e.g.
local filesystem files).
bit7= noea
@since 0.3.4
Do not obtain XFS-style Extended Attributes from external
filesystem objects (e.g. local filesystem files).
@return 1 success, <=0 failure
*/
#define isoburn_ropt_norock 1
@ -655,6 +720,10 @@ int isoburn_ropt_destroy(struct isoburn_read_opts **o, int flag);
#define isoburn_ropt_noiso1999 4
#define isoburn_ropt_preferjoliet 8
#define isoburn_ropt_pretend_blank 16
#define isoburn_ropt_noaaip 32
#define isoburn_ropt_noacl 64
#define isoburn_ropt_noea 128
int isoburn_ropt_set_extensions(struct isoburn_read_opts *o, int ext);
int isoburn_ropt_get_extensions(struct isoburn_read_opts *o, int *ext);
@ -730,6 +799,13 @@ int isoburn_ropt_get_input_charset(struct isoburn_read_opts *o,
#define isoburn_ropt_has_joliet 2
#define isoburn_ropt_has_iso1999 4
#define isoburn_ropt_has_el_torito 8
/* ts A90122 */
/* >>> to be implemented:
#define isoburn_ropt_has_acl 64
#define isoburn_ropt_ihas_ea 128
*/
int isoburn_ropt_get_size_what(struct isoburn_read_opts *o,
uint32_t *size, int *has_what);
@ -797,11 +873,16 @@ int isoburn_igopt_get_level(struct isoburn_imgen_opts *o, int *level);
Weaker than RockRidge, but also readable with Linux.
bit2= iso1999
This is rather exotic. Better do not surprise the readers.
bit5= aaip
The libisofs specific SUSP based extension of ECMA-119 which
can encode ACL and XFS-style Extended Attributes.
@return 1 success, <=0 failure
*/
#define isoburn_igopt_rockridge 1
#define isoburn_igopt_joliet 2
#define isoburn_igopt_iso1999 4
/* ts A90122 */
#define isoburn_igopt_aaip 32
int isoburn_igopt_set_extensions(struct isoburn_imgen_opts *o, int ext);
int isoburn_igopt_get_extensions(struct isoburn_imgen_opts *o, int *ext);
@ -856,6 +937,12 @@ int isoburn_igopt_get_extensions(struct isoburn_imgen_opts *o, int *ext);
bit10= dir_rec_mtime
Store as ECMA-119 Directory Record timestamp the mtime
of the source rather than the image creation time.
bit11= aaip_susp_1_10
Write AAIP fields without announcing AAIP by an ER field and
without distinguishing RRIP fields from the AAIP field by
prefixed ES fields. This saves 5 to 10 bytes per file and
might avoid problems with readers which only accept RRIP.
SUSP-1.10 allows it, SUSP-1.12 frowns on it.
@return 1 success, <=0 failure
*/
@ -870,6 +957,7 @@ int isoburn_igopt_get_extensions(struct isoburn_imgen_opts *o, int *ext);
#define isoburn_igopt_always_gmt 256
#define isoburn_igopt_rrip_version_1_10 512
#define isoburn_igopt_dir_rec_mtime 1024
#define isoburn_igopt_aaip_susp_1_10 2048
int isoburn_igopt_set_relaxed(struct isoburn_imgen_opts *o, int relax);
int isoburn_igopt_get_relaxed(struct isoburn_imgen_opts *o, int *relax);
@ -972,6 +1060,21 @@ int isoburn_igopt_get_fifo_size(struct isoburn_imgen_opts *o, int *fifo_size);
int isoburn_igopt_get_effective_lba(struct isoburn_imgen_opts *o, int *lba);
/** Obtain after image preparation the lowest block address of file content
data. Failure can occur if libisofs is too old to provide this information,
if the result exceeds 31 bit, or if the call is made before image
preparation.
This value cannot be set by the application but only be inquired.
@since 0.3.4
@param o The option set to work on
@param lba The block number of the session start on media.
<0 means that no address has been determined yet.
@return 1 success, <=0 failure
*/
int isoburn_igopt_get_data_start(struct isoburn_imgen_opts *o, int *lba);
/* ----------------------------------------------------------------------- */
/* End of Options for image generation */
/* ----------------------------------------------------------------------- */
@ -1243,7 +1346,7 @@ void isoburn_disc_write(struct burn_write_opts *o, struct burn_disc *disc);
Hint: If only burn_write_opts and not burn_drive is known, then the drive
can be obtained by burn_write_opts_get_drive().
@since 0.1.0
@parm d The drive to which the track with the fifo gets burned.
@param d The drive to which the track with the fifo gets burned.
@param size The total size of the fifo
@param free_bytes The current free capacity of the fifo
@param status_text Returns a pointer to a constant text, see below

View File

@ -4,8 +4,8 @@
xorriso. By Thomas Schmitt <scdbackup@gmx.net>
Integrated sub project of libburnia-project.org but also published via:
http://scdbackup.sourceforge.net/xorriso_eng.html
http://scdbackup.sourceforge.net/xorriso-0.2.9.tar.gz
Copyright (C) 2006-2008 Thomas Schmitt, provided under GPL version 2.
http://scdbackup.sourceforge.net/xorriso-0.3.4.pl00.tar.gz
Copyright (C) 2006-2009 Thomas Schmitt, provided under GPL version 2.
------------------------------------------------------------------------------
@ -33,14 +33,20 @@ The most simple way to get xorriso from source code is the xorriso standalone
tarball.
Prerequisites:
The tarball contains anything that is needed except libc and libpthread.
libreadline and the readline-dev headers will make dialog mode more convenient,
but are not mandatory.
The tarball contains anything that is needed except the following system
components:
libc, libpthread
plus on FreeBSD: libiconv, libcam
Optional at compile time are:
libreadline and the readline-dev headers make dialog mode more convenient.
on Linux: libacl and libacl-devel allow getting and setting ACLs.
If they were present at compile time, then the optional libraries have to
be present at runtime, too.
Obtain xorriso-0.2.9.tar.gz, take it to a directory of your choice and do:
Obtain xorriso-0.3.4.pl00.tar.gz, take it to a directory of your choice and do:
tar xzf xorriso-0.2.9.tar.gz
cd xorriso-0.2.9
tar xzf xorriso-0.3.4.pl00.tar.gz
cd xorriso-0.3.4
Within that directory execute:
@ -54,8 +60,8 @@ which you may strip to reduce it in size
strip ./xorriso/xorriso
You may copy or move it to a directory where it can be found by the shell,
you may execute xorriso at the place where it was built, or you may execute
as superuser:
or you may execute xorriso at the place where it was built,
or you may execute as superuser:
make install
For general concepts, options and usage examples see
@ -81,6 +87,9 @@ development package is installed, then rather build xorriso by:
make clean ; make
Never omit the "make clean" command after switching libreadline enabling.
If you want xorriso to report a "Build timestamp" with its option -version:
make buildstamped
Drives and Disk File Objects
@ -120,9 +129,13 @@ Better try to unmount an eventually mounted media before a write run.
Besides true optical drives, xorriso can also address disk files as input or
output drives. The addresses of the disk files have to be preceded by "stdio:".
output drives. By default paths to files under /dev are accepted only if the
device represents a real optical drive. Other device files may be addressed
by prepending "stdio:" to the path.
Like:
xorriso -dev stdio:/tmp/pseudo_drive ...more arguments...
xorriso -dev stdio:/dev/sdb ...more arguments...
This rule may be changed by xorriso option -drive_class.
Prefix "mmc:" causes a path to be accepted only if it is a real optical drive.
Testing
@ -193,9 +206,9 @@ and a matching dynamically linked xorriso binary.
This binary is leaner but depends on properly installed libraries of suitable
revision.
Dynamic library and compile time header requirements for libisoburn-0.2.9 :
- libburn.so.4 , version libburn-0.5.4 or higher
- libisofs.so.6 , version libisofs-0.6.10 or higher
Dynamic library and compile time header requirements for libisoburn-0.3.4 :
- libburn.so.4 , version libburn-0.6.0 or higher
- libisofs.so.6 , version libisofs-0.6.14 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.
@ -224,7 +237,7 @@ libburnia-project.org
By Mario Danic <mario.danic@gmail.com>,
Vreixo Formoso <metalpain2002@yahoo.es>
Thomas Schmitt <scdbackup@gmx.net>
Copyright (C) 2006-2008 Mario Danic, Vreixo Formoso, Thomas Schmitt.
Copyright (C) 2006-2009 Mario Danic, Vreixo Formoso, Thomas Schmitt.
libburnia-project.org is inspired by and in other components still containing
parts of old

File diff suppressed because it is too large Load Diff

View File

@ -1,7 +1,7 @@
#!/bin/sh
# compile_xorriso.sh
# Copyright 2005 - 2008 Thomas Schmitt, scdbackup@gmx.net, GPL
# Copyright 2005 - 2009 Thomas Schmitt, scdbackup@gmx.net, GPL
#
# Not intended for general use in production installations !
# Rather use: ./bootstrap ; ./configure ; make
@ -10,7 +10,7 @@
# It is to be executed in a common parent of the directories given with
# $isofs $isoburn $burn $xorr
isofs=./nglibisofs-develop/libisofs
isofs=./nglibisofs-develop/libisofs/libisofs_libisofs_la-
burn=./libburn-develop/libburn
isoburn=./libisoburn-develop/libisoburn
xorr=./libisoburn-develop/xorriso
@ -59,32 +59,32 @@ do
done
libisofs=
libisofs="$libisofs $isofs"/buffer.o
libisofs="$libisofs $isofs"/builder.o
libisofs="$libisofs $isofs"/data_source.o
libisofs="$libisofs $isofs"/ecma119.o
libisofs="$libisofs $isofs"/ecma119_tree.o
libisofs="$libisofs $isofs"/eltorito.o
libisofs="$libisofs $isofs"/filesrc.o
libisofs="$libisofs $isofs"/fs_image.o
libisofs="$libisofs $isofs"/fs_local.o
libisofs="$libisofs $isofs"/fsource.o
libisofs="$libisofs $isofs"/image.o
libisofs="$libisofs $isofs"/iso1999.o
libisofs="$libisofs $isofs"/joliet.o
libisofs="$libisofs $isofs"/libiso_msgs.o
libisofs="$libisofs $isofs"/messages.o
libisofs="$libisofs $isofs"/node.o
libisofs="$libisofs $isofs"/rockridge.o
libisofs="$libisofs $isofs"/rockridge_read.o
libisofs="$libisofs $isofs"/stream.o
libisofs="$libisofs $isofs"/tree.o
libisofs="$libisofs $isofs"/util.o
libisofs="$libisofs $isofs"/util_htable.o
libisofs="$libisofs $isofs"/util_rbtree.o
libisofs="$libisofs $isofs"/system_area.o
libisofs="$libisofs $isofs"/make_isohybrid_mbr.o
libisofs="$libisofs $isofs"buffer.o
libisofs="$libisofs $isofs"builder.o
libisofs="$libisofs $isofs"data_source.o
libisofs="$libisofs $isofs"ecma119.o
libisofs="$libisofs $isofs"ecma119_tree.o
libisofs="$libisofs $isofs"eltorito.o
libisofs="$libisofs $isofs"filesrc.o
libisofs="$libisofs $isofs"fs_image.o
libisofs="$libisofs $isofs"fs_local.o
libisofs="$libisofs $isofs"fsource.o
libisofs="$libisofs $isofs"image.o
libisofs="$libisofs $isofs"iso1999.o
libisofs="$libisofs $isofs"joliet.o
libisofs="$libisofs $isofs"libiso_msgs.o
libisofs="$libisofs $isofs"messages.o
libisofs="$libisofs $isofs"node.o
libisofs="$libisofs $isofs"rockridge.o
libisofs="$libisofs $isofs"rockridge_read.o
libisofs="$libisofs $isofs"stream.o
libisofs="$libisofs $isofs"tree.o
libisofs="$libisofs $isofs"util.o
libisofs="$libisofs $isofs"util_htable.o
libisofs="$libisofs $isofs"util_rbtree.o
libisofs="$libisofs $isofs"system_area.o
libisofs="$libisofs $isofs"make_isohybrid_mbr.o
libisofs="$libisofs $isofs"aaip_0_2.o
echo "Version timestamp : $(sed -e 's/#define Xorriso_timestamP "//' -e 's/"$//' "$xorr"/xorriso_timestamp.h)"
@ -92,7 +92,7 @@ date -u '+#define Xorriso_build_timestamP "%Y.%m.%d.%H%M%S"' >"$xorr"/xorriso_bu
echo "Build timestamp : $(sed -e 's/#define Xorriso_build_timestamP "//' -e 's/"$//' "$xorr"/xorriso_buildstamp.h)"
echo "compiling program $xorr/xorriso.c $static_opts $debug_opts $def_opts"
cc -I. -DXorriso_with_maiN -DXorriso_with_regeX $def_libreadline \
cc -I. -DXorriso_with_maiN $def_libreadline \
$warn_opts \
$static_opts \
$debug_opts \
@ -141,7 +141,8 @@ cc -I. -DXorriso_with_maiN -DXorriso_with_regeX $def_libreadline \
\
$link_libreadline \
\
-lpthread
-lpthread \
-lacl
ret=$?
if test "$ret" = 0

View File

@ -1,4 +1,4 @@
AC_INIT([xorriso], [0.2.9], [http://libburnia-project.org])
AC_INIT([xorriso], [0.3.4], [http://libburnia-project.org])
AC_PREREQ([2.50])
dnl AC_CONFIG_HEADER([config.h])
@ -8,15 +8,15 @@ AC_CANONICAL_TARGET
AM_INIT_AUTOMAKE([subdir-objects])
BURN_MAJOR_VERSION=0
BURN_MINOR_VERSION=5
BURN_MICRO_VERSION=7
BURN_MINOR_VERSION=6
BURN_MICRO_VERSION=3
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=12
LIBISOFS_MICRO_VERSION=15
AC_SUBST(LIBISOFS_MAJOR_VERSION)
AC_SUBST(LIBISOFS_MINOR_VERSION)
AC_SUBST(LIBISOFS_MICRO_VERSION)
@ -43,6 +43,10 @@ if test ! $ac_cv_func_fseeko; then
AC_ERROR([Libburn requires largefile support.])
fi
dnl If iconv(3) is in an extra libiconv, then it gets added to variable LIBS.
dnl If not, then no -liconv will be added.
AC_CHECK_LIB(iconv, iconv, , )
AC_PROG_LIBTOOL
AC_SUBST(LIBTOOL_DEPS)
LIBTOOL="$LIBTOOL --silent"
@ -112,6 +116,35 @@ fi
AC_SUBST(READLINE_DEF)
AC_ARG_ENABLE(libacl,
[ --enable-libacl Enable use of libacl by libisofs, default=yes],
, enable_libacl=yes)
if test x$enable_libacl = xyes; then
dnl Check whether there is libacl-devel and libacl-runtime.
dnl If not, erase this macro which would enable use of acl_to_text and others
LIBACL_DEF="-DLibisofs_with_aaip_acL"
dnl The empty yes case obviously causes -lacl to be linked
AC_CHECK_HEADER(sys/acl.h, AC_CHECK_LIB(acl, acl_to_text, , LIBACL_DEF= ), LIBACL_DEF= )
else
LIBACL_DEF=
fi
AC_SUBST(LIBACL_DEF)
AC_ARG_ENABLE(xattr,
[ --enable-xattr Enable use of xattr by libisofs, default=yes],
, enable_xattr=yes)
if test x$enable_xattr = xyes; then
dnl Check whether there is the header for Linux xattr.
dnl If not, erase this macro which would enable use of listxattr and others
XATTR_DEF="-DLibisofs_with_aaip_xattR"
AC_CHECK_HEADER(attr/xattr.h, AC_CHECK_LIB(c, listxattr, X= , XATTR_DEF= ), XATTR_DEF= )
else
XATTR_DEF=
fi
AC_SUBST(XATTR_DEF)
AC_CONFIG_FILES([
Makefile
version.h

View File

@ -51,7 +51,7 @@ then
-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, and El Torito:<\/b>/\&nbsp;<BR><b>Rock Ridge, POSIX, X\/Open, and El Torito:<\/b>/' \
-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>/' \

View File

@ -1,7 +1,7 @@
#!/bin/sh
# make_xorriso_standalone.sh
# Copyright 2008 Thomas Schmitt, scdbackup@gmx.net, GPL
# Copyright 2008 - 2009 Thomas Schmitt, scdbackup@gmx.net, GPL
#
# Not intended for general use in production installations !
#
@ -25,11 +25,11 @@
current_dir=$(pwd)
lone_dir="$current_dir"/"xorriso-standalone"
xorriso_rev=0.2.9
xorriso_rev=0.3.4
# For unstable uploads:
xorriso_pl=""
# xorriso_pl=""
# For stable releases:
# xorriso_pl=".pl00"
xorriso_pl=".pl00"
with_bootstrap_tarball=1
@ -145,9 +145,11 @@ copy_files \
create_dir "$lone_dir"/libisofs
create_dir "$lone_dir"/libisofs/filters
create_dir "$lone_dir"/doc
goto_dir "$current_dir"/nglibisofs-develop
copy_files libisofs/*.[ch] "$lone_dir"/libisofs
copy_files libisofs/filters/*.[ch] "$lone_dir"/libisofs/filters
copy_files doc/susp_aaip*.txt "$lone_dir"/doc
copy_files COPYRIGHT "$lone_dir"/libisofs
# To get a common version.h

View File

@ -2,7 +2,7 @@
.\" First parameter, NAME, should be all caps
.\" Second parameter, SECTION, should be 1-8, maybe w/ subsection
.\" other parameters are allowed: see man(7), man(1)
.TH XORRISO 1 "Nov 28, 2008"
.TH XORRISO 1 "Mar 01, 2009"
.\" Please adjust this date whenever revising the manpage.
.\"
.\" Some roff macros, for reference:
@ -35,7 +35,7 @@ optical media or to filesystem objects.
Vice versa xorriso is able to restore file objects from ISO 9660 filesystems.
.PP
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
formatter program nor an external burn program for CD, DVD or BD but rather
incorporates the libraries of libburnia-project.org .
.SS
.B Overview of features:
@ -59,6 +59,10 @@ Can perform multi-session tasks as emulation of mkisofs and cdrecord.
.br
Can restore files from ISO image to disk filesystem (see osirrox).
.br
Can record and restore ACL of disk files.
.br
Can issue commands to mount older sessions on Linux or FreeBSD.
.br
Can check media for damages and copy readable blocks to disk.
.br
Scans for optical drives, blanks re-useable optical media.
@ -79,7 +83,7 @@ Creating, Growing, Modifying, Blind Growing
.br
Libburn drives
.br
Rock Ridge, POSIX, X/Open, and El Torito
Rock Ridge, POSIX, X/Open, El Torito, ACL, xattr
.br
Command processing
.br
@ -294,14 +298,19 @@ Consider to bundle the authorized users in a group like old "floppy".
Filesystem objects of nearly any type can be addressed by prefix "stdio:" and
their path in the filesystem. E.g.:
.br
-dev stdio:/tmp/pseudo_drive
-dev stdio:/dev/sdc
.br
The default setting of -drive_class allows to address files outside the
/dev tree without that prefix. E.g.:
.br
-dev /tmp/pseudo_drive
.br
If path leads to a regular file or to a block device then the emulated drive
is random access readable and can be used for the method of growing if it
already contains a valid ISO 9660 image. Any other file type is not readable
via "stdio:" and can only be used as target for the method of modifying or
blind growing.
Non existing paths in existing directories are handled as empty regular files.
Non-existing paths in existing directories are handled as empty regular files.
.PP
A very special kind of pseudo drive are open file descriptors. They are
depicted by "stdio:/dev/fd/" and descriptor number (see man 2 open).
@ -324,14 +333,20 @@ If stdout is used as drive, then -use_readline is permanently disabled.
Use of backdoors will cause severe memory and/or tty corruption.
.PP
Be aware that especially the superuser can write into any accessible file or
device by using its path with the "stdio:" prefix. Addresses without prefix
"stdio:" will only work if they lead to a MMC drive.
device by using its path with the "stdio:" prefix. By default any address
in the /dev tree without prefix "stdio:" will work only if it leads to a MMC
drive.
.br
One may use option
.B -ban_stdio_write
to surely prevent this risk and to allow only MMC drives.
.br
One may prepend "mmc:" to a path to surely disallow any automatic "stdio:".
.br
By option -drive_class one may ban certain paths or allow access without
prefix "stdio:" to other paths.
.SS
.B Rock Ridge, POSIX, X/Open, and El Torito:
.B Rock Ridge, POSIX, X/Open, El Torito, ACL, xattr:
.br
.B Rock Ridge
is the name of a set of additional informations which enhance
@ -366,10 +381,43 @@ bears the isohybrid signature of ISOLINUX 3.72 or later. It will occupy the
first 512 bytes of the emerging ISO image and enable booting from media which
appear as hard disk rather than as CDROM. An MBR does not hamper CDROM booting.
The MBR of a follow-up session can get in effect only on overwriteable media.
.PP
.B ACL
are an advanced way of controlling access permissions to file objects. Neither
ISO 9660 nor Rock Ridge specify a way to record ACLs. So libisofs has
introduced a standard conformant extension named AAIP for that purpose.
It uses this extension if enabled by option
.B -acl.
.br
AAIP enhanced images are supposed to be mountable normally, but one cannot
expect that the mounted filesystem will show and respect the eventual ACLs.
For now, only xorriso is able to retrieve those ACLs. It can bring them into
effect when files get restored to an ACL enabled file system or it can
print them in a format suitable for tool setfacl.
.br
Files with ACL show as group permissions the setting of entry "mask::" if
that entry exists. Nevertheless the non-listed group members get handled
according to entry "group::". xorriso brings "group::" into effect before
eventually removing the ACL from a file.
.PP
.B xattr
are pairs of name and value which can be attached to file objects. AAIP is
able to represent them and xorriso allows to record and restore pairs which
have names out of the user namespace. I.e. those which begin with "user.",
like "user.x" or "user.whatever". Name has to be a 0 terminated string.
Value may be any array of bytes which does not exceed the size of 4095 bytes.
xattr processing happens only if it is enabled by option
.B -xattr.
.br
As with ACL, currently only xorriso is able to retrieve xattr from AAIP
enhanced images and to restore them to xattr capable file systems.
.SS
.B Command processing:
.br
Commands are either actions or settings. They consist of a command word,
Commands are either actions which happen immediately or settings which
influence following actions. So their sequence does matter.
.br
Commands consist of a command word,
followed by zero or more parameter words. If the list of parameter words
is of variable length (indicated by "[...]" or "[***]") then it has to be
terminated by either the \fBlist delimiter\fR, or the end of argument list,
@ -516,6 +564,41 @@ apply. See above paragraph "Libburn drives".
An empty address string "" gives up the current output drive
without aquiring a new one. No writing is possible without an output drive.
.TP
\fB\-drive_class\fR "harmless"|"banned"|"caution"|"clear_list" disk_pattern
Add a drive path pattern to one of the safety lists or make those lists empty.
There are three lists defined which get tested in the following sequence:
.br
If a drive address path matches the "harmless" list then the drive will be
accepted. If it is not a MMC device then the prefix "stdio:" will be prepended
automatically. This list is empty by default.
.br
Else if the path matches the "banned" list then the drive will not be
accepted by xorriso but rather lead to a FAILURE event. This list is empty by
default.
.br
Else if the path matches the "caution" list and if it is not a MMC device,
then its address must have the prefix "stdio:" or it will be rejected.
This list has by default one entry: "/dev".
.br
If a drive path matches no list then it is considered "harmless". By default
these are all paths which do not begin with directory "/dev".
.br
A path matches a list if one of its parent paths or itself matches a list
entry. An eventual address prefix "stdio:" or "mmc:" will be ignored when
testing for matches.
.br
By pseudo-class "clear_list" and pseudo-patterns "banned", "caution",
"harmless", or "all", the lists may be made empty.
.br
E.g.: -drive_class clear_list banned
.br
One will normally define the -drive_class lists in one of the xorriso
Startup Files.
.br
Note: This is not a security feature but rather a bumper for the superuser to
prevent inadverted mishaps. For reliably blocking access to a device file you
have to deny its rw-permissions in the filesystem.
.TP
\fB\-grow_blindly\fR "off"|predicted_nwa
If predicted_nwa is a non-negative number then perform blind growing rather
than modifying if -indev and -outdev are set to different drives.
@ -547,7 +630,8 @@ address. The following entities are defined:
.br
"lba" or "sbsector" with a number as of a line "ISO ...", column "sbsector".
.br
"volid" with a text as of a line "ISO ...", column "Volume Id".
"volid" with a search pattern for a text as of a line "ISO ...",
column "Volume Id".
.br
Adressing a non-existing entity or one which does not represent an ISO
image will either abandon -indev or at least lead to a blank image.
@ -558,6 +642,14 @@ until the next -dev or -indev. After the image has been loaded once, the
setting is valid for -rollback until next -dev or -indev, where it
will be reset to "auto".
.TP
\fB\-assert_volid\fR pattern severity
Refuse to load ISO images with volume ids which do not match the given
search pattern. When refusing an image, give up the input drive and issue
an event of the given severity. An empty search pattern accepts any image.
.br
This option does not hamper the creation of an empty image from blank
input media and does not discard an already loaded image.
.TP
\fB\-in_charset\fR character_set_name
Set the character set from which to convert file names when loading an
image. This has eventually to be done before specifying -dev , -indev or
@ -565,6 +657,37 @@ image. This has eventually to be done before specifying -dev , -indev or
When loading the written image after -commit the setting of -out_charset
will be copied to -in_charset.
.TP
\fB\-acl\fR "on"|"off"
Enable or disable processing of ACLs.
If enabled, then xorriso will obtain ACLs from disk file objects,
store ACLs in the ISO image using the libisofs specific AAIP format,
load AAIP data from ISO images, test ACL during file comparison,
and restore ACLs to disk files when extracting them from ISO images.
See also options -getfacl, -setfacl.
.TP
\fB\-xattr\fR "on"|"off"
Enable or disable processing of xattr attributes in user namespace.
If enabled, then xorriso will handle xattr similar to ACL.
See also options -getfattr, -setfattr and above paragraph about xattr.
.TP
\fB\-disk_dev_ino\fR "on"|"ino_only"|"off"
Enable or disable processing of recorded file identification numbers
(dev_t and ino_t). They are eventually stored as xattr "isofs.di" and allow
to substantially accelerate file comparison.
.br
If device numbers and inode numbers of the disk filesystems are persistent
and if no irregular alterations of timestamps or system clock happen,
then potential content changes can be detected without reading that content.
File content change is assumed if any of mtime, ctime, device number or inode
number have changed.
.br
Mode "ino_only" replaces the precondition that device numbers are stable by the
precondition that mount points in the compared tree always lead to the
same filesystems. Use this if mode "on" always sees all files changed.
.br
The speed advantage appears only if the loaded session was produced with
-disk_dev_ino "on" too.
.TP
\fB\-rom_toc_scan\fR "on"|"off"[:"emul_on"|"emul_off"]
Read-only drives do not tell the actual media type but show any media as
ROM (e.g. as DVD-ROM). The session history of MMC multi-session media might
@ -868,6 +991,86 @@ For octal numbers see man 2 stat.
\fB\-chmod_r\fR mode iso_rr_path [***]
Like -chmod but affecting all files below eventual directories.
.TP
\fB\-setfacl\fR acl_text iso_rr_path [***]
Attach the given ACL to the given iso_rr_paths after deleting their eventually
existing ACLs.
If acl_text is empty, or contains the text "clear" or the text
"--remove-all", then the existing ACLs will be removed and no new ones will be
attached. Any other content of acl_text will be interpreted as a list of
ACL entries. It may be in the long multi-line format as put out by -getfacl
but may also be abbreviated as follows:
.br
ACL entries are separated by comma or newline. If an entry is empty text or
begins with "#" then it will be ignored. A valid entry has to begin
by a letter out of {ugom} for "user", "group", "other", "mask". It has to
contain two colons ":". A non-empty text between those ":" gives a user id
resp. group id. After the second ":" there may be letters out of {rwx- #}.
The first three give read, write resp. execute permission.
Letters "-", " " and TAB are ignored. "#" causes the rest of the entry to
be ignored. Letter "X" or any other letters are not supported. Examples:
.br
g:toolies:rw,u:lisa:rw,u:1001:rw,u::wr,g::r,o::r,m::rw
.br
group:toolies:rw-,user::rw-,group::r--,other::r--,mask::rw-
.br
A valid entry may be prefixed by "d", some following characters and ":".
This indicates that the entry goes to the "default" ACL rather than to the
"access" ACL. Example:
.br
u::rwx,g::rx,o::,d:u::rwx,d:g::rx,d:o::,d:u:lisa:rwx,d:m::rwx
.TP
\fB\-setfacl_r\fR acl_text iso_rr_path [***]
Like -setfacl but affecting all files below eventual directories.
.TP
\fB\-setfacl_list\fR disk_path
Read the output of -getfacl_r or shell command getfacl -R and apply it to the
iso_rr_paths as given in lines beginning with "# file:". This will change
ownership, group and ACL of the given files.
If disk_path is "-" then lines are read from standard input. Line "@" ends the
list, "@@@" aborts without changing the pending iso_rr_path.
.br
Since -getfacl and getfacl -R strip leading "/" from file paths, the setting of
-cd does always matter.
.TP
\fB\-setfattr\fR [-]name value iso_rr_path [***]
Attach the given xattr pair of name and value to the given iso_rr_paths.
If the given name is prefixed by "-", then the pair with that name gets
removed from the xattr list. If name is "--remove-all" then the whole xattr
list of the given iso_rr_paths is deleted. In case of deletion, value must
be an empty text.
.br
Only names from the user namespace are allowed. I.e. a name has to begin with
"user.", like "user.x" or "user.whatever".
.br
Values and names undergo the normal input processing of xorriso.
See also option -backslash_codes. Other than with option -setfattr_list,
the byte value 0 cannot be expressed via -setfattr.
.TP
\fB\-setfattr_r\fR [-]name value iso_rr_path [***]
Like -setfattr but affecting all files below eventual directories.
.TP
\fB\-setfattr_list\fR disk_path
Read the output of -getfattr_r or shell command getfattr -Rd and apply it to
the iso_rr_paths as given in lines beginning with "# file:". All previously
existing user space xattr of the given iso_rr_paths will be deleted.
If disk_path is "-" then lines are read from standard input.
.br
Since -getfattr and getfattr -Rd strip leading "/" from file paths, the setting
of -cd does always matter.
.br
Empty input lines and lines which begin by "#" will be ignored
(except "# file:"). Line "@" ends the list, "@@@" aborts without changing the
pending iso_rr_path. Other input lines must have the form
.br
name="value"
.br
Name must be from user namespace. I.e. user.xyz where xyz should consist of
printable characters only. The separator "=" is not allowed in names.
Value may contain any kind of bytes. It must be in quotes. Trailing
whitespace after the end quote will be ignored. Non-printables bytes and quotes
must be represented as \\XYZ by their octal ASCII code XYZ.
Use code \\000 for 0-bytes.
.TP
\fB\-alter_date\fR type timestring iso_rr_path [***]
Alter the date entries of a file in the ISO image. type is
one of "a", "m", "b" for access time, modification time,
@ -939,6 +1142,20 @@ matches only files which use data blocks outside the areas marked as damaged.
matches only files which use data blocks within the range of start_lba
and start_lba+block_count-1.
.br
-has_acl , -has_no_acl
.br
match files which have resp. have not a non-trivial ACL.
.br
-has_xattr , -has_no_xattr
.br
match files which have resp. have not xattr name-value pairs
from user namespace.
.br
-has_aaip , -has_no_aaip
.br
match files which have ACL or any xattr resp. have neither of them.
.br
Default action is "echo",
i.e. to print the address of the found file. Other actions are certain
xorriso commands which get performed on the found files. These commands
@ -1016,6 +1233,31 @@ E.g.:
.br
-find / -lba_range 302000 50000 -exec report_lba
.br
"getfacl" prints access permissions in ACL text form to the result channel.
.br
E.g.:
.br
-find / -has_acl -exec getfacl
.br
"setfacl" attaches ACLs after removing eventually exiting ones. The new
ACL is given in text form as defined with option -setfacl.
.br
E.g.:
.br
-find /workgroup -exec setfacl u:lisa:rw,u::rw,g::r,o::-,m::rw
.br
"getfattr" prints eventual xattr name-value pairs to the result channel.
.br
E.g.:
.br
-find / -has_xattr -exec getfattr
.br
"setfattr" sets or deletes xattr name value pairs.
.br
E.g.:
.br
-find / -has_xattr -exec setfattr --remove-all ''
.br
"find" performs another run of -find on the matching file address. It accepts
the same params as -find, except iso_rr_path.
E.g.:
@ -1089,7 +1331,9 @@ Defined modes are:
.br
"as_needed" cares for used CD-RW, DVD-RW and for used overwriteable media
by applying -blank "fast". It applies -format "full" to yet unformatted
DVD-RAM or BD-RE. Other media or states are gracefully ignored.
DVD-RAM and BD-RE. Other media in blank state are gracefully ignored.
Media which cannot be made ready for writing from scratch cause a FAILURE
event.
.br
"fast" and "all" make CD-RW and unformatted DVD-RW re-usable,
or invalidate overwriteable ISO images.
@ -1107,16 +1351,16 @@ worse occured.
.TP
\fB\-format\fR mode
Convert unformatted DVD-RW into overwriteable ones, "de-ice" DVD+RW, format
newly purchased BD-RE, re-format DVD-RAM or BD-RE.
newly purchased BD-RE or BD-R, re-format DVD-RAM or BD-RE.
.br
Defined modes are:
.br
as_needed, full, fast, by_index_<num>, fast_by_index_<num>
.br
"as_needed" formats yet unformatted DVD-RW, DVD-RAM, BD-RE. Other media
are left untouched.
"as_needed" formats yet unformatted DVD-RW, DVD-RAM, BD-RE, or blank
unformatted BD-R. Other media are left untouched.
.br
"full" (re-)formats DVD-RW, DVD+RW, DVD-RAM, BD-RE.
"full" (re-)formats DVD-RW, DVD+RW, DVD-RAM, BD-RE, or blank unformatted BD-R.
.br
"fast" does the same as "full" but tries to be quicker.
.br
@ -1126,6 +1370,12 @@ mode word. E.g: "by_index_3".
.br
"fast_by_index_" does the same as "by_index_" but tries to be quicker.
.br
"by_size_" selects a format out of the descriptor list which provides at
least the given size. That size is to be appended to the mode word.
E.g: "by_size_4100m". This applies to media with Defect Management.
.br
"fast_by_size_" does the same as "by_size_" but tries to be quicker.
.br
The formatting action has no effect on media if -dummy is activated.
.br
Formatting is normally needed only once during the lifetime of a media,
@ -1133,10 +1383,15 @@ if ever. But it is a reason for re-formatting if:
.br
DVD-RW was deformatted by -blank,
.br
DVD+RW has read failures (re-formatting might help or not),
DVD+RW has read failures (re-format before next write),
.br
DVD-RAM or BD-RE shall change their amount of defect reserve.
.br
BD-R may be written unformatted or may be formatted before first use.
Formatting activates Defect Management which tries to catch and repair
bad spots on media during the write process at the expense of half speed
even with flawless media.
.br
The progress reports issued by some drives while formatting are
quite unrealistic. Do not conclude success or failure from the
reported percentages. Formatting was successful if no SORRY event
@ -1151,9 +1406,9 @@ and the same size in MiB.
MMC format codes are manifold. Most important are:
"00h" general formatting, "01h" increases reserve space for DVD-RAM,
"26h" for DVD+RW, "30h" for BD-RE with reserve space,
"31h" for BD-RE without reserve space.
"31h" for BD-RE without reserve space, "32h" for BD-R.
.br
Smaller format size with DVD-RAM or BD-RE means more reserve space.
Smaller format size with DVD-RAM, BD-RE, or BD-R means more reserve space.
.TP
.B Settings for data insertion:
.TP
@ -1330,6 +1585,7 @@ permissible.
.B Settings for result writing:
.TP
Rock Ridge info will be generated by the program unconditionally.
ACLs will be written according to the setting of option -acl.
.TP
\fB\-joliet\fR "on"|"off"
If enabled by "on", generate Joliet info additional to Rock Ridge info.
@ -1371,6 +1627,10 @@ system does not recognize Rock Ridge 1.12 signature).
"rec_mtime" record with ISO files the disk file's mtime and not the
creation time of the image.
.br
"aaip_susp_1_10" allows AAIP to be written as inofficial extension of RRIP
rather than as official extension under SUSP-1.12. Try this if a reader program
dislikes the official form.
.br
Default setting is "clear:deep_paths:long_paths:always_gmt".
.br
Note: The term "ISO file" means the plain ISO 9660 names wnd attributes
@ -1436,12 +1696,19 @@ MMC drives usually activate their own idea of speed and take
the speed value given by the burn program only as upper limit
for their own decision.
.TP
\fB\-stream_recording\fR "on"|"off"
Setting "on" tries to circumvent the management of defects on DVD-RAM and
BD-RE. Defect management keeps partly damaged media usable. But it reduces
\fB\-stream_recording\fR "on"|"off"|"full"|"data"|number
Setting "on" tries to circumvent the management of defects on DVD-RAM, BD-RE,
or BD-R. Defect management keeps partly damaged media usable. But it reduces
write speed to half nominal speed even if the media is in perfect shape.
For the case of flawless media, one may use -stream_recording "on" to get
full speed.
.br
"full" tries full speed with all write operations, whereas "on" does this
only above byte address 32s. One may give a number of at least 16s
in order to set an own address limit.
.br
"data" causes full speed to start when superblock and directory entries are
written and writing of file content blocks begins.
.TP
\fB\-dummy\fR "on"|"off"
If "on" then simulate burning or refuse with FAILURE event if
@ -1791,6 +2058,44 @@ to be the most recent real session then.
Some read-only drives and media show no usable session history at all.
Eventually option -rom_toc_scan might help.
.TP
\fB\-mount_cmd\fR drive entity id path
Emit an appropriate command line for mounting the ISO session
indicated by drive, entity and id.
The result will be different on Linux and on FreeBSD.
.br
drive can be "indev" or "outdev" to indicate already aquired drives,
or it can be the path of a not yet acquired drive.
Prefix "stdio:" for non-MMC drives is not mandatory.
.br
entity must be either "sbsector" , "track" , "session" , "volid"
or "auto". See also option -load.
.br
id gives the superblock sector address, the track number, the session number,
or a search pattern for the volume id respectively.
.br
path will be used as mount point and must already exist as a directory.
.br
The command gets printed to the result channel. See option -mount
for direct execution of this command.
.TP
\fB\-session_string\fR drive entity id format
Print to the result channel a text which gets composed according to
format and the parameters of the addressed session.
.br
Formats "linux:"path or "freebsd:"path produce the output of -mount_cmd
for the given operating systems.
.br
In other texts xorriso will substitute the following parameter names.
An optional prefix "string:" will be removed.
.br
"%device%" will be substituted by the mountable device path of the drive
address.
.br
"%sbsector%" will be substituted by the session start sector.
.br
"%track%", "%session%", "%volid%" will be substituted by track number,
session number, resp. volume id of the depicted session.
.TP
\fB\-print_size\fR
Print the foreseeable consumption of 2048 byte blocks
by next -commit. This can last a while as a -commit gets
@ -1841,11 +2146,11 @@ This resembles shell command ls -d.
.TP
\fB\-lsl\fR iso_rr_pattern [***]
Like -ls but also list some of the file attributes.
Output format resembles shell command ls -ln.
The output format resembles shell command ls -ln.
.TP
\fB\-lsdl\fR iso_rr_pattern [***]
Like -lsd but also list some of the file attributes.
Output format resembles shell command ls -dln.
The output format resembles shell command ls -dln.
.TP
\fB\-lsx\fR disk_pattern [***]
List files on local filesystem which match shell patterns. Patterns which do
@ -1868,6 +2173,24 @@ Output format resembles shell command ls -ln.
Like -lsdx but also listing some of the file attributes.
Output format resembles shell command ls -dln.
.TP
\fB\-getfacl\fR iso_rr_pattern [***]
Print the access permissions of the given files in the ISO image using the
format of shell command getfacl. If a file has no ACL then it gets fabricated
from the -chmod settings. A file may have a real ACL if it was introduced into
the ISO image while option -acl was set to "on".
.TP
\fB\-getfacl_r\fR iso_rr_pattern [***]
Like -gefacl but listing recursively the whole file trees underneath eventual
directories.
.TP
\fB\-getfattr\fR iso_rr_pattern [***]
Print the xattr of the given files in the ISO image.
If a file has no such xattr then noting is printed for it.
.TP
\fB\-getfattr_r\fR iso_rr_pattern [***]
Like -gefattr but listing recursively the whole file trees underneath eventual
directories.
.TP
\fB\-du\fR iso_rr_pattern [***]
Recursively list size of directories and files in the ISO image
which match one of the patterns.
@ -2096,7 +2419,7 @@ handled like any other ISO image directory.
Option "auto_chmod_off" is default. If "auto_chmod_on" is set then access
restrictions for disk directories get circumvented if those directories
are owned by the effective user who runs xorriso. This happens by temporarily
granting rwx permission to the owner. It will not work with ACL restrictions.
granting rwx permission to the owner.
.TP
\fB\-extract\fR iso_rr_path disk_path
Restore the file objects at and underneath iso_rr_path to their corresponding
@ -2168,6 +2491,13 @@ Read the content of a ISO data file and write it into a data file on disk
beginning at the byte_offset. Write at most byte_count bytes.
This is the inverse of option -cut_out.
.TP
\fB\-mount\fR drive entity id path
Produce the same line as -mount_cmd and then execute it as external program run
after giving up the depicted drive.
This demands -osirrox to be enabled and normally will succeed only for the
superuser. For safety reasons the mount program is only executed if it is
reachable as /bin/mount or /sbin/mount.
.TP
.B Command compatibility emulations:
.PP
Writing of ISO 9660 on CD is traditionally done by program mkisofs
@ -2178,7 +2508,7 @@ of commands which in said programs trigger comparable actions.
.TP
\fB\-as\fR personality option [options] --
.br
Perform its variable length option list as sparse emulation of the program
Perform the variable length option list as sparse emulation of the program
depicted by the personality word.
.br
@ -2188,8 +2518,8 @@ Personality "\fBmkisofs\fR" accepts the options listed with:
.br
Among them: -R (always on), -J, -o, -M, -C, -path-list, -m, -exclude-list,
-f, -print-size, -pad, -no-pad, -V, -v, -version, -graft-points,
-no-emul-boot, -b, -c, -boot-info-table, -boot-load-size,
pathspecs as with xorriso -add.
-no-emul-boot, -b, -c, -boot-info-table, -boot-load-size, -input-charset,
-output-charset, pathspecs as with xorriso -add.
A lot of options are not supported and lead to failure of the mkisofs
emulation. Some are ignored, but better do not rely on this tolerance.
.br
@ -2215,8 +2545,9 @@ Writing to stdout is possible only if -as "mkisofs" was among the start
arguments or if other start arguments pointed the output drive to
standard output.
.br
Not original mkisofs options are --quoted_path_list (see -quoted_path_list)
and isolinux_mbr= (see -boot_image isolinux isohybrid=).
Not original mkisofs options are --quoted_path_list (see -quoted_path_list),
isolinux_mbr= (see -boot_image isolinux isohybrid=), --acl (see -acl "on"),
--xattr (see -xattr "on").
.br
Personalites "\fBxorrisofs\fR", "\fBgenisoimage\fR", and "\fBgenisofs\fR"
are aliases for "mkisofs".
@ -2499,14 +2830,27 @@ which shall be able to use the drives with xorriso.
2 -dev '/dev/sr2' rwrw-- : 'PHILIPS ' 'SPD3300L'
.SS
.B Blank media and compose a new ISO image as batch run
Aquire drive /dev/sr2, blank media resp. invalidate existing ISO image.
Add the files from hard disk directories /home/me/sounds and /pictures.
Aquire drive /dev/sr2, make media ready for writing a new image,
fill the image with the files from hard disk directories /home/me/sounds
and /home/me/pictures.
.br
Because no -dialog "on" is given, the program will then end by writing the
session to media.
.br
\fB$\fR xorriso -outdev /dev/sr2 \\
.br
-blank as_needed \\
.br
-map /home/me/sounds /sounds \\
.br
-map /home/me/pictures /pictures
.br
.br
The ISO image may be shaped in a more elaborate way like the following:
Omit some unwanted stuff by removing it from the image directory tree.
Re-add some wanted stuff.
.br
Because no -dialog "on" is given, the program will then end by committing the
session to media.
.br
\fB$\fR cd /home/me
.br
\fB$\fR xorriso -outdev /dev/sr2 \\
@ -2653,11 +2997,22 @@ will be made terminal-safe by option -backslash_codes.
.B Operate on storage facilities other than optical drives
Full read-write operation is possible with regular files and block devices:
.br
\fB$\fR xorriso -dev stdio:/tmp/regular_file ...
\fB$\fR xorriso -dev /tmp/regular_file ...
.br
Paths underneath /dev normally need prefix "stdio:"
.br
\fB$\fR xorriso -dev stdio:/dev/sdb ...
.br
If /dev/sdb is to be used frequently and /dev/sda is the system disk,
then consider to place the following lines in a xorriso Startup File.
They allow to use /dev/sdb without prefix and protect your disk from xorriso:
.br
-drive_class banned /dev/sda*
-drive_class harmless /dev/sdb
.br
Other writeable file types are supported write-only:
.br
\fB$\fR xorriso -outdev stdio:/tmp/named_pipe ...
\fB$\fR xorriso -outdev /tmp/named_pipe ...
.br
Among the write-only drives is standard output:
.br
@ -2760,16 +3115,23 @@ Seconds since Jan 1 1970:
.B =1194531416
.SS
.B Incremental backup of a few directory trees
This does the following to directories /open_source_project and /personal_mail
in the ISO image:
create them if not existing yet,
compare them with their disk counterparts,
add disk file objects which are missing yet,
overwrite those which are different on disk,
and delete those which have vanished on disk.
But do not add or overwrite files matching *.o, *.swp.
This changes the directory trees /open_source_project and /personal_mail
in the ISO image so that they become exact copies of their disk counterparts.
ISO file objects get created, deleted or get their attributes adjusted
accordingly.
.br
\fB$\fR xorriso -dev /dev/sr0 \\
ACL and xattr will be recorded. Accelerated comparison is enabled at the
expense of potentially larger backup size.
Only media with the expected volume id or blank media are accepted.
Files with names matching *.o or *.swp get excluded explicitely.
.br
\fB$\fR xorriso \\
.br
-acl on -xattr on -disk_dev_ino on \\
.br
-assert_volid 'PROJECTS_MAIL_*' FATAL \\
.br
-dev /dev/sr0 \\
.br
-volid PROJECTS_MAIL_"$(date '+%Y_%m_%d_%H%M%S')" \\
.br
@ -2788,15 +3150,27 @@ the old one.
.br
This makes sense if the full backup leaves substantial remaining capacity
on media and if the expected changes are much smaller than the full backup.
An update run will probably save no time but last longer than a full backup.
.br
Option -disk_dev_ino depends on stable device and inode numbers on disk.
Without it, an update run will probably save no time but last longer than
a full backup. Such a slow run might produce a smaller backup, though.
.br
With \fBmount\fR option -o \fB"sbsector="\fR on Linux resp. \fB-s\fR on FreeBSD
With \fBmount\fR option \fB-o "sbsector="\fR on Linux resp. \fB-s\fR on FreeBSD
it is possible to access the session trees which represent the older backup
versions. With CD media, Linux mount accepts session numbers directly by
its option "session=".
.br
Multi-session media and most overwriteable media written by xorriso can tell
the sbsectors of their sessions by xorriso option -toc.
Used after -commit the following option prints the matching mount command for
the newly written session (here for mount point /mnt):
.br
-mount_cmd "indev" "auto" "auto" /mnt
.br
Options -mount_cmd and -mount are also able to produce the mount commands for
older sessions in the table-of-content. E.g. as superuser:
.br
\fB#\fR osirrox -mount /dev/sr0 "volid" '*2008_12_05*' /mnt
.br
Sessions on multi-session media are separated by several MB of unused blocks.
So with small sessions the payload capacity can become substantially lower
@ -2821,7 +3195,9 @@ First check which backup sessions are on the media:
Then load the desired session and copy the file trees to disk.
Avoid to eventually create /home/thomas/restored without rwx-permission.
.br
\fB$\fR xorriso -load volid PROJECTS_MAIL_2008_06_19_205956 \\
\fB$\fR xorriso -acl on -xattr on \\
.br
-load volid 'PROJECTS_MAIL_2008_06_19*' \\
.br
-indev /dev/sr0 \\
.br
@ -2833,7 +3209,7 @@ Avoid to eventually create /home/thomas/restored without rwx-permission.
.br
/home/thomas/restored/open_source_projects \\
.br
-extract /personal_mail /home/thomas/restored/personal_mail
-extract /personal_mail /home/thomas/restored/personal_mail \\
.br
-rollback_end
.SS
@ -2895,6 +3271,12 @@ Other programs which burn sessions to optical media
.BR cdrecord(1),
.BR wodim(1),
.BR cdrskin(1)
.TP
ACL and xattr
.BR getfacl(1),
.BR setfacl(1),
.BR getfattr(1),
.BR setfattr(1)
.br
.SH AUTHOR
Thomas Schmitt <scdbackup@gmx.net>

File diff suppressed because it is too large Load Diff

View File

@ -2,7 +2,7 @@
/* Command line oriented batch and dialog tool which creates, loads,
manipulates and burns ISO 9660 filesystem images.
Copyright 2007-2008 Thomas Schmitt, <scdbackup@gmx.net>
Copyright 2007-2009 Thomas Schmitt, <scdbackup@gmx.net>
Provided under GPL version 2.
@ -263,6 +263,11 @@ int Xorriso_lst_destroy_all(struct Xorriso_lsT **lstring, int flag);
/* Option -abort_on */
int Xorriso_option_abort_on(struct XorrisO *xorriso, char *severity, int flag);
/* Option -acl "on"|"off" */
int Xorriso_option_acl(struct XorrisO *xorriso, char *mode, int flag);
/* Option -add */
/* @param flag bit0=do not report the added item
bit1=do not reset pacifier, no final pacifier message
@ -293,6 +298,10 @@ int Xorriso_option_application_id(struct XorrisO *xorriso, char *name,
int Xorriso_option_as(struct XorrisO *xorriso, int argc, char **argv,
int *idx, int flag);
/* Option -assert_volid */
int Xorriso_option_assert_volid(struct XorrisO *xorriso, char *pattern,
char *severity, int flag);
/* Option -backslash_codes */
int Xorriso_option_backslash_codes(struct XorrisO *xorriso, char *mode,
int flag);
@ -402,9 +411,16 @@ int Xorriso_option_devices(struct XorrisO *xorriso, int flag);
/* Option -dialog "on"|"off" */
int Xorriso_option_dialog(struct XorrisO *xorriso, char *mode, int flag);
/* Option -disk_dev_ino "on"|"off" */
int Xorriso_option_disk_dev_ino(struct XorrisO *xorriso, char *mode, int flag);
/* Option -disk_pattern "on"|"ls"|"off" */
int Xorriso_option_disk_pattern(struct XorrisO *xorriso, char *mode, int flag);
/* Option -drive_class */
int Xorriso_option_drive_class(struct XorrisO *xorriso,
char *d_class, char *pattern, int flag);
/* Option -dummy "on"|"off" */
int Xorriso_option_dummy(struct XorrisO *xorriso, char *mode, int flag);
@ -453,6 +469,12 @@ int Xorriso_option_find(struct XorrisO *xorriso, int argc, char **argv,
/* Option -fs */
int Xorriso_option_fs(struct XorrisO *xorriso, char *size, int flag);
/* Option -getfacl alias -getfacli, -getfacl_r alias -getfacl_ri */
/* @param flag bit0=recursive -getfacl_r
*/
int Xorriso_option_getfacli(struct XorrisO *xorriso,
int argc, char **argv, int *idx, int flag);
/* Option -gid */
int Xorriso_option_gid(struct XorrisO *xorriso, char *gid, int flag);
@ -533,6 +555,13 @@ int Xorriso_option_mark(struct XorrisO *xorriso, char *mark, int flag);
int Xorriso_option_mkdiri(struct XorrisO *xorriso, int argc, char **argv,
int *idx, int flag);
/* Option -mount */
/* @param bit0= print mount command to result channel rather than performing it
*/
int Xorriso_option_mount(struct XorrisO *xorriso, char *dev, char *adr_mode,
char *adr, char *cmd, int flag);
/* Option -mv alias -mvi */
int Xorriso_option_mvi(struct XorrisO *xorriso, int argc, char **argv,
int *idx, int flag);
@ -644,6 +673,26 @@ int Xorriso_option_rom_toc_scan(struct XorrisO *xorriso, char *mode,
/* Option -session_log */
int Xorriso_option_session_log(struct XorrisO *xorriso, char *path, int flag);
/* Option -setfacl_list alias -setfacl_listi */
int Xorriso_option_setfacl_listi(struct XorrisO *xorriso, char *disk_path,
int flag);
/* Option -setfacl alias -setfacli , -setfacl_r alias -setfacl_ri */
/* @param flag bit0=recursive -setfacl_r
*/
int Xorriso_option_setfacli(struct XorrisO *xorriso, char *acl_text,
int argc, char **argv, int *idx, int flag);
/* Options -setfattr alias -setfattri, -setfattr_r alias -setfattr_ri */
/* @param flag bit0=recursive -setfattr_r
*/
int Xorriso_option_setfattri(struct XorrisO *xorriso, char *name, char *value,
int argc, char **argv, int *idx, int flag);
/* Option -setfattr_list alias -setfattr_listi */
int Xorriso_option_setfattr_listi(struct XorrisO *xorriso, char *path,
int flag);
/* Option -speed */
int Xorriso_option_speed(struct XorrisO *xorriso, char *speed, int flag);
@ -692,6 +741,8 @@ int Xorriso_option_version(struct XorrisO *xorriso, int flag);
/* Option -volid */
int Xorriso_option_volid(struct XorrisO *xorriso, char *volid, int flag);
/* Option -xattr "on"|"off" */
int Xorriso_option_xattr(struct XorrisO *xorriso, char *mode, int flag);
#endif /* Xorriso_includeD */

View File

@ -2,7 +2,7 @@
<HEAD>
<META NAME="description" CONTENT="xorriso, creates, loads, manipulates and writes ISO 9660 filesystem images with Rock Ridge extensions">
<META NAME="keywords" CONTENT="xorriso, libburn, libburnia, burn, CD, DVD, ISO, ISO 9660, RockRidge, Rock Ridge, Linux, FreeBSD, recording, burning, CD-R, CD-RW, DVD-R, DVD-RW, DVD+RW, DVD+R, DVD+R DL, BD-RE, scdbackup">
<META NAME="keywords" CONTENT="xorriso, libburn, libburnia, burn, CD, DVD, ISO, ISO 9660, RockRidge, Rock Ridge, Linux, FreeBSD, recording, burning, CD-R, CD-RW, DVD-R, DVD-RW, DVD+RW, DVD+R, DVD+R DL, BD-RE, BD-R, scdbackup">
<META NAME="robots" CONTENT="follow">
<TITLE>xorriso homepage english</TITLE>
</HEAD>
@ -50,10 +50,14 @@ and to MMC-5 for DVD or BD).
<DD>With kernel 2.6 the drive should not be under ide-scsi.</DD>
<DT>or FreeBSD (with libc, of course) :</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>libpthread</DT>
<DD>is supposed to be a standard system component.</DD>
<DT>libreadline and libreadline-dev</DT>
<DD>are optional and eventually make dialog more convenient.</DD>
<DT>libacl and libacl-devel</DT>
<DD>are optional and eventually allow on Linux to get and set ACLs.</DD>
</DL>
</P>
@ -62,15 +66,16 @@ and to MMC-5 for DVD or BD).
GPL software included:<BR>
</H2>
<DL>
<DT>libburn-0.5.5</DT>
<DD>reads and writes data from and to CD, DVD, BD-RE.</DD>
<DT>libburn-0.6.3</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.10.pl01</DT>
<DT>libisofs-0.6.15</DT>
<DD>operates on ISO 9660 filesystem images.</DD>
<DD>(By Vreixo Formoso and Mario Danic from team of libburnia-project.org)</DD>
<DT>libisoburn-0.2.8</DT>
<DD>(By Vreixo Formoso, Mario Danic and Thomas Schmitt
from team of libburnia-project.org)</DD>
<DT>libisoburn-0.3.4</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>
@ -92,7 +97,7 @@ For ports to other usable systems <A HREF="#contact">contact us</A>.
<H2>Special features:</H2>
<UL>
<LI>
ISO 9660 formatter and burner for CD, DVD, BD-RE are fixely integrated.
ISO 9660 formatter and burner for CD, DVD, BD are fixely integrated.
</LI>
<LI>
Operates on an existing ISO image or creates a new one.
@ -111,7 +116,7 @@ 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.
Can activate ISOLINUX boot images by El Torito boot record and by MBR.
</LI>
<LI>
Can perform multi-session tasks as emulation of mkisofs and cdrecord.
@ -120,6 +125,12 @@ Can perform multi-session tasks as emulation of mkisofs and cdrecord.
Can restore single files and whole trees from ISO image to disk filesystem.
</LI>
<LI>
Can record and restore ACL and xattr of disk files.
</LI>
<LI>
Can issue commands to mount older sessions on Linux or FreeBSD.
</LI>
<LI>
Can check media for damages and copy readable blocks to disk.
</LI>
<LI>
@ -127,7 +138,7 @@ Scans for optical drives, blanks re-useable optical media, formats media.
</LI>
<LI>
Suitable for:
CD-R, CD-RW, DVD-R, DVD-RW, DVD+R, DVD+R DL, DVD+RW, DVD-RAM, BD-RE.
CD-R, CD-RW, DVD-R, DVD-RW, DVD+R, DVD+R DL, DVD+RW, DVD-RAM, BD-R, BD-RE.
</LI>
<LI>
Reads its instructions from command line arguments, dialog, and batch files.
@ -142,6 +153,7 @@ Provides navigation commands for interactive ISO image manipulation.
<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>
@ -260,18 +272,22 @@ already been done by a previous -commit.</DT>
<HR>
</DT>
<DT>The following command can be run on blank media to create a
copy of the mentioned disk directory trees, and it can be run on appendable
media to perform a minimal set of change operations which update the
old ISO copies to match the new disk trees.
Older states can be retrieved by help of mount option "session=" from CD-R[W],
by help of "sbsector=" from other media.
So this constitutes true incremental backup.
<DT>The following command performs incremental backup.
It can be run on blank media to create a copy of the mentioned disk
directory trees, and it can be run on appendable media to perform a
minimal set of change operations which update the old ISO copies
to match the new disk trees.
Older states can be retrieved by help of mount options like "sbsector="
or by help of xorriso option -mount.
<BR>
The copies will be complete, except all file names ending
with ".o" or ".swp" which are excluded by options -not_leaf.
Eventual ACL or xattr will be recorded. Data reading will be avoided by
accelerator option -disk_dev_ino.
Only blank media or media with volume id "PROJECTS_MAIL_..." will be accepted.
Files with names ending by ".o" or ".swp" are excluded by options -not_leaf.
</DT>
<DD>$<KBD>&nbsp;xorriso -dev /dev/sr0 \</KBD></DD>
<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>
@ -282,6 +298,35 @@ with ".o" or ".swp" which are excluded by options -not_leaf.
<HR>
</DT>
<DT>
Operating systems usually mount the most recent session on media.
xorriso can issue the appropriate mount commands for older sessions.
First get an overview of the sessions on disk:
</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
@ -290,20 +335,26 @@ that tree, xorriso can burn an El Torito bootable media:
<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.
The prefix &quot;stdio:&quot; indicates that normal file operations are
desired rather than MMC drive commands:
</DT>
<DD>$<KBD>&nbsp;xorriso -dev stdio:/tmp/regular_file ...other.options...</DD>
<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 stdio:/tmp/named_pipe ...other.options...</DD>
<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
@ -335,7 +386,8 @@ One may switch from mkisofs emulation to xorriso's own command mode:
<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 -indev /dev/sr0 \</KBD></DD>
<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>
@ -355,10 +407,6 @@ files or trees to disk:
<DD>$<KBD>&nbsp;<A HREF="man_1_xorriso.html">man xorriso</A></KBD></DD>
</DL>
Testers wanted who are willing to risk some double layer DVD media or
are interested in using BD-R media.
</P>
<HR>
@ -366,8 +414,8 @@ are interested in using BD-R media.
<P>
<DL>
<DT><H3>Download as source code (see README):</H3></DT>
<DD><A HREF="xorriso-0.2.8.pl01.tar.gz">xorriso-0.2.8.pl01.tar.gz</A>
(1050 KB).
<DD><A HREF="xorriso-0.3.4.pl00.tar.gz">xorriso-0.3.4.pl00.tar.gz</A>
(1175 KB).
</DD>
</DL>
</DD>
@ -393,35 +441,32 @@ an <A HREF="http://www.opensource.org/">Open Source</A> approved license</DD>
<HR>
<P>
Bug fixes towards xorriso-0.2.6.pl00:
Bug fixes towards xorriso-0.3.2.pl00:
<UL>
<LI>A potential buffer overflow has been fixed</LI>
<LI>-follow "link" attributed random target filenames to looping links</LI>
<LI>-as mkisofs -iso-level was accused to be an unknown option</LI>
<LI>BD-R were not correctly finalized</LI>
<!--
<LI>- none -</LI>
-->
</UL>
Bug fixes towards xorriso-0.2.8.pl00 and xorriso-0.2.6.pl00:
<UL>
<LI>Images generated by mkisofs which contain regular files with 0 bytes
suffered file size confusion when xorriso sessions were appended.</LI>
<LI>ISOLINUX boot images were not made ready for SYSLINUX script isohybrid.
</LI>
</UL>
</P>
<P>
Enhancements towards previous stable version xorriso-0.2.6.pl00:
Enhancements towards previous stable version xorriso-0.3.2.pl00:
<UL>
<LI>Ability to write and maintain bootable ISO images based on ISOLINUX</LI>
<LI>New ./configure option --disable-libreadline to make binary more portable
<LI>New option -acl controls import and export of ACLs</LI>
<LI>New options -getfacl, -getfacl_r, -setfacl , -setfacl_r , -setfacl_list</LI>
<LI>New -find tests -has_acl, -has_no_acl, new -find actions getfacl, setfacl
</LI>
<LI>New option -xattr controls import and export of Extended Attributes</LI>
<LI>New options -getfattr, -getfattr_r, -setfattr, -setfattr_r, -setfattr_list
</LI>
<LI>New -find tests -has_xattr, -has_aaip, new -find actions getfattr, setfattr
</LI>
<LI>New -as mkisofs options --acl and --xattr</LI>
<LI>New option -disk_dev_ino can substantially accelerate incremental backups
</LI>
</UL>
</P>
@ -429,35 +474,25 @@ Enhancements towards previous stable version xorriso-0.2.6.pl00:
<P>
<DL>
<DT><H3>Development snapshot, version 0.2.9 :</H3></DT>
<DD>Bug fixes towards xorriso-0.2.8.pl01:
<DT><H3>Development snapshot, version 0.3.5 :</H3></DT>
<DD>Bug fixes towards xorriso-0.3.4.pl00:
<UL>
<LI>Forgot exit value registration to -return_with. Thanks to Steve Dodd.</LI>
<LI>-format "as_needed" did not recognize unformatted BD-RE</LI>
<LI>disk patterns with relative addresses were not properly resolved</LI>
<!--
<LI>- none yet -</LI>
<!--
-->
</UL>
</DD>
<DD>Enhancements towards stable version 0.2.8.pl01:
<DD>Enhancements towards stable version 0.3.4.pl00:
<UL>
<LI>Suitable ISOLINUX boot images are made alternatively bootable via MBR</LI>
<LI>New options -quoted_path_list, -quoted_not_list</LI>
<LI>New option -backslash_codes for terminal safety with weird file names</LI>
<LI>New options -charset, -in_charset, -out_charset </LI>
<LI>New option -application_id</LI>
<LI>New option -compliance</LI>
<!--
<LI>- none yet -</LI>
<!--
-->
</UL>
</DD>
<DD>&nbsp;</DD>
<DD><A HREF="README_xorriso_devel">README 0.2.9</A>
<DD><A HREF="xorriso_help_devel">xorriso_0.2.9 -help</A></DD>
<DD><A HREF="man_1_xorriso_devel.html">man xorriso (as of 0.2.9)</A></DD>
<DD><A HREF="README_xorriso_devel">README 0.3.5</A>
<DD><A HREF="xorriso_help_devel">xorriso_0.3.5 -help</A></DD>
<DD><A HREF="man_1_xorriso_devel.html">man xorriso (as of 0.3.5)</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
@ -467,8 +502,8 @@ libburnia libraries.
installation see README)
</DD>
<DD>
<A HREF="xorriso-0.2.9.tar.gz">xorriso-0.2.9.tar.gz</A>
(1070 KB).
<A HREF="xorriso-0.3.5.tar.gz">xorriso-0.3.5.tar.gz</A>
(1160 KB).
</DD>
<DT>A dynamically linked development version of xorriso can be obtained
from repositories of

View File

@ -16,9 +16,10 @@ xorriso_xorriso_CPPFLAGS = -I./libburn -I./libisofs -I./libisoburn -I./xorriso
# No readline in the vanilla version because the necessary headers
# are in a separate readline-development package.
xorriso_xorriso_CFLAGS = -DXorriso_standalonE -DXorriso_with_maiN -DXorriso_with_regeX $(READLINE_DEF)
xorriso_xorriso_CFLAGS = -DXorriso_standalonE -DXorriso_with_maiN \
$(READLINE_DEF) $(LIBACL_DEF) $(XATTR_DEF)
xorriso_xorriso_LDADD = $(THREAD_LIBS)
xorriso_xorriso_LDADD = $(THREAD_LIBS) $(LIBBURN_ARCH_LIBS)
# This looks quite ugly with make install: xorriso.c is compiled twice again
@ -99,6 +100,8 @@ xorriso_xorriso_SOURCES = \
libisofs/system_area.h \
libisofs/system_area.c \
libisofs/make_isohybrid_mbr.c \
libisofs/aaip_0_2.h \
libisofs/aaip_0_2.c \
\
libburn/async.c \
libburn/async.h \
@ -225,6 +228,9 @@ EXTRA_DIST = \
INSTALL \
xorriso/changelog.txt \
xorriso/xorriso_buildstamp_none.h \
$(man_MANS)
$(man_MANS) \
libisofs/aaip-os-dummy.c \
libisofs/aaip-os-linux.c \
libisofs/aaip-os-freebsd.c

View File

@ -2,7 +2,7 @@
/* Command line oriented batch and dialog tool which creates, loads,
manipulates and burns ISO 9660 filesystem images.
Copyright 2007-2008 Thomas Schmitt, <scdbackup@gmx.net>
Copyright 2007-2009 Thomas Schmitt, <scdbackup@gmx.net>
Provided under GPL version 2.
@ -18,7 +18,7 @@
#ifndef Xorriso_private_includeD
#define Xorriso_private_includeD yes
#define Xorriso_program_versioN "0.2.9"
#define Xorriso_program_versioN "0.3.4"
/** The source code release timestamp */
#include "xorriso_timestamp.h"
@ -34,11 +34,7 @@
#define Xorriso_build_timestamP "-none-given-"
#endif
/* Because regex_t is mentioned in struct XorrisO */
#ifdef Xorriso_with_regeX
#include <regex.h>
#endif /* Xorriso_with_regeX */
#define Smem_malloC malloc
@ -104,6 +100,13 @@ struct XorrisO { /* the global context of xorriso */
/* >>> put libisofs aspects here <<< */
int do_joliet;
int do_aaip; /* bit0= ACL in , bit1= ACL out , bit2= EA in , bit3= EA out
bit4= record dev,inode , bit5= check dev,inode
bit6= omit content check if dev,inode check is conclusive
bit7= omit dev check mit bit5
*/
int relax_compliance; /* opaque bitfield to be set by xorrisoburn */
int do_follow_pattern;
int do_follow_param;
@ -124,6 +127,8 @@ struct XorrisO { /* the global context of xorriso */
char volid[33];
int volid_default;
char loaded_volid[33];
char assert_volid[SfileadrL];
char assert_volid_sev[80];
char publisher[129];
char application_id[129];
@ -134,6 +139,10 @@ struct XorrisO { /* the global context of xorriso */
/* >>> put libburn/isoburn aspects here */
struct Xorriso_lsT *drive_blacklist;
struct Xorriso_lsT *drive_greylist;
struct Xorriso_lsT *drive_whitelist;
int toc_emulation_flag; /* bit0= bit3 for isoburn_drive_aquire()
scan -ROM profiles for ISO sessions
bit1= bit4 for isoburn_drive_aquire()
@ -192,7 +201,8 @@ struct XorrisO { /* the global context of xorriso */
/* <<< not sure whether to keep this after libisofs will have
learned to pad up MBR images to full MB */
int do_stream_recording;
int do_stream_recording; /* 0=no, 1=yes, 2=for data, not for dir
>=16 means yes with number as start LBA */
int keep_boot_image;
int patch_isolinux_image;
@ -310,10 +320,8 @@ struct XorrisO { /* the global context of xorriso */
char eternal_problem_status_text[20];
/* temporary search facilities */
#ifdef Xorriso_with_regeX
regex_t *re;
regmatch_t match[1];
#endif /* Xorriso_with_regeX */
char **re_constants;
int re_count;
int re_fill;
@ -383,7 +391,7 @@ int Xorriso_regexec(struct XorrisO *xorriso, char *to_match, int *failed_at,
int Xorriso_prepare_expansion_pattern(struct XorrisO *xorriso, char *pattern,
int flag);
int Xorriso__mode_to_perms(mode_t st_mode, char perms[10], int flag);
int Xorriso__mode_to_perms(mode_t st_mode, char perms[11], int flag);
int Xorriso_much_too_long(struct XorrisO *xorriso, int len, int flag);
@ -533,6 +541,84 @@ int Xorriso_toc_to_string(struct XorrisO *xorriso, char **toc_text, int flag);
int Xorriso_reaquire_outdev(struct XorrisO *xorriso, int flag);
/* Opens the -check_media data copy in for reading and writing
*/
int Xorriso_open_job_data_to(struct XorrisO *xorriso,
struct CheckmediajoB *job, int flag);
int Xorriso_no_findjob(struct XorrisO *xorriso, char *cmd, int flag);
int Xorriso_make_mount_cmd(struct XorrisO *xorriso, char *cmd,
int lba, int track, int session, char *volid,
char *devadr, char result[SfileadrL], int flag);
/* @param flag bit0= use env_path to find the desired program
*/
int Xorriso_execv(struct XorrisO *xorriso, char *cmd, char *env_path,
int *status, int flag);
int Xorriso_is_in_patternlist(struct XorrisO *xorriso,
struct Xorriso_lsT *patternlist, char *path, int flag);
char *Xorriso_get_pattern(struct XorrisO *xorriso,
struct Xorriso_lsT *patternlist, int index, int flag);
/* Normalize ACL and sort apart "access" ACL from "default" ACL.
*/
int Xorriso_normalize_acl_text(struct XorrisO *xorriso, char *in_text,
char **access_acl_text, char **default_acl_text, int flag);
int Xorriso_path_setfattr(struct XorrisO *xorriso, void *in_node, char *path,
char *name, size_t value_length, char *value, int flag);
int Sfile_str(char target[SfileadrL], char *source, int flag);
double Sfile_microtime(int flag);
int Sfile_add_to_path(char path[SfileadrL], char *addon, int flag);
int Sfile_scale(double value, char *result, int siz, double thresh, int flag);
int Sfile_destroy_argv(int *argc, char ***argv, int flag);
/*
bit0= do not ignore trailing slash
bit1= do not ignore empty components (other than the empty root name)
*/
int Sfile_count_components(char *path, int flag);
/*
@param flag
bit0= return -1 if file is missing
bit1= return a hardlink with siblings as type 5
bit2= evaluate eventual link target rather than the link object itself
bit3= return a socket or a char device as types 7 or 8 rather than 0
@return
0=unknown
1=regular
2=directory
3=symbolic link
4=named pipe
5=multiple hardlink (with bit1)
6=block device
7=socket (with bit3)
8=character device (with bit3)
*/
int Sfile_type(char *filename, int flag);
/* @param flag bit0= only encode inside quotes
bit1= encode < 32 outside quotes except 7, 8, 9, 10, 12, 13
bit2= encode in any case above 126
bit3= encode in any case shellsafe:
<=42 , 59, 60, 62, 63, 92, 94, 96, >=123
*/
int Sfile_bsl_encoder(char **result, char *text, size_t text_len, int flag);
struct Xorriso_lsT {
char *text;
struct Xorriso_lsT *prev,*next;
@ -585,51 +671,6 @@ int Xorriso_lst_append_binary(struct Xorriso_lsT **entry,
int Xorriso_lst_destroy(struct Xorriso_lsT **lstring, int flag);
/* Opens the -check_media data copy in for reading and writing
*/
int Xorriso_open_job_data_to(struct XorrisO *xorriso,
struct CheckmediajoB *job, int flag);
int Xorriso_no_findjob(struct XorrisO *xorriso, char *cmd, int flag);
int Sfile_str(char target[SfileadrL], char *source, int flag);
double Sfile_microtime(int flag);
int Sfile_add_to_path(char path[SfileadrL], char *addon, int flag);
int Sfile_scale(double value, char *result, int siz, double thresh, int flag);
int Sfile_destroy_argv(int *argc, char ***argv, int flag);
/*
bit0= do not ignore trailing slash
bit1= do not ignore empty components (other than the empty root name)
*/
int Sfile_count_components(char *path, int flag);
/*
@param flag
bit0= return -1 if file is missing
bit1= return a hardlink with siblings as type 5
bit2= evaluate eventual link target rather than the link object itself
bit3= return a socket or a char device as types 7 or 8 rather than 0
@return
0=unknown
1=regular
2=directory
3=symbolic link
4=named pipe
5=multiple hardlink (with bit1)
6=block device
7=socket (with bit3)
8=character device (with bit3)
*/
int Sfile_type(char *filename, int flag);
char *Text_shellsafe(char *in_text, char *out_text, int flag);
int Sort_argv(int argc, char **argv, int flag);
@ -642,6 +683,9 @@ char *Ftypetxt(mode_t st_mode, int flag);
*/
char *Ftimetxt(time_t t, char timetext[40], int flag);
int System_uname(char **sysname, char **release, char **version,
char **machine, int flag);
struct DirseQ;
@ -675,7 +719,7 @@ int Findjob_get_action(struct FindjoB *o, int flag);
/* @return <0 error, >=0 see xorriso.c struct FindjoB.action
*/
int Findjob_get_action_parms(struct FindjoB *o, char **target,
int Findjob_get_action_parms(struct FindjoB *o, char **target, char **text_2,
uid_t *user, gid_t *group,
mode_t *mode_and, mode_t *mode_or,
int *type, time_t *date, struct FindjoB **subjob,
@ -713,6 +757,12 @@ int Findjob_get_lba_damage_filter(struct FindjoB *o, int *start_lba,
int Findjob_get_commit_filter(struct FindjoB *o, int *commit_filter, int flag);
int Findjob_get_acl_filter(struct FindjoB *o, int *acl_filter, int flag);
int Findjob_get_xattr_filter(struct FindjoB *o, int *xattr_filter, int flag);
int Findjob_get_aaip_filter(struct FindjoB *o, int *aaip_filter, int flag);
int Findjob_set_wanted_node(struct FindjoB *o, void *wanted_node, int flag);
int Findjob_get_wanted_node(struct FindjoB *o, void **wanted_node, int flag);
@ -812,5 +862,9 @@ int Sectorbitmap_copy(struct SectorbitmaP *from, struct SectorbitmaP *to,
/* bit0= append (text!=NULL) */
int Sregex_string(char **handle, char *text, int flag);
/* @param flag bit0= only test expression whether compilable
*/
int Sregex_match(char *pattern, char *text, int flag);
#endif /* Xorriso_private_includeD */

View File

@ -1 +1 @@
#define Xorriso_timestamP "2008.12.01.122825"
#define Xorriso_timestamP "2009.03.01.103001"

File diff suppressed because it is too large Load Diff

View File

@ -4,7 +4,7 @@
a command line oriented batch and dialog tool which creates, loads,
manipulates and burns ISO 9660 filesystem images.
Copyright 2007-2008 Thomas Schmitt, <scdbackup@gmx.net>
Copyright 2007-2009 Thomas Schmitt, <scdbackup@gmx.net>
Provided under GPL version 2.
@ -18,8 +18,8 @@
/* The minimum version of libisoburn to be used with this version of xorriso
*/
#define xorriso_libisoburn_req_major 0
#define xorriso_libisoburn_req_minor 2
#define xorriso_libisoburn_req_micro 9
#define xorriso_libisoburn_req_minor 3
#define xorriso_libisoburn_req_micro 4
int Xorriso_startup_libraries(struct XorrisO *xorriso, int flag);
@ -74,10 +74,14 @@ int Xorriso_tell_media_space(struct XorrisO *xorriso,
int Xorriso_blank_media(struct XorrisO *xorriso, int flag);
/* @param flag bit0= try to achieve faster formatting
bit1= use parameter size (else use default size)
bit2= do not re-aquire drive
bit7= by_index mode:
bit8 to bit15 contain the index of the format to use.
@return 0=failure, did not touch media , -1=failure, altered media
1=success, altered media , 2=success, did not touch media
*/
int Xorriso_format_media(struct XorrisO *xorriso, int flag);
int Xorriso_format_media(struct XorrisO *xorriso, off_t size, int flag);
/* @return <=0 error, 1 success
*/
@ -365,6 +369,69 @@ int Xorriso_get_relax_text(struct XorrisO *xorriso, char mode[1024],
int flag);
/**
@param flag bit0= print mount command to result channel rather than
performing it
*/
int Xorriso_mount(struct XorrisO *xorriso, char *dev, int adr_mode,
char *adr_value, char *cmd, int flag);
int Xorriso_auto_driveadr(struct XorrisO *xorriso, char *adr, char *result,
int flag);
/* @param node Opaque handle to IsoNode which is to be inquired instead of
path if it is not NULL.
@param path is used as address if node is NULL.
@param acl_text if acl_text is not NULL, then *acl_text will be set to the
ACL text (without comments) of the file object. In this
case it finally has to be freed by the caller.
@param flag bit0= do not report to result but only retrieve ACL text
bit1= just check for existence of ACL, do not allocate and
set acl_text but return 1 or 2
@return 2 ok, no ACL available, eventual *acl_text will be NULL
1 ok, ACL available, eventual *acl_text stems from malloc()
<=0 error
*/
int Xorriso_getfacl(struct XorrisO *xorriso, void *node,
char *path, char **acl_text, int flag);
int Xorriso_getfattr(struct XorrisO *xorriso, void *in_node, char *path,
char **attr_text, int flag);
/* Calls iso_image_set_ignore_aclea() according to xorriso->do_aaip */
int Xorriso_set_ignore_aclea(struct XorrisO *xorriso, int flag);
/* @param node Opaque handle to IsoNode which is to be manipulated
instead of path if it is not NULL.
@param path is used as address if node is NULL.
@param access_text "access" ACL in long text form
@param default_text "default" ACL in long text form
@param flag Unused yet, submit 0
@return >0 success , <=0 failure
*/
int Xorriso_setfacl(struct XorrisO *xorriso, void *in_node, char *path,
char *access_text, char *default_text, int flag);
int Xorriso_get_attrs(struct XorrisO *xorriso, void *in_node, char *path,
size_t *num_attrs, char ***names,
size_t **value_lengths, char ***values, int flag);
int Xorriso_setfattr(struct XorrisO *xorriso, void *in_node, char *path,
size_t num_attrs, char **names,
size_t *value_lengths, char **values, int flag);
int Xorriso_record_dev_inode(struct XorrisO *xorriso, char *disk_path,
dev_t dev, ino_t ino,
void *in_node, char *iso_path, int flag);
int Xorriso_local_getfacl(struct XorrisO *xorriso, char *disk_path,
char **text, int flag);
/* A pseudo file type for El-Torito bootsectors as in man 2 stat :
For now take the highest possible value.
*/