Compare commits
115 Commits
ZeroThreeZ
...
ZeroThreeF
Author | SHA1 | Date | |
---|---|---|---|
8039cfc79a | |||
cb774a21b2 | |||
36c5a8f417 | |||
f3469c3839 | |||
35386d7ed0 | |||
8a1574b632 | |||
1af09c3ac8 | |||
f0734966ff | |||
da07c22d31 | |||
c8122f4659 | |||
b6a998318c | |||
659fb43291 | |||
237113e1af | |||
8e08cf3c57 | |||
ca4777fba9 | |||
e69f4e1234 | |||
1251c6e135 | |||
ef8333effe | |||
333a7d95bb | |||
d9e76c54a6 | |||
5d9f43c7de | |||
26dc31682a | |||
e4b8310812 | |||
d2cc6531c0 | |||
c8fbf6ac4b | |||
af43ee46fd | |||
5d21c97de7 | |||
27c45c6df6 | |||
f5e6a8147b | |||
c854275d51 | |||
0e26c05593 | |||
03e92f4f72 | |||
efa1164328 | |||
f861321c45 | |||
4ceee394f7 | |||
002ba5d6d2 | |||
2756789dfe | |||
db02a5e88a | |||
767b0c3840 | |||
4bc34cc0ed | |||
78a3402bf3 | |||
0e70724dc2 | |||
d048fc4710 | |||
a74260d09f | |||
aaf0c184d1 | |||
0cd2d869c3 | |||
e0fc368105 | |||
fc2d3655b0 | |||
02f2954bd5 | |||
40d4330bcc | |||
75ae510390 | |||
86b5ffda4f | |||
5e1adef785 | |||
21adcfc5b3 | |||
e7036f90dc | |||
41619c2763 | |||
b3b9381dad | |||
b55cea36b1 | |||
8bb3c084e3 | |||
2c11219da5 | |||
2e7f566be0 | |||
a1dd938400 | |||
d03734211f | |||
ecbf829ea9 | |||
d678296449 | |||
9716ac2333 | |||
acfdb36e73 | |||
72743ca23b | |||
c4ced566b1 | |||
2fdd8738ef | |||
bca4682e63 | |||
50ebdac74f | |||
e415034e60 | |||
55ac4a7305 | |||
f803da91b4 | |||
b07e37454a | |||
2d6c71d335 | |||
dcec7a1be9 | |||
598d994644 | |||
aac9c23152 | |||
6caddd2808 | |||
37f4eaa9bb | |||
2c2a394a61 | |||
ef5a1c48ba | |||
f348faeb5f | |||
9376623917 | |||
a0dfbc4441 | |||
28a379db83 | |||
2efe2b0f01 | |||
1a5307c2e9 | |||
d0f8bb5dfe | |||
8cfade6692 | |||
1a0195b25f | |||
071a0c995e | |||
581ff82167 | |||
3f034883a6 | |||
48614c76a9 | |||
a8575df376 | |||
9b0518dfe9 | |||
3099f5cd6e | |||
ed437d4424 | |||
fcbe94656f | |||
af312dbbba | |||
b86f1b128d | |||
d5027ce4ec | |||
775c717fb4 | |||
87ff0c5594 | |||
f5b81c7b97 | |||
ab691084c6 | |||
8e131041a4 | |||
e7ab799c76 | |||
1bc60d0c0c | |||
fc58080467 | |||
b905907d10 | |||
0913122f6f |
@ -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
|
||||
|
10
Makefile.am
10
Makefile.am
@ -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
18
README
@ -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
|
||||
|
57
configure.ac
57
configure.ac
@ -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
58
doc/comments
Normal file
@ -0,0 +1,58 @@
|
||||
/**
|
||||
@author Mario Danic, Vreixo Formoso, Thomas Schmitt
|
||||
|
||||
@mainpage Libisoburn Documentation Index
|
||||
|
||||
@section intro Introduction
|
||||
|
||||
Libburnia is an open-source project for reading, mastering and writing
|
||||
optical discs. This page is about its capability to read, manipulate, and
|
||||
write ISO 9660 filesystems with Rock Ridge extensions. Media can be optical
|
||||
media or filesystem objects.
|
||||
|
||||
Our scope is currently Linux 2.4 and 2.6, or FreeBSD .
|
||||
|
||||
libisoburn is an add-on to libburn and libisofs which coordinates both and
|
||||
also allows to grow ISO-9660 filesystem images on multi-session media as well
|
||||
as on overwriteable media via the same API.
|
||||
All media peculiarities are handled automatically.
|
||||
|
||||
xorriso is an application of all three libraries which creates, loads,
|
||||
manipulates and writes ISO 9660 filesystem images with Rock Ridge extensions.
|
||||
Manipulation is not only adding or overwriting of files but also deletion,
|
||||
renaming, and attribute changing. An incremental backup feature is provided.
|
||||
See xorriso/README for more
|
||||
|
||||
SONAME:
|
||||
libisoburn.so.1 (since 0.1.0, February 2008).
|
||||
|
||||
|
||||
@section using Using the libraries
|
||||
|
||||
Our build system is based on autotools.
|
||||
User experience tells us that you will need at least autotools version 1.7.
|
||||
|
||||
To build libisoburn go into its toplevel directory and execute
|
||||
|
||||
- ./bootstrap (needed if you downloaded from SVN)
|
||||
|
||||
- ./configure
|
||||
|
||||
- make
|
||||
|
||||
To make the libraries accessible for running resp. developing applications
|
||||
|
||||
- make install
|
||||
|
||||
Read libisoburn/libisoburn.h for a description of the API.
|
||||
See also README, xorriso/README, and the man page xorriso/xorriso.1 which
|
||||
gives an idea of the capabilities provided by Libburnia.
|
||||
|
||||
You will also have to install and understand the two libraries of the
|
||||
Libburnia project which provide fundamental services:
|
||||
libburn is the library by which preformatted data get onto optical media.
|
||||
See libburn/libburn.h for its API description.
|
||||
libisofs is the library to handle ISO 9660 filesystems with Rock Ridge
|
||||
extensions. Its API is described in libisofs/libisofs.h .
|
||||
|
||||
*/
|
@ -6,7 +6,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);
|
||||
}
|
||||
|
||||
|
||||
|
@ -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>
|
||||
*/
|
||||
|
||||
|
@ -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);
|
||||
}
|
||||
|
||||
|
@ -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;
|
||||
};
|
||||
|
||||
|
||||
|
@ -6,7 +6,7 @@
|
||||
/*
|
||||
libisofs related functions of libisoburn.
|
||||
|
||||
Copyright 2007 - 2008 Vreixo Formoso Lopes <metalpain2002@yahoo.es>
|
||||
Copyright 2007 - 2009 Vreixo Formoso Lopes <metalpain2002@yahoo.es>
|
||||
Thomas Schmitt <scdbackup@gmx.net>
|
||||
*/
|
||||
|
||||
@ -27,6 +27,8 @@
|
||||
|
||||
#endif /* Xorriso_standalonE */
|
||||
|
||||
#define Libisoburn_with_aaiP yes
|
||||
|
||||
#include "isoburn.h"
|
||||
#include "libisoburn.h"
|
||||
|
||||
@ -166,6 +168,8 @@ create_blank_image:;
|
||||
iso_image_ref(*image); /*protects object from premature free*/
|
||||
}
|
||||
}
|
||||
iso_image_set_ignore_aclea(*image,
|
||||
(!!(read_opts->noacl)) | ((!!read_opts->noea) << 1) );
|
||||
return 1;
|
||||
}
|
||||
|
||||
@ -198,6 +202,11 @@ create_blank_image:;
|
||||
/* Important: do not return until iso_read_opts_free() */
|
||||
iso_read_opts_set_start_block(ropts, ms_block);
|
||||
iso_read_opts_set_no_rockridge(ropts, read_opts->norock);
|
||||
|
||||
#ifdef Libisoburn_with_aaiP
|
||||
iso_read_opts_set_no_aaip(ropts, read_opts->noaaip);
|
||||
#endif /* Libisoburn_with_aaiP */
|
||||
|
||||
iso_read_opts_set_no_joliet(ropts, read_opts->nojoliet);
|
||||
iso_read_opts_set_no_iso1999(ropts, read_opts->noiso1999);
|
||||
iso_read_opts_set_preferjoliet(ropts, read_opts->preferjoliet);
|
||||
|
@ -2,7 +2,7 @@
|
||||
/*
|
||||
API definition of libisoburn.
|
||||
|
||||
Copyright 2007-2008 Vreixo Formoso Lopes <metalpain2002@yahoo.es>
|
||||
Copyright 2007-2009 Vreixo Formoso Lopes <metalpain2002@yahoo.es>
|
||||
and Thomas Schmitt <scdbackup@gmx.net>
|
||||
*/
|
||||
|
||||
@ -124,6 +124,22 @@ One should inquire isoburn_drive_wrote_well() to learn about overall success.
|
||||
Finally one must call isoburn_activate_session() which will complete any
|
||||
eventual multi-session emulation.
|
||||
|
||||
|
||||
Application Constraints
|
||||
|
||||
Applications shall include libisofs/libisofs.h , libburn/libburn.h and this
|
||||
file itself: libisoburn/libisoburn.h .
|
||||
They shall link with -lisofs -lburn -lisoburn or with the .o files emerging
|
||||
from building those libraries from their sources.
|
||||
|
||||
Applications must use 64 bit off_t, e.g. on 32-bit Linux by defining
|
||||
#define _LARGEFILE_SOURCE
|
||||
#define _FILE_OFFSET_BITS 64
|
||||
or take special precautions to interface with the library by 64 bit integers
|
||||
where above .h files prescribe off_t. Not to use 64 bit file i/o will keep
|
||||
the application from producing and processing ISO images of more than 2 GB
|
||||
size.
|
||||
|
||||
*/
|
||||
|
||||
|
||||
@ -200,15 +216,15 @@ void isoburn_version(int *major, int *minor, int *micro);
|
||||
*/
|
||||
#define isoburn_libisofs_req_major 0
|
||||
#define isoburn_libisofs_req_minor 6
|
||||
#define isoburn_libisofs_req_micro 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
|
||||
|
@ -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
@ -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
|
||||
|
@ -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
|
||||
|
@ -51,7 +51,7 @@ then
|
||||
-e 's/<b>Libburn drives:<\/b>/\ <BR><b>Libburn drives:<\/b>/' \
|
||||
-e 's/^-dev /\ \ -dev /' \
|
||||
-e 's/^-devices /\ \ -devices /' \
|
||||
-e 's/<b>Rock Ridge, POSIX, X\/Open, and El Torito:<\/b>/\ <BR><b>Rock Ridge, POSIX, X\/Open, and El Torito:<\/b>/' \
|
||||
-e 's/<b>Rock Ridge, POSIX, X\/Open, El Torito, ACL,/\ <BR><b>Rock Ridge, POSIX, X\/Open, El Torito, ACL,/' \
|
||||
-e 's/<b>Command processing:<\/b>/\ <BR><b>Command processing:<\/b>/' \
|
||||
-e 's/<b>Dialog, Readline, Result pager:<\/b>/\ <BR><b>Dialog, Readline, Result pager:<\/b>/' \
|
||||
-e 's/<b>Aquiring source and target drive:<\/b>/\ <BR><b>Aquiring source and target drive:<\/b><BR>\ <BR>/' \
|
||||
|
@ -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
|
||||
|
@ -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>
|
||||
|
2387
xorriso/xorriso.c
2387
xorriso/xorriso.c
File diff suppressed because it is too large
Load Diff
@ -2,7 +2,7 @@
|
||||
/* Command line oriented batch and dialog tool which creates, loads,
|
||||
manipulates and burns ISO 9660 filesystem images.
|
||||
|
||||
Copyright 2007-2008 Thomas Schmitt, <scdbackup@gmx.net>
|
||||
Copyright 2007-2009 Thomas Schmitt, <scdbackup@gmx.net>
|
||||
|
||||
Provided under GPL version 2.
|
||||
|
||||
@ -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 */
|
||||
|
||||
|
@ -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> 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> xorriso -dev /dev/sr0 \</KBD></DD>
|
||||
<DD>$<KBD> xorriso -acl on -xattr on -disk_dev_ino on \</KBD></DD>
|
||||
<DD><KBD> -assert_volid 'PROJECTS_MAIL_*' FATAL \</KBD></DD>
|
||||
<DD><KBD> -dev /dev/sr0 \</KBD></DD>
|
||||
<DD><KBD> -volid PROJECTS_MAIL_"$(date '+%Y_%m_%d_%H%M%S')" \</KBD></DD>
|
||||
<DD><KBD> -not_leaf '*.o' -not_leaf '*.swp' \</KBD></DD>
|
||||
<DD><KBD> -update_r /home/thomas/open_source_projects /open_source_projects \</KBD></DD>
|
||||
@ -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> xorriso -outdev /dev/sr0 -toc</KBD></DD>
|
||||
<PRE>
|
||||
TOC layout : Idx , sbsector , Size , Volume Id
|
||||
ISO session : 1 , 0 , 104719s , PROJECTS_MAIL_2008_08_10_231435
|
||||
ISO session : 2 , 106928 , 6785s , PROJECTS_MAIL_2008_08_14_184548
|
||||
...
|
||||
ISO session : 76 , 820384 , 11035s , PROJECTS_MAIL_2009_01_04_191150
|
||||
</PRE>
|
||||
|
||||
<DT>
|
||||
Then become superuser and let xorriso mount the session of August 14, 2008
|
||||
to directory /mnt:
|
||||
</DT>
|
||||
<DD>#<KBD>
|
||||
xorriso -osirrox on -mount /dev/sr0 volid '*_2008_08_14_*' /mnt
|
||||
</KBD></DD>
|
||||
<DT>
|
||||
To be later unmounted by: <KBD>umount /mnt</KBD>
|
||||
</DT>
|
||||
|
||||
<DT>
|
||||
<HR>
|
||||
</DT>
|
||||
|
||||
<DT>
|
||||
After the user has already created a suitable file tree on disk
|
||||
and copied the ISOLINUX files into subdirectory ./boot/isolinux of
|
||||
@ -290,20 +335,26 @@ that tree, xorriso can burn an El Torito bootable media:
|
||||
<DD>$<KBD> xorriso -outdev /dev/sr0 -blank as_needed \</KBD></DD>
|
||||
<DD><KBD> -map /home/me/ISOLINUX_prepared_tree / \</KBD></DD>
|
||||
<DD><KBD> -boot_image isolinux dir=/boot/isolinux</KBD></DD>
|
||||
|
||||
<DT>
|
||||
An additional MBR is generated if the file isolinux.bin is modern enough
|
||||
(syslinux version 3.72) and ready for "isohybrid". An MBR enables booting
|
||||
from hard disk or USB stick.
|
||||
<HR>
|
||||
</DT>
|
||||
|
||||
<DT>ISO images may not only be stored on optical media but also in
|
||||
regular disk files or block devices for full multi-session operation.
|
||||
The prefix "stdio:" indicates that normal file operations are
|
||||
desired rather than MMC drive commands:
|
||||
</DT>
|
||||
<DD>$<KBD> xorriso -dev stdio:/tmp/regular_file ...other.options...</DD>
|
||||
<DD>$<KBD> xorriso -dev /tmp/regular_file ...other.options...</DD>
|
||||
<DT>
|
||||
A default setting for safety reasons requires that files below /dev/
|
||||
need prefix "stdio:" if they do not lead to MMC burner devices.
|
||||
Be cautious not to overwrite your hard disk instead of your USB stick:
|
||||
</DT>
|
||||
<DD>$<KBD> xorriso -dev stdio:/dev/sdb ...other.options...</DD>
|
||||
|
||||
<DT>Other file types are suitable only for writing but not for reading:</DT>
|
||||
<DD>$<KBD> xorriso -outdev stdio:/tmp/named_pipe ...other.options...</DD>
|
||||
<DD>$<KBD> xorriso -outdev /tmp/named_pipe ...other.options...</DD>
|
||||
|
||||
<DT>In batch mode it is possible to operate xorriso in a pipeline
|
||||
with an external consumer of the generated ISO image. Any message
|
||||
@ -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> xorriso -indev /dev/sr0 \</KBD></DD>
|
||||
<DD>$<KBD> xorriso -acl on -xattr on \</KBD></DD>
|
||||
<DD><KBD> -indev /dev/sr0 \</KBD></DD>
|
||||
<DD><KBD> -osirrox on \</KBD></DD>
|
||||
<DD><KBD> -cpx '/pictures/private/horses*/*buttercup*' \</KBD></DD>
|
||||
<DD><KBD> /home/her/buttercup_dir -- \</KBD>
|
||||
@ -355,10 +407,6 @@ files or trees to disk:
|
||||
<DD>$<KBD> <A HREF="man_1_xorriso.html">man xorriso</A></KBD></DD>
|
||||
</DL>
|
||||
|
||||
|
||||
Testers wanted who are willing to risk some double layer DVD media or
|
||||
are interested in using BD-R media.
|
||||
|
||||
</P>
|
||||
|
||||
<HR>
|
||||
@ -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> </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> </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
|
||||
|
@ -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
|
||||
|
||||
|
||||
|
@ -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 */
|
||||
|
||||
|
@ -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
@ -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.
|
||||
*/
|
||||
|
Reference in New Issue
Block a user