Compare commits

..

5 Commits

24 changed files with 1411 additions and 9421 deletions

View File

@ -1,8 +1,4 @@
# ts A90315 : LIBBURNIA_PKGCONFDIR is defined OS specific in acinclude.m4
# was: pkgconfigdir=$(libdir)/pkgconfig
pkgconfigdir=$(LIBBURNIA_PKGCONFDIR)
pkgconfigdir=$(libdir)/pkgconfig
libincludedir=$(includedir)/libisoburn
lib_LTLIBRARIES = libisoburn/libisoburn.la
@ -51,8 +47,7 @@ bin_PROGRAMS = \
xorriso_xorriso_CPPFLAGS = -Ilibisoburn
xorriso_xorriso_CFLAGS = -DXorriso_with_maiN \
$(READLINE_DEF) $(LIBACL_DEF) $(XATTR_DEF) \
$(EXTF_DEF) $(EXTF_SUID_DEF) $(ZLIB_DEF)
$(READLINE_DEF) $(LIBACL_DEF) $(XATTR_DEF)
xorriso_xorriso_LDADD = libisoburn/libisoburn.la -lisofs -lburn \
$(THREAD_LIBS) $(LIBBURN_ARCH_LIBS)

34
README
View File

@ -4,7 +4,7 @@
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.4.2.pl00.tar.gz
http://files.libburnia-project.org/releases/libisoburn-0.3.6.pl00.tar.gz
Copyright (C) 2006-2009 Vreixo Formoso, Thomas Schmitt.
Provided under GPL version 2.
------------------------------------------------------------------------------
@ -29,17 +29,18 @@ By using this software you agree to the disclaimer at the end of this text:
Compilation, First Glimpse, Installation
Dynamic library and compile time header requirements for libisoburn-0.4.2 :
- libburn.so.4 , version libburn-0.7.0 or higher
- libisofs.so.6 , version libisofs-0.6.22 or higher
Dynamic library and compile time header requirements for libisoburn-0.3.6 :
- libburn.so.4 , version libburn-0.6.4 or higher
- libisofs.so.6 , version libisofs-0.6.16 or higher
libisoburn and xorriso will not start with libraries which are older than their
headers seen at compile time.
headers seen at compile time. So compile in the oldest possible installation
setup unless you have reason to enforce a newer level of bug fixes or features.
Obtain libisoburn-0.4.2.pl00.tar.gz, take it to a directory of your choice
Obtain libisoburn-0.3.6.pl00.tar.gz, take it to a directory of your choice
and do:
tar xzf libisoburn-0.4.2.pl00.tar.gz
cd libisoburn-0.4.2
tar xzf libisoburn-0.3.6.pl00.tar.gz
cd libisoburn-0.3.6
Within that directory execute:
@ -48,7 +49,7 @@ Within that directory execute:
Then become superuser and execute
make install
which will make available libisoburn.so.1 and the program xorriso.
which will make available libisoburn.so.1 and program xorriso.
For the API concepts and calls see
./libisoburn/libisoburn.h
@ -79,23 +80,12 @@ are present. This dependcy can be avoided by running
./configure --prefix=/usr --disable-libreadline
make clean ; make
Never omit the "make clean" command after switching libreadline enabling.
Other deliberate dependency reduction options of ./configure are:
--disable-libacl avoid use of ACL functions like acl_to_text()
--disable-xattr avoid use of xattr functions like listxattr()
--disable-zlib avoid use of zlib functions like compress2()
xorriso allows to use external processes as file content filters. This is
a potential security risk which may be avoided by ./configure option
--disable-external-filters
By default the filter feature is disabled if effective user id and real
user id differ. This ban can be lifted by
--enable-external-filters-setuid
Drives and Disk File Objects
The user of libisoburn applications needs rw-permission for the CD/DVD/BD
drives which shall be used, even if only reading is intended.
The user of libisoburn applications needs rw-permission for the CD/DVD burner
devices which shall be used.
A list of rw-accessible drives can be obtained by
xorriso -devices
resp. by libburn API call

View File

@ -1,7 +1,6 @@
AC_DEFUN([TARGET_SHIZZLE],
[
ARCH=""
LIBBURNIA_PKGCONFDIR="$libdir"/pkgconfig
AC_MSG_CHECKING([target operating system])
@ -13,9 +12,6 @@ AC_DEFUN([TARGET_SHIZZLE],
*-*-freebsd*)
ARCH=freebsd
LIBBURN_ARCH_LIBS=-lcam
# This may later be overridden by configure --enable-libdir-pkgconfig
LIBBURNIA_PKGCONFDIR=$(echo "$libdir" | sed 's/\/lib$/\/libdata/')/pkgconfig
;;
*)
ARCH=
@ -26,95 +22,3 @@ AC_DEFUN([TARGET_SHIZZLE],
AC_MSG_RESULT([$ARCH])
])
dnl LIBBURNIA_CHECK_ICONV is by Thomas Schmitt, libburnia project
dnl It is based on gestures from:
dnl iconv.m4 serial AM7 (gettext-0.18)
dnl Copyright (C) 2000-2002, 2007-2009 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
dnl with or without modifications, as long as this notice is preserved.
dnl From Bruno Haible.
dnl
AC_DEFUN([LIBBURNIA_CHECK_ICONV],
[
dnl Check whether it is allowed to link with -liconv
AC_MSG_CHECKING([for separate -liconv ])
libburnia_liconv="no"
libburnia_save_LIBS="$LIBS"
LIBS="$LIBS -liconv"
AC_TRY_LINK([#include <stdlib.h>
#include <iconv.h>],
[iconv_t cd = iconv_open("","");
iconv(cd,NULL,NULL,NULL,NULL);
iconv_close(cd);],
[libburnia_liconv="yes"],
[LIBS="$libburnia_save_LIBS"]
)
AC_MSG_RESULT([$libburnia_liconv])
dnl Check for iconv(..., const char **inbuf, ...)
AC_MSG_CHECKING([for const qualifier with iconv() ])
AC_TRY_COMPILE([
#include <stdlib.h>
#include <iconv.h>
size_t iconv (iconv_t cd, char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft);
], [], [libburnia_iconv_const=""], [libburnia_iconv_const="const"]
)
AC_DEFINE_UNQUOTED([ICONV_CONST], [$libburnia_iconv_const])
test -z "$libburnia_iconv_const" && libburnia_iconv_const="no"
AC_MSG_RESULT([$libburnia_iconv_const])
])
dnl LIBBURNIA_SET_PKGCONFIG determines the install directory for the *.pc file.
dnl Important: Must be performed _after_ TARGET_SHIZZLE
dnl
AC_DEFUN([LIBBURNIA_SET_PKGCONFIG],
[
### for testing --enable-libdir-pkgconfig on Linux
### LIBBURNIA_PKGCONFDIR="$libdir"data/pkgconfig
if test "x$LIBBURNIA_PKGCONFDIR" = "x$libdir"/pkgconfig
then
dummy=dummy
else
AC_ARG_ENABLE(libdir-pkgconfig,
[ --enable-libdir-pkgconfig Install to $libdir/pkgconfig on any OS, default=no],
, enable_libdir_pkgconfig="no")
AC_MSG_CHECKING([for --enable-libdir-pkgconfig])
if test "x$enable_libdir_pkgconfig" = xyes
then
LIBBURNIA_PKGCONFDIR="$libdir"/pkgconfig
fi
AC_MSG_RESULT([$enable_libdir_pkgconfig])
fi
libburnia_pkgconfig_override="no"
AC_ARG_ENABLE(pkgconfig-path,
[ --enable-pkgconfig-path=DIR Absolute path of directory for libisofs-*.pc],
libburnia_pkgconfig_override="yes" , enable_pkgconfig_path="none")
AC_MSG_CHECKING([for overridden pkgconfig directory path])
if test "x$enable_pkgconfig_path" = xno
then
libburnia_pkgconfig_override="no"
fi
if test "x$enable_pkgconfig_path" = x -o "x$enable_pkgconfig_path" = xyes
then
libburnia_pkgconfig_override="invalid argument"
fi
if test "x$libburnia_pkgconfig_override" = xyes
then
LIBBURNIA_PKGCONFDIR="$enable_pkgconfig_path"
AC_MSG_RESULT([$LIBBURNIA_PKGCONFDIR])
else
AC_MSG_RESULT([$libburnia_pkgconfig_override])
fi
AC_SUBST(LIBBURNIA_PKGCONFDIR)
dnl For debugging only
### AC_MSG_RESULT([LIBBURNIA_PKGCONFDIR = $LIBBURNIA_PKGCONFDIR])
])

View File

@ -1,4 +1,4 @@
AC_INIT([libisoburn], [0.4.2], [http://libburnia-project.org])
AC_INIT([libisoburn], [0.3.6], [http://libburnia-project.org])
AC_PREREQ([2.50])
dnl AC_CONFIG_HEADER([config.h])
@ -20,9 +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=4
ISOBURN_MICRO_VERSION=2
ISOBURN_MINOR_VERSION=3
ISOBURN_MICRO_VERSION=6
dnl ISOBURN_VERSION=$ISOBURN_MAJOR_VERSION.$ISOBURN_MINOR_VERSION.$ISOBURN_MICRO_VERSION
AC_SUBST(ISOBURN_MAJOR_VERSION)
@ -34,16 +33,16 @@ dnl Libtool versioning
dnl Generate libisoburn.so.1.x.y
dnl SONAME will become LT_CURRENT - LT_AGE
dnl
dnl ts A90829
dnl This is the release version 0.4.2 = libisoburn.so.1.31.0
dnl ts A90316
dnl This is the release version 0.3.6 = libisoburn.so.1.25.0
dnl ### This is the development version after above stable release
dnl LT_CURRENT++, LT_AGE++ have not happened happened yet.
dnl ### LT_CURRENT++, LT_AGE++ has happened meanwhile.
dnl
dnl SONAME = 32 - 31 = 1 . Library name = libisoburn.so.1.31.0
dnl SONAME = 26 - 25 = 1 . Library name = libisoburn.so.1.25.0
LT_RELEASE=$ISOBURN_MAJOR_VERSION.$ISOBURN_MINOR_VERSION
LT_CURRENT=32
LT_AGE=31
LT_CURRENT=26
LT_AGE=25
LT_REVISION=0
LT_CURRENT_MINUS_AGE=`expr $LT_CURRENT - $LT_AGE`
@ -74,8 +73,6 @@ 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, , )
dnl GNU iconv has no function iconv() but libiconv() and a macro iconv()
AC_CHECK_LIB(iconv, libiconv, , )
AC_PROG_LIBTOOL
AC_SUBST(LIBTOOL_DEPS)
@ -90,16 +87,9 @@ AC_SUBST(THREAD_LIBS)
TARGET_SHIZZLE
AC_SUBST(ARCH)
AC_SUBST(LIBBURNIA_PKGCONFDIR)
AC_SUBST(LIBBURN_ARCH_LIBS)
dnl Determine target directory for libisoburn-*.pc
dnl Important: Must be performed _after_ TARGET_SHIZZLE
dnl
LIBBURNIA_SET_PKGCONFIG
AC_ARG_ENABLE(libreadline,
[ --enable-libreadline Enable use of libreadline by xorriso, default=yes],
, enable_libreadline=yes)
@ -116,16 +106,9 @@ else
fi
AC_SUBST(READLINE_DEF)
dnl ts A90329
dnl ACL and xattr do not need to be enabled in libisoburn or xorriso source
dnl but without AC_CHECK_LIB() xorriso will not be linked with -lacl .
dnl On my Linux this does work with an ACL enabled libisofs but in general
dnl it seems not be right.
dnl So for now it seems to be best to do the same configuration for libisoburn
dnl and xorriso as for libisofs.
AC_ARG_ENABLE(libacl,
[ --enable-libacl Enable use of libacl by libisofs, default=yes],
[ --enable-libacl 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.
@ -140,7 +123,7 @@ AC_SUBST(LIBACL_DEF)
AC_ARG_ENABLE(xattr,
[ --enable-xattr Enable use of xattr by libisofs, default=yes],
[ --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.
@ -152,57 +135,12 @@ else
fi
AC_SUBST(XATTR_DEF)
dnl ts A90409
dnl Same situation as with xattr and ACL: libisoburn does not depend directly
dnl on zlib. But if it is enabled in libisofs then it seems wise to link it
dnl with libisoburn apps.
AC_ARG_ENABLE(zlib,
[ --enable-zlib Enable use of zlib by libisofs, default=yes],
, enable_zlib=yes)
if test x$enable_zlib = xyes; then
dnl Check whether there is the header for zlib.
dnl If not, erase this macro which would enable use of compress2() and others.
dnl The empty parameter after "compress2" causes -lz.
ZLIB_DEF="-DLibisofs_with_zliB"
AC_CHECK_HEADER(zlib.h, AC_CHECK_LIB(z, compress2, , ZLIB_DEF= ), ZLIB_DEF= )
else
ZLIB_DEF=
fi
AC_SUBST(ZLIB_DEF)
AC_ARG_ENABLE(external-filters,
[ --enable-external-filters Enable use of external filter programs by xorriso, default=yes],
, enable_external_filters=yes)
if test x"$enable_external_filters" = xyes; then
EXTF_DEF="-DXorriso_allow_external_filterS"
echo "enabled xorriso external filter programs"
else
EXTF_DEF=
echo "disabled xorriso external filter programs"
fi
AC_SUBST(EXTF_DEF)
AC_ARG_ENABLE(external-filters-setuid,
[ --enable-external-filters-setuid Enable xorriso external filter programs under setuid, default=no],
, enable_external_filters_setuid=no)
if test x$enable_external_filters_setuid = xyes; then
EXTF_SUID_DEF="-DXorriso_allow_extf_suiD"
echo "enabled xorriso external filter programs under setuid"
else
EXTF_SUID_DEF=
echo "disabled xorriso external filter programs under setuid"
fi
AC_SUBST(EXTF_SUID_DEF)
AC_CHECK_HEADER(libburn/libburn.h)
AC_CHECK_HEADER(libisofs/libisofs.h)
dnl Check for proper library versions
LIBBURN_REQUIRED=0.7.0
LIBISOFS_REQUIRED=0.6.22
LIBBURN_REQUIRED=0.6.4
LIBISOFS_REQUIRED=0.6.16
PKG_CHECK_MODULES(LIBBURN, libburn-1 >= $LIBBURN_REQUIRED)
PKG_CHECK_MODULES(LIBISOFS, libisofs-1 >= $LIBISOFS_REQUIRED)

View File

@ -275,11 +275,6 @@ static int isoburn_welcome_media(struct isoburn **o, struct burn_drive *d,
struct burn_multi_caps *caps= NULL;
struct isoburn_toc_entry *t;
char profile_name[80];
struct isoburn_toc_disc *disc= NULL;
struct isoburn_toc_session **sessions;
struct isoburn_toc_track **tracks;
int num_sessions= 0, num_tracks= 0, track_count= 0, session_no= 0;
char msg[80];
profile_name[0]= 0;
ret= burn_disc_get_profile(d, &profile, profile_name);
@ -322,50 +317,30 @@ static int isoburn_welcome_media(struct isoburn **o, struct burn_drive *d,
(*o)->emulation_mode= -1;
goto ex;
}
/* try to read emulated toc */
ret= isoburn_emulate_toc(d, flag & 16);
if(ret<0) {
(*o)->emulation_mode= -1;
goto ex;
if(!(flag & 16)) {
/* try to read emulated toc */
ret= isoburn_emulate_toc(d, 0);
if(ret<0) {
(*o)->emulation_mode= -1;
goto ex;
}
}
}
} else {
/* >>> recognize unsuitable media (but allow read-only media) */;
if(readonly) {
/* This might be overwriteable media in a -ROM drive.
Pitfall:
Multi-session media which bear a xorriso image for overwriteables
in their first session would get a TOC of that first image rather
than of the media.
It is not possible to distinguish a BD-RE from a single session
BD-R with an image for overwriteables. But as soon as the media
bears 2 logical tracks it cannot be overwriteable.
So count the number of tracks first.
*/
disc= isoburn_toc_drive_get_disc(d);
if(disc != NULL) {
sessions= isoburn_toc_disc_get_sessions(disc, &num_sessions);
for(session_no= 0; session_no < num_sessions; session_no++) {
tracks= isoburn_toc_session_get_tracks(sessions[session_no],
&num_tracks);
track_count+= num_tracks;
}
isoburn_toc_disc_free(disc);
}
sprintf(msg, "ROM media has libburn track count = %d", track_count);
isoburn_msgs_submit(*o, 0x00060000, msg, 0, "DEBUG", 0);
if((flag & 16) || track_count >= 2) {
ret= 0; /* toc emulation off, or not overwriteable */
/* This might be overwriteable media in a -ROM drive */
if((flag & 16)) {
ret= 0;
} else {
ret= isoburn_emulate_toc(d, 1);
if(ret<0)
goto ex;
}
if(ret == 0 && profile != 0x08 && (flag&8)) {
if(ret==0 && profile !=0x08 && (flag&8)) {
/* This might also be multi-session media which do not
get shown with a decent TOC.
CD-R TOC (profile 0x08) can be trusted. Others not.
@ -1079,14 +1054,13 @@ int isoburn_read_iso_head(struct burn_drive *d, int lba,
int isoburn_make_toc_entry(struct isoburn *o, int *session_count, int lba,
int track_blocks, char *volid, int flag)
int track_blocks, int flag)
{
int ret;
struct isoburn_toc_entry *item;
ret= isoburn_toc_entry_new(&item, o->toc, 0);
if(ret<=0) {
no_memory:;
isoburn_msgs_submit(o, 0x00060000,
"Not enough memory for emulated TOC entry object",
0, "FATAL", 0);
@ -1099,19 +1073,12 @@ no_memory:;
item->track_no= *session_count;
item->start_lba= lba;
item->track_blocks= track_blocks;
if(volid != NULL) {
item->volid= strdup(volid);
if(item->volid == NULL)
goto no_memory;
}
return(1);
}
/* @param flag bit0= allow unemulated media
bit1= free scanning without enclosing LBA-0-header
bit4= represent emulated media as one single session
(not with bit1)
@return -1 severe error, 0= no neat header chain, 1= credible chain read
*/
int isoburn_emulate_toc(struct burn_drive *d, int flag)
@ -1120,7 +1087,7 @@ int isoburn_emulate_toc(struct burn_drive *d, int flag)
int scan_start= 0, scan_count= 0, probe_minus_16= 0, growisofs_nwa;
int with_enclosure= 0;
struct isoburn *o;
char msg[160], size_text[80], *sev, volid[33], *volid_pt= NULL;
char msg[160], size_text[80], *sev;
time_t start_time, last_pacifier, now;
/* is the media emulated multi-session ? */
@ -1140,10 +1107,6 @@ int isoburn_emulate_toc(struct burn_drive *d, int flag)
{ret= 0; goto failure;}
lba= Libisoburn_overwriteable_starT;
with_enclosure= 1;
if((flag & 16) && o->emulation_mode == 1) {
ret= 1;
goto failure; /* This will represent the media as single session */
}
}
while(lba<image_size || (flag&2)) {
now= time(NULL);
@ -1157,7 +1120,7 @@ int isoburn_emulate_toc(struct burn_drive *d, int flag)
session_count, size_text, (double) (now - start_time));
isoburn_msgs_submit(o, 0x00060000, msg, 0, "UPDATE", 0);
}
read_flag= 1;
read_flag= 0;
if(flag&2)
read_flag|= (1<<15)|((session_count>0)<<14);
else {
@ -1175,11 +1138,8 @@ int isoburn_emulate_toc(struct burn_drive *d, int flag)
probe_minus_16= 0;
}
ret= isoburn_read_iso_head(d, lba, &track_blocks, volid, read_flag);
if(ret > 0) {
volid_pt= volid;
} else {
volid_pt= NULL;
ret= isoburn_read_iso_head(d, lba, &track_blocks, NULL, read_flag);
if(ret<=0) {
if(session_count>0) {
if(flag&2) {
if(ret==0) {
@ -1197,7 +1157,7 @@ int isoburn_emulate_toc(struct burn_drive *d, int flag)
isoburn_msgs_submit(o, 0x00060000, msg, 0, "WARNING", 0);
if(with_enclosure) {
ret= isoburn_make_toc_entry(o, &session_count, 0, image_size, NULL,0);
ret= isoburn_make_toc_entry(o, &session_count, 0, image_size, 0);
if(ret<=0)
goto failure;
}
@ -1209,8 +1169,7 @@ int isoburn_emulate_toc(struct burn_drive *d, int flag)
if(ret==2) /* ISO header was found in first half block */
lba-= 16;
ret= isoburn_make_toc_entry(o, &session_count, lba, track_blocks, volid_pt,
0);
ret= isoburn_make_toc_entry(o, &session_count, lba, track_blocks, 0);
if(ret<=0)
goto failure;
lba+= track_blocks;
@ -1243,7 +1202,7 @@ failure:;
isoburn_toc_entry_destroy(&(o->toc), 1);
if(with_enclosure && o->emulation_mode == 1) {
session_count= 0;
ret= isoburn_make_toc_entry(o, &session_count, 0, image_size, NULL, 0);
ret= isoburn_make_toc_entry(o, &session_count, 0, image_size, 0);
}
return(ret);
}
@ -1516,21 +1475,6 @@ void isoburn_toc_track_get_entry(struct isoburn_toc_track *t,
}
int isoburn_toc_track_get_emul(struct isoburn_toc_track *t, int *start_lba,
int *image_blocks, char volid[33], int flag)
{
if(t->toc_entry == NULL)
return(0);
if(t->toc_entry->volid == NULL)
return(0);
*start_lba= t->toc_entry->start_lba;
*image_blocks= t->toc_entry->track_blocks;
strncpy(volid, t->toc_entry->volid, 32);
volid[32]= 0;
return(1);
}
void isoburn_toc_disc_free(struct isoburn_toc_disc *d)
{
if(d->disc!=NULL)
@ -1580,8 +1524,7 @@ 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, re_valid= 0, track_count= 0;
time_t start_time= 0, last_pacifier= 0, now;
int lba, best_lba, size, re_valid= 0;
char volid[33], msg[160];
struct isoburn *o;
struct isoburn_toc_disc *disc= NULL;
@ -1598,7 +1541,6 @@ int isoburn_set_msc1(struct burn_drive *d, int adr_mode, char *adr_value,
if(o==NULL)
return(-1);
start_time= last_pacifier= time(NULL);
adr_num= atoi(adr_value);
if(adr_mode!=3 || (flag & 2)) {
disc= isoburn_toc_drive_get_disc(d);
@ -1672,24 +1614,10 @@ not_found:;
if(tracks==NULL)
continue;
for(j= 0; j<num_tracks; j++) {
now= time(NULL);
if(now - last_pacifier >= 5 && track_count > 0) {
last_pacifier= now;
sprintf(msg,
"Scanned %d tracks for matching volid in %.f seconds",
track_count, (double) (now - start_time));
isoburn_msgs_submit(o, 0x00060000, msg, 0, "UPDATE", 0);
}
track_count++;
ret= isoburn_toc_track_get_emul(tracks[0], &lba, &size, volid, 0);
if(ret < 0)
isoburn_get_track_lba(tracks[0], &lba, 0);
ret= isoburn_read_iso_head(d, lba, &size, volid, 1);
if(ret<=0)
continue;
if(ret == 0) {
isoburn_get_track_lba(tracks[0], &lba, 0);
ret= isoburn_read_iso_head(d, lba, &size, volid, 1);
if(ret<=0)
continue;
}
if(flag & 4) {
ret= regexec(&re, volid, 1, match, 0);
if(ret != 0)
@ -1713,13 +1641,6 @@ unknown_mode:;
}
ret= 1;
ex:;
if(start_time != last_pacifier && track_count > 0) {
now= time(NULL);
sprintf(msg,
"Scanned %d tracks for matching volid in %.f seconds",
track_count, (double) (now - start_time));
isoburn_msgs_submit(o, 0x00060000, msg, 0, "UPDATE", 0);
}
if(disc!=NULL)
isoburn_toc_disc_free(disc);
if((flag & 4) && re_valid)

View File

@ -68,7 +68,6 @@ int isoburn_toc_entry_new(struct isoburn_toc_entry **objpt,
o->track_no= 0;
o->start_lba= -1;
o->track_blocks= 0;
o->volid= NULL;
o->next= NULL;
if(boss!=NULL) {
for(s= boss; s->next!=NULL; s= s->next);
@ -86,8 +85,6 @@ int isoburn_toc_entry_destroy(struct isoburn_toc_entry **o, int flag)
return(0);
if(flag&1)
isoburn_toc_entry_destroy(&((*o)->next), flag);
if((*o)->volid != NULL)
free((*o)->volid);
free((char *) (*o));
*o= NULL;
return(1);
@ -408,16 +405,6 @@ 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);
/* <<< #ifdef shall be removed when libisofs-0.6.20 is released */
#ifdef Libisofs_hardlink_prooF
iso_write_opts_set_hardlinks(wopts, opts->hardlinks);
if(opts->hardlinks)
iso_write_opts_set_rrip_1_10_px_ino(wopts, 1);
#endif
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);
@ -433,7 +420,6 @@ int isoburn_prepare_disc_aux(struct burn_drive *in_d, struct burn_drive *out_d,
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_record_md5(wopts, opts->session_md5, opts->file_md5 & 3);
iso_write_opts_set_replace_mode(wopts, opts->replace_dir_mode,
opts->replace_file_mode, opts->replace_uid, opts->replace_gid);
iso_write_opts_set_default_dir_mode(wopts, opts->dir_mode);
@ -654,8 +640,6 @@ int isoburn_ropt_new(struct isoburn_read_opts **new_o, int flag)
o->noaaip= 1;
o->noacl= 1;
o->noea= 1;
o->noino= 1;
o->nomd5= 1;
o->preferjoliet= 0;
o->uid= geteuid();
o->gid= getegid();
@ -692,8 +676,6 @@ int isoburn_ropt_set_extensions(struct isoburn_read_opts *o, int ext)
o->noaaip= !!(ext & 32);
o->noacl= !!(ext & 64);
o->noea= !!(ext & 128);
o->noino= !!(ext & 256);
o->nomd5= !!(ext & 512);
return(1);
}
@ -702,8 +684,7 @@ 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->noaaip) << 5) | ((!!o->noacl) << 6) | ((!!o->noea) << 7) |
((!!o->noino) << 8) | ((!!o->nomd5) << 9);
((!!o->noaaip) << 5) | ((!!o->noacl) << 6) | ((!!o->noea) << 7);
return(1);
}
@ -762,28 +743,14 @@ int isoburn_ropt_set_input_charset(struct isoburn_read_opts *o,
}
int isoburn_ropt_get_input_charset(struct isoburn_read_opts *o,
char **input_charset)
int isoburn_igopt_get_in_charset(struct isoburn_read_opts *o,
char **input_charset)
{
*input_charset= o->input_charset;
return(1);
}
int isoburn_ropt_set_auto_incharset(struct isoburn_read_opts *o, int mode)
{
o->auto_input_charset= mode & 1;
return(1);
}
int isoburn_ropt_get_auto_incharset(struct isoburn_read_opts *o, int *mode)
{
*mode= o->auto_input_charset;
return(1);
}
int isoburn_ropt_get_size_what(struct isoburn_read_opts *o,
uint32_t *size, int *has_what)
{
@ -816,8 +783,6 @@ int isoburn_igopt_new(struct isoburn_imgen_opts **new_o, int flag)
o->rockridge= 1;
o->joliet= 0;
o->iso1999= 0;
o->hardlinks= 0;
o->aaip = 0;
o->omit_version_numbers= 0;
o->allow_deep_paths= 1;
o->allow_longer_paths= 0;
@ -876,10 +841,7 @@ 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->hardlinks= !!(ext & 8);
o->aaip= !!(ext & 32);
o->session_md5= !!(ext & 64);
o->file_md5= (ext & (128 | 256)) >> 7;
return(1);
}
@ -887,8 +849,7 @@ int isoburn_igopt_set_extensions(struct isoburn_imgen_opts *o, int ext)
int isoburn_igopt_get_extensions(struct isoburn_imgen_opts *o, int *ext)
{
*ext= (!!o->rockridge) | ((!!o->joliet)<<1) | ((!!o->iso1999)<<2) |
((!!o->hardlinks) << 3) | ((!!o->aaip) << 5) |
((!!o->session_md5) << 6) | ((o->file_md5 & 3) << 7);
((!!o->aaip) << 5);
return(1);
}

View File

@ -22,8 +22,6 @@ struct isoburn_toc_entry {
int start_lba;
int track_blocks;
char *volid; /* For caching a volume id from emulated toc on overwriteables */
struct isoburn_toc_entry *next;
};
@ -258,12 +256,6 @@ struct isoburn_read_opts {
unsigned int noacl:1; /* Do not read ACL from external file objects */
unsigned int noea:1; /* Do not read XFS-style EA from externals */
/* ts A90508 */
unsigned int noino:1; /* Discard eventual PX inode numbers */
/* ts A90810 */
unsigned int nomd5:1; /* Do not read eventual MD5 array */
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. */
@ -278,15 +270,6 @@ struct isoburn_read_opts {
*/
char *input_charset;
/**
* Enable or disable methods to automatically choose an input charset.
* This eventually overrides input_charset.
*
* bit0= allow to set the input character set automatically from
* attribute "isofs.cs" of root directory
*/
int auto_input_charset;
/* modified by the function isoburn_read_image */
unsigned int hasRR:1; /*< It will be set to 1 if RR extensions are present,
to 0 if not. */
@ -325,19 +308,8 @@ struct isoburn_imgen_opts {
unsigned int joliet :1;
unsigned int iso1999 :1;
/* Whether to mark suitable IsoNode as hardlinks in RRIP PX */
unsigned int hardlinks :1;
/* Write eventual AAIP info containing ACL and EA */
unsigned int aaip :1;
/* Produce and write a MD5 checksum of the whole session stream. */
unsigned int session_md5 :1;
/* Produce and write MD5 checksums for each single IsoFile.
See parameter files of iso_write_opts_set_record_md5().
*/
unsigned int file_md5 :2;
/* ts A90121 */
unsigned int aaip:1; /* Write eventual AAIP info containing ACL and EA */
/* relaxed constraints */

View File

@ -27,6 +27,8 @@
#endif /* Xorriso_standalonE */
#define Libisoburn_with_aaiP yes
#include "isoburn.h"
#include "libisoburn.h"
@ -200,10 +202,10 @@ 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);
iso_read_opts_set_no_aaip(ropts, read_opts->noaaip);
iso_read_opts_set_no_md5(ropts, read_opts->nomd5);
iso_read_opts_set_new_inos(ropts, read_opts->noino);
#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);
@ -213,7 +215,10 @@ create_blank_image:;
iso_read_opts_set_default_uid(ropts, read_opts->uid);
iso_read_opts_set_default_gid(ropts, read_opts->gid);
iso_read_opts_set_input_charset(ropts, read_opts->input_charset);
iso_read_opts_auto_input_charset(ropts, read_opts->auto_input_charset);
/* <<< experimental API call of libisofs
iso_read_opts_set_error_behavior(ropts, 1);
*/
ds = isoburn_data_source_new(d);
if(o->iso_data_source!=NULL)

View File

@ -216,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 22
#define isoburn_libisofs_req_micro 16
/** The minimum version of libburn to be used with this version of libisoburn
at compile time.
@since 0.1.0
*/
#define isoburn_libburn_req_major 0
#define isoburn_libburn_req_minor 7
#define isoburn_libburn_req_micro 0
#define isoburn_libburn_req_minor 6
#define isoburn_libburn_req_micro 4
/** The minimum version of libisofs to be used with this version of libisoburn
@ -259,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 4
#define isoburn_header_version_micro 2
#define isoburn_header_version_minor 3
#define isoburn_header_version_micro 6
/** Note:
Above version numbers are also recorded in configure.ac because libtool
wants them as parameters at build time.
@ -582,7 +582,7 @@ struct isoburn_toc_track **isoburn_toc_session_get_tracks(
/** Obtain a copy of the entry which describes a particular track.
Wrapper for: burn_track_get_entry()
@since 0.1.6
@param t The track handle
@param s The track handle
@param entry A pointer to memory provided by the caller. It will be filled
with info according to struct burn_toc_entry as defined
in libburn.h
@ -591,23 +591,6 @@ void isoburn_toc_track_get_entry(struct isoburn_toc_track *t,
struct burn_toc_entry *entry);
/** Obtain eventual ISO image parameters of an emulated track. This info was
gained with much effort and thus gets cached in the track object.
If this call returns 1 then one can save a call of isoburn_read_iso_head()
with return mode 1 which could cause an expensive read operation.
@since 0.4.0
@param t The track handle
@param start_lba Returns the start address of the ISO session
@param image_blocks Returns the number of 2048 bytes blocks
@param volid Caller provided memory for the volume id
@param flag unused yet, submit 0
@return 0= not an emulated ISO session , 1= reply is valid
*/
int isoburn_toc_track_get_emul(struct isoburn_toc_track *t, int *start_lba,
int *image_blocks, char volid[33], int flag);
/** Release the memory associated with a master handle of media.
The handle is invalid afterwards and may not be used any more.
Wrapper for: burn_disc_free()
@ -634,7 +617,7 @@ void isoburn_toc_disc_free(struct isoburn_toc_disc *disc);
do not read head from media but use first 64 kB from info
bit14= check both half buffers (not only second)
return 2 if found in first block
bit15= return -1 on read error
bit15= return-1 on read error
@return >0 seems to be a valid ISO image, 0 format not recognized, <0 error
*/
int isoburn_read_iso_head(struct burn_drive *d, int lba,
@ -730,18 +713,6 @@ int isoburn_ropt_destroy(struct isoburn_read_opts **o, int flag);
@since 0.3.4
Do not obtain XFS-style Extended Attributes from external
filesystem objects (e.g. local filesystem files).
bit8= noino
@since 0.4.0
Do not load eventual inode numbers from RRIP entry PX,
but generate a new unique inode number for each imported
IsoNode object.
PX inode numbers allow to mark families of hardlinks by
giving all family members the same inode number. libisofs
keeps the PX inode numbers unaltered when IsoNode objects
get written into an ISO image.
bit9= nomd5
@since 0.4.2
Do not load the eventual MD5 checksum array.
@return 1 success, <=0 failure
*/
#define isoburn_ropt_norock 1
@ -752,8 +723,6 @@ int isoburn_ropt_destroy(struct isoburn_read_opts **o, int flag);
#define isoburn_ropt_noaaip 32
#define isoburn_ropt_noacl 64
#define isoburn_ropt_noea 128
#define isoburn_ropt_noino 256
#define isoburn_ropt_nomd5 512
int isoburn_ropt_set_extensions(struct isoburn_read_opts *o, int ext);
int isoburn_ropt_get_extensions(struct isoburn_read_opts *o, int *ext);
@ -795,7 +764,7 @@ int isoburn_ropt_get_default_dirperms(struct isoburn_read_opts *o,
/** Set the character set for reading RR file names from ISO images.
@since 0.1.0
@param o The option set to work on
@param input_charset Set this to NULL to use the default locale charset
@param input_charset Set this to NULL to use the default locale charset.
For selecting a particular character set, submit its
name, e.g. as listed by program iconv -l.
Example: "UTF-8".
@ -806,20 +775,6 @@ int isoburn_ropt_set_input_charset(struct isoburn_read_opts *o,
int isoburn_ropt_get_input_charset(struct isoburn_read_opts *o,
char **input_charset);
/**
Enable or disable methods to automatically choose an input charset.
This eventually overrides the name set via isoburn_ropt_set_input_charset()
@since 0.3.8
@param mode Bitfield for control purposes:
bit0= allow to set the input character set automatically from
attribute "isofs.cs" of root directory.
Submit any other bits with value 0.
@return 1 success, <=0 failure
*/
int isoburn_ropt_set_auto_incharset(struct isoburn_read_opts *o, int mode);
int isoburn_ropt_get_auto_incharset(struct isoburn_read_opts *o, int *mode);
/** After calling function isoburn_read_image() there are informations
available in the option set.
@ -848,7 +803,7 @@ int isoburn_ropt_get_auto_incharset(struct isoburn_read_opts *o, int *mode);
/* ts A90122 */
/* >>> to be implemented:
#define isoburn_ropt_has_acl 64
#define isoburn_ropt_has_ea 128
#define isoburn_ropt_ihas_ea 128
*/
int isoburn_ropt_get_size_what(struct isoburn_read_opts *o,
@ -918,38 +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.
bit3= hardlinks
Enable hardlink consolidation. IsoNodes which refer to the
same source object and have the same properties will get
the same ISO image inode numbers.
If combined with isoburn_igopt_rrip_version_1_10 below,
then the PX entry layout of RRIP-1.12 will be used within
RRIP-1.10 (mkisofs does this without causing visible trouble).
bit5= aaip
The libisofs specific SUSP based extension of ECMA-119 which
can encode ACL and XFS-style Extended Attributes.
bit6= session_md5
@since 0.4.2
Produce and write a MD5 checksum of the whole session stream.
bit7= file_md5
@since 0.4.2
Produce and write MD5 checksums for each single IsoFile.
bit8= file_stability (only together with file_md5)
@since 0.4.2
Compute MD5 of each file before copying it into the image and
compare this with the MD5 of the actual copying. If they do
not match then issue MISHAP event.
See also libisofs.h iso_write_opts_set_record_md5()
@return 1 success, <=0 failure
*/
#define isoburn_igopt_rockridge 1
#define isoburn_igopt_joliet 2
#define isoburn_igopt_iso1999 4
#define isoburn_igopt_hardlinks 8
#define isoburn_igopt_aaip 32
#define isoburn_igopt_session_md5 64
#define isoburn_igopt_file_md5 128
#define isoburn_igopt_file_stability 256
#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);

View File

@ -4,12 +4,12 @@
xorriso. By Thomas Schmitt <scdbackup@gmx.net>
Integrated sub project of libburnia-project.org but also published via:
http://scdbackup.sourceforge.net/xorriso_eng.html
http://scdbackup.sourceforge.net/xorriso-0.4.2.pl00.tar.gz
http://scdbackup.sourceforge.net/xorriso-0.3.6.pl00.tar.gz
Copyright (C) 2006-2009 Thomas Schmitt, provided under GPL version 2.
------------------------------------------------------------------------------
xorriso is a program which copies file objects from POSIX compliant
xorriso is a program which maps file objects from POSIX compliant
filesystems into Rock Ridge enhanced ISO 9660 filesystems and allows
session-wise manipulation of such filesystems. It can load the management
information of existing ISO images and it writes the session results to
@ -42,14 +42,13 @@ components:
Optional at compile time are:
libreadline and the readline-dev headers make dialog mode more convenient.
on Linux: libacl and libacl-devel allow getting and setting ACLs.
zlib and zlib-devel allow zisofs compression.
If they were present at compile time, then the optional libraries have to
be present at runtime, too.
Obtain xorriso-0.4.2.pl00.tar.gz, take it to a directory of your choice and do:
Obtain xorriso-0.3.6.pl00.tar.gz, take it to a directory of your choice and do:
tar xzf xorriso-0.4.2.pl00.tar.gz
cd xorriso-0.4.2
tar xzf xorriso-0.3.6.pl00.tar.gz
cd xorriso-0.3.6
Within that directory execute:
@ -92,15 +91,6 @@ Never omit the "make clean" command after switching libreadline enabling.
Other deliberate dependency reduction options of ./configure are:
--disable-libacl avoid use of ACL functions like acl_to_text()
--disable-xattr avoid use of xattr functions like listxattr()
--disable-zlib avoid use of zlib functions like compress2()
xorriso allows to use external processes as file content filters. This is
a potential security risk which may be avoided by ./configure option
--disable-external-filters
By default the filter feature is disabled if effective user id and real
user id differ. This ban can be lifted by
--enable-external-filters-setuid
If you want xorriso to report a "Build timestamp" with its option -version:
make buildstamped
@ -108,8 +98,7 @@ If you want xorriso to report a "Build timestamp" with its option -version:
Drives and Disk File Objects
The user of libisoburn applications needs rw-permission for the CD/DVD/BD
drives which shall be used, even if only reading is intended.
The user of xorriso needs rw-permission for the CD burner device.
A list of rw-accessible drives can be obtained by
xorriso -devices
@ -186,9 +175,8 @@ and vice versa:
File Formats
Sector Maps
Sector maps describe the valid and invalid blocks on a media or a disk copy of
Currently there is only one file format peculiar to xorriso : sector maps
which describe the valid and invalid blocks on a media or a disk copy of
a media. xorriso creates and reads these file with its option -check_media.
The file begins with 32 bytes of cleartext of which the last one is a
@ -204,45 +192,6 @@ bit in the map. Then come the bits in form of 8-bit bytes.
Data block M is covered by bit B=M/S in the map, bit number B is stored in
byte B/8 as bit B%8. A valid readable data block has its bit set to 1.
Checksum Tags
Checksum tags are data blocks inside an ISO 9660 image which do not belong to
any file but rather tell the MD5 of a certain range of data blocks.
The superblock checksum tag is written after the ECMA-119 volume descriptors.
The tree checksum tag is written after the ECMA-119 directory entries.
The session checksum tag is written after all payload including the checksum
array. (Then follows eventual padding.)
The tags are single lines of printable text, padded by 0 bytes. They have
the following format:
Tag_id pos=# range_start=# range_size=# [session_start|next=#] md5=# self=#\n
Parameters md5= and self= are 32 digit hex, the others are decimal numbers.
Tag_id distinguishes the following tag types
"libisofs_rlsb32_checksum_tag_v1" Relocated 64 kB superblock tag
"libisofs_sb_checksum_tag_v1" Superblock tag
"libisofs_tree_checksum_tag_v1" Directory tree tag
"libisofs_checksum_tag_v1" Session tag
A relocated superblock may appear at LBA 0 of an image which was produced for
being stored in a disk file or on overwriteable media (e.g. DVD+R, BD-RE).
xorriso records a first session recorded with its superblock at LBA 32 and
the may follow at the next block address after the session tag which is
divisible by 32. Normally no session starts after the address given by
relocated superblock parameter session_start=.
Session oriented media like CD-R[W], DVD+R, BD-R will have no relocated
superblock but rather bear a table-of-content on media level.
A tag is valid if pos= tells its own block address and self= tells its own MD5
up to the last hex digit of md5=. range_start= tells the first block that is
covered by md5=, range_size= tells the number of blocks covered by md5=.
Relocated superblocks tell the block address of their session by session_start=.
Superblock and tree tag tell the block address of the next tag by next=.
The newline character at the end is mandatory.
libisoburn
@ -263,9 +212,9 @@ and a matching dynamically linked xorriso binary.
This binary is leaner but depends on properly installed libraries of suitable
revision.
Dynamic library and compile time header requirements for libisoburn-0.4.0 :
- libburn.so.4 , version libburn-0.7.0 or higher
- libisofs.so.6 , version libisofs-0.6.22 or higher
Dynamic library and compile time header requirements for libisoburn-0.3.6 :
- libburn.so.4 , version libburn-0.6.4 or higher
- libisofs.so.6 , version libisofs-0.6.16 or higher
libisoburn and xorriso will not start with libraries which are older than their
headers seen at compile time. So compile in the oldest possible installation
setup unless you have reason to enforce a newer bug fix level.

File diff suppressed because it is too large Load Diff

View File

@ -1,24 +1,22 @@
#!/bin/sh
# compile_xorriso.sh
# Copyright 2005 - 2009 Thomas Schmitt, scdbackup@gmx.net, GPL version 2
# Copyright 2005 - 2009 Thomas Schmitt, scdbackup@gmx.net, GPL
#
# Not intended for general use in production installations !
# Rather use: ./bootstrap ; ./configure ; make
#
# This is a development tool which expects a special setup of directories
# on a Linux system (e.g. SuSE 10.2).
# This is a development tool which expects a special setup of directories.
# It is to be executed in a common parent of the directories given with
# $isofs $isoburn $burn $xorr
isofs=./nglibisofs-develop/libisofs/libisofs_libisofs_la-
isofs_filter=./nglibisofs-develop/libisofs/filters/libisofs_libisofs_la-
burn=./libburn-develop/libburn
isoburn=./libisoburn-develop/libisoburn
xorr=./libisoburn-develop/xorriso
debug_opts="-O2"
def_opts="-DXorriso_allow_external_filterS"
def_opts=
largefile_opts="-D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE=1"
do_strip=0
static_opts=
@ -87,11 +85,6 @@ libisofs="$libisofs $isofs"util_rbtree.o
libisofs="$libisofs $isofs"system_area.o
libisofs="$libisofs $isofs"make_isohybrid_mbr.o
libisofs="$libisofs $isofs"aaip_0_2.o
libisofs="$libisofs $isofs"filter.o
libisofs="$libisofs $isofs_filter"external.o
libisofs="$libisofs $isofs_filter"zisofs.o
libisofs="$libisofs $isofs_filter"gzip.o
libisofs="$libisofs $isofs"md5.o
echo "Version timestamp : $(sed -e 's/#define Xorriso_timestamP "//' -e 's/"$//' "$xorr"/xorriso_timestamp.h)"
@ -149,8 +142,7 @@ cc -I. -DXorriso_with_maiN $def_libreadline \
$link_libreadline \
\
-lpthread \
-lacl \
-lz
-lacl
ret=$?
if test "$ret" = 0

View File

@ -1,4 +1,4 @@
AC_INIT([xorriso], [0.4.2], [http://libburnia-project.org])
AC_INIT([xorriso], [0.3.6], [http://libburnia-project.org])
AC_PREREQ([2.50])
dnl AC_CONFIG_HEADER([config.h])
@ -8,15 +8,15 @@ AC_CANONICAL_TARGET
AM_INIT_AUTOMAKE([subdir-objects])
BURN_MAJOR_VERSION=0
BURN_MINOR_VERSION=7
BURN_MICRO_VERSION=1
BURN_MINOR_VERSION=6
BURN_MICRO_VERSION=5
AC_SUBST(BURN_MAJOR_VERSION)
AC_SUBST(BURN_MINOR_VERSION)
AC_SUBST(BURN_MICRO_VERSION)
LIBISOFS_MAJOR_VERSION=0
LIBISOFS_MINOR_VERSION=6
LIBISOFS_MICRO_VERSION=23
LIBISOFS_MICRO_VERSION=16
AC_SUBST(LIBISOFS_MAJOR_VERSION)
AC_SUBST(LIBISOFS_MINOR_VERSION)
AC_SUBST(LIBISOFS_MICRO_VERSION)
@ -46,9 +46,7 @@ fi
dnl If iconv(3) is in an extra libiconv, then it gets added to variable LIBS.
dnl If not, then no -liconv will be added.
AC_CHECK_LIB(iconv, iconv, , )
dnl GNU iconv has no function iconv() but libiconv() and a macro iconv()
AC_CHECK_LIB(iconv, libiconv, , )
AC_PROG_LIBTOOL
AC_SUBST(LIBTOOL_DEPS)
LIBTOOL="$LIBTOOL --silent"
@ -80,7 +78,6 @@ AC_SUBST(THREAD_LIBS)
TARGET_SHIZZLE
AC_SUBST(ARCH)
AC_SUBST(LIBBURNIA_PKGCONFDIR)
AC_SUBST(LIBBURN_ARCH_LIBS)
@ -112,13 +109,6 @@ else
CFLAGS="$CFLAGS -DDEBUG"
fi
dnl Determine target directory for libisoburn-*.pc
dnl Important: Must be performed _after_ TARGET_SHIZZLE
dnl
LIBBURNIA_SET_PKGCONFIG
AC_ARG_ENABLE(libreadline,
[ --enable-libreadline Enable use of libreadline by xorriso, default=yes],
, enable_libreadline=yes)
@ -137,7 +127,7 @@ AC_SUBST(READLINE_DEF)
AC_ARG_ENABLE(libacl,
[ --enable-libacl Enable use of libacl by libisofs, default=yes],
[ --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.
@ -152,7 +142,7 @@ AC_SUBST(LIBACL_DEF)
AC_ARG_ENABLE(xattr,
[ --enable-xattr Enable use of xattr by libisofs, default=yes],
[ --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.
@ -165,51 +155,9 @@ fi
AC_SUBST(XATTR_DEF)
AC_ARG_ENABLE(zlib,
[ --enable-zlib Enable use of zlib by libisofs, default=yes],
, enable_zlib=yes)
if test x$enable_zlib = xyes; then
dnl Check whether there is the header for zlib.
dnl If not, erase this macro which would enable use of compress2() and others.
dnl The empty parameter after "compress2" causes -lz.
ZLIB_DEF="-DLibisofs_with_zliB"
AC_CHECK_HEADER(zlib.h, AC_CHECK_LIB(z, compress2, , ZLIB_DEF= ), ZLIB_DEF= )
else
ZLIB_DEF=
fi
AC_SUBST(ZLIB_DEF)
AC_ARG_ENABLE(external-filters,
[ --enable-external-filters Enable use of external filter programs by xorriso, default=yes],
, enable_external_filters=yes)
if test x"$enable_external_filters" = xyes; then
EXTF_DEF="-DXorriso_allow_external_filterS"
echo "enabled xorriso external filter programs"
else
EXTF_DEF=
echo "disabled xorriso external filter programs"
fi
AC_SUBST(EXTF_DEF)
AC_ARG_ENABLE(external-filters-setuid,
[ --enable-external-filters-setuid Enable xorriso external filter programs under setuid, default=no],
, enable_external_filters_setuid=no)
if test x$enable_external_filters_setuid = xyes; then
EXTF_SUID_DEF="-DXorriso_allow_extf_suiD"
echo "enabled xorriso external filter programs under setuid"
else
EXTF_SUID_DEF=
echo "disabled xorriso external filter programs under setuid"
fi
AC_SUBST(EXTF_SUID_DEF)
AC_CONFIG_FILES([
Makefile
version.h
xorriso.pc
])
AC_OUTPUT
# xorriso.pc

View File

@ -25,11 +25,11 @@
current_dir=$(pwd)
lone_dir="$current_dir"/"xorriso-standalone"
xorriso_rev=0.4.2
xorriso_rev=0.3.6
# For unstable uploads:
## xorriso_pl=""
xorriso_pl=""
# For stable releases:
xorriso_pl=".pl00"
# xorriso_pl=".pl00"
with_bootstrap_tarball=1
@ -103,7 +103,7 @@ copy_files xorriso/configure_ac.txt "$lone_dir"/configure.ac
copy_files xorriso/xorriso_makefile_am.txt "$lone_dir"/Makefile.am
# copy_files xorriso/xorriso_pc_in.txt "$lone_dir"/xorriso.pc.in
copy_files xorriso/xorriso_pc_in.txt "$lone_dir"/xorriso.pc.in
copy_files xorriso/README "$lone_dir"/README
@ -134,8 +134,6 @@ copy_files \
copy_files xorriso/xorriso_buildstamp_none.h \
"$lone_dir"/xorriso/xorriso_buildstamp.h
copy_files xorriso/xorriso_buildstamp_none.h \
"$lone_dir"/xorriso/xorriso_buildstamp_none.h
create_dir "$lone_dir"/test
copy_files \
@ -152,7 +150,6 @@ goto_dir "$current_dir"/nglibisofs-develop
copy_files libisofs/*.[ch] "$lone_dir"/libisofs
copy_files libisofs/filters/*.[ch] "$lone_dir"/libisofs/filters
copy_files doc/susp_aaip*.txt "$lone_dir"/doc
copy_files doc/zisofs_format.txt "$lone_dir"/doc
copy_files COPYRIGHT "$lone_dir"/libisofs
# To get a common version.h

View File

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

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -16,21 +16,9 @@
struct XorrisO;
#define Xorriso_program_versioN "0.4.2"
/* --------------------- Fundamental Management ------------------- */
/* Get the version text (e.g. "0.4.2") of the program code.
@param flag unused yet, submit 0
@return readonly character string
*/
char *Xorriso__get_version_text(int flag);
/* Mandatory call:
Create a new xorriso object and tell it the program name to be used
/* Create a new xorriso object and tell it the program name to be used
with messages and for decision of special behavior.
@param xorriso returns the newly created XorrisO object
@param progname typically argv[0] of main(). Some leafnames of the progname
@ -40,147 +28,23 @@ char *Xorriso__get_version_text(int flag);
"genisofs" alias of "xorrisofs"
"mkisofs" alias of "xorrisofs"
"genisoimage" alias of "xorrisofs"
@param flag unused yet, submit 0
@parm flag unused yet, submit 0
@return >0 success , <=0 failure, no object created
*/
int Xorriso_new(struct XorrisO ** xorriso, char *progname, int flag);
/* Interpret certain commands which shall get into effect before the
libraries get initialized:
-abort_on , -report_about , -return_with , -list_delimiter
Some commands get executed only if they are the only command in argv:
-prog_help , -help , -no_rc
Some get examined for the need to redirect stdout messages
-dev , -outdev , -indev , -as
@param xorriso The context object in which to perform the commands.
@param argc Number of arguments.
@param argv The arguments. argv[0] contains the program name.
argv[1] to argv[argc-1] contain commands and parameters.
@param idx Argument cursor. When this function is called, *idx must
be at least 1, argv[*idx] must be to a command.
*idx will iterate over commands and parameters until this
function aborts or until argc is reached.
@param flag bit0= do not interpret argv[1]
@return <0 error
0 end program
1 ok, go on
*/
int Xorriso_prescan_args(struct XorrisO *xorriso, int argc, char **argv,
int flag);
/* Mandatory call:
It has to be made before calling any function listed below this point.
Make global library initializations.
/* Make global library initializations.
This must be done with the first xorriso object that gets created and
with the first xorriso object that gets created after Xorriso_destroy(,1).
@param xorriso The context object.
@param flag unused yet, submit 0
@return <=0 error , >0 success
*/
int Xorriso_startup_libraries(struct XorrisO *xorriso, int flag);
/* Read and interpret commands from eventual startup files as listed in
man xorriso.
@param xorriso The context object in which to perform the commands.
@param flag unused yet, submit 0
@return <=0 = error
1 = success
3 = end program run (e.g. because command -end was encountered)
*/
int Xorriso_read_rc(struct XorrisO *xorriso, int flag);
/* Check whether program arguments shall be backslash decoded and eventually
replace *argv by a new argument vector. The old one will not be freed
by this call. If it is dynamic memory then you need to keep a copy of
the pointer and free it yourself after this call.
@param xorriso The context object
@param argc Number of arguments.
@param argv The arguments. (*argv)[0] contains the program name.
(*argv)[1] to (*argv)[argc-1] contain commands and parameters
@param flag unused yet, submit 0
@return <= 0 error , > 0 success
*/
int Xorriso_program_arg_bsl(struct XorrisO *xorriso, int argc, char ***argv,
int flag);
/* Interpret argv as xorriso command options and their parameters.
(An alternative is to call functions of the options API directly and to
perform own error status evaluation. See below: Options API.)
After the first command and its parameters there may be more commands and
parameters. All parameters must be given in the same call as their command.
@param xorriso The context object in which to perform the commands.
@param argc Number of arguments.
@param argv The arguments. argv[0] contains the program name.
argv[1] to argv[argc-1] contain commands and parameters.
@param idx Argument cursor. When this function is called, *idx must
be at least 1, argv[*idx] must be a command.
*idx will iterate over commands and parameters until this
function aborts or until argc is reached.
@param flag bit0= recursion
bit1= these are the main() program start arguments
@return <=0 = error
1 = success
2 = problem event ignored
3 = end program run (e.g. because command -end was encountered)
*/
int Xorriso_interpreter(struct XorrisO *xorriso,
int argc, char **argv, int *idx, int flag);
/* Parse a command line into words and use them as argv for a call of
Xorriso_interpreter(). Put out some info lines about the outcome.
@param xorriso The context object in which to perform the commands.
@param line A text of one or more words according to man xorriso
paragraph "Command processing" up to and including
"Backslash Interpretation".
@param flag bit0 to bit15 are forwarded to Xorriso_interpreter()
bit16= no pageing of info lines
bit17= print === bar even if xorriso->found<0
@return see return of Xorriso_interpreter()
*/
int Xorriso_execute_option(struct XorrisO *xorriso, char *line, int flag);
/* Enter xorriso command line dialog mode, eventually using libreadline.
This call returns immediately if not option -dialog "on" was performed
before.
@param xorriso The context object in which to perform the commands.
@param flag unused yet, submit 0
@return <=0 error, 1= dialog mode ended normally ,
3= dialog mode ended normally,interpreter asks to end program
*/
int Xorriso_dialog(struct XorrisO *xorriso, int flag);
/* Inquire whether option -commit would make sense.
@param xorriso The context object to inquire.
@param flag unused yet, submit 0
@return 0= -commit would have nothing to do
1= a new image session would emerge at -commit
*/
int Xorriso_change_is_pending(struct XorrisO *xorriso, int flag);
/* Compute the exit value from the recorded maximum event severity.
@param xorriso The context object to inquire.
@param flag unused yet, submit 0
@return The computed exit value
*/
int Xorriso_make_return_value(struct XorrisO *xorriso, int flag);
/* Mandatory call:
Destroy xorriso object when it is no longer needed.
@param xorriso The context object to destroy. *xorriso will become NULL.
@param flag bit0= Perform global library shutdown.
Use only with last xorriso object to be destroyed.
@return <=0 error, >0 success
/* Destroy xorriso object when it is no longer needed.
@param flag bit0= Make global librariy shutdown.
Use only with last xorriso object to be destroyed.
*/
int Xorriso_destroy(struct XorrisO **xorriso, int flag);
@ -285,23 +149,6 @@ int Xorriso_get_problem_status(struct XorrisO *xorriso, char severity[80],
int Xorriso_process_msg_queues(struct XorrisO *xorriso, int flag);
/** Write a message for option -errfile_log.
@param xorriso The environment handle
@param error_code The unique error code of your message.
Submit 0 if you do not have reserved error codes within
the libburnia project.
@param msg_text Not more than 8196 characters of message text.
@param os_errno Eventual errno related to the message. Submit 0 if
the message is not related to a operating system error.
@param flag bit0-7= meaning of msg_text
( 0= ERRFILE path , for internal use mainly )
1= mark line text (only to be put out if enabled)
@return <=0 error , >0 success
*/
int Xorriso_process_errfile(struct XorrisO *xorriso,
int error_code, char msg_text[], int os_errno,
int flag);
/* The outlist stack allows to redirect the info and result messages from
their normal channels into a pair of string lists which can at some
@ -410,16 +257,6 @@ int Xorriso_lst_destroy_all(struct Xorriso_lsT **lstring, int flag);
After each call to an option function, there should happen:
Xorriso_eval_problem_status()
One should follow its eventual advice to abort.
Options with a varying number of arguments get them passed like
Xorriso_interpreter(). E.g.:
int Xorriso_option_add(struct XorrisO *xorriso, int argc, char **argv,
int *idx, int flag);
They begin to read the arguments at position *idx and will see the list
end either at the next argv which contains the -list_delimiter text or
at argv[argc-1]. After the call, *idx will be the index of the first not
yet interpreted argv.
*/
@ -465,9 +302,6 @@ int Xorriso_option_as(struct XorrisO *xorriso, int argc, char **argv,
int Xorriso_option_assert_volid(struct XorrisO *xorriso, char *pattern,
char *severity, int flag);
/* Option -auto_charset "on"|"off" */
int Xorriso_option_auto_charset(struct XorrisO *xorriso, char *mode, int flag);
/* Option -backslash_codes */
int Xorriso_option_backslash_codes(struct XorrisO *xorriso, char *mode,
int flag);
@ -497,15 +331,6 @@ int Xorriso_option_cdx(struct XorrisO *xorriso, char *disk_path, int flag);
*/
int Xorriso_option_charset(struct XorrisO *xorriso, char *name, int flag);
/* Options -check_md5 and -check_md5_r
@param flag bit0= issue summary message
bit1= do not reset pacifier, no final pacifier message
bit2= do not issue pacifier messages at all
bit3= recursive: -check_md5_r
*/
int Xorriso_option_check_md5(struct XorrisO *xorriso,
int argc, char **argv, int *idx, int flag);
/* Option -check_media */
int Xorriso_option_check_media(struct XorrisO *xorriso,
int argc, char **argv, int *idx, int flag);
@ -618,10 +443,6 @@ int Xorriso_option_errfile_log(struct XorrisO *xorriso,
int Xorriso_option_error_behavior(struct XorrisO *xorriso,
char *occasion, char *behavior, int flag);
/* Option -external_filter */
int Xorriso_option_external_filter(struct XorrisO *xorriso,
int argc, char **argv, int *idx, int flag);
/* Options -extract , -extract_single */
/* @param flag bit0=do not report the restored item
bit1=do not reset pacifier, no final pacifier message
@ -660,9 +481,6 @@ int Xorriso_option_gid(struct XorrisO *xorriso, char *gid, int flag);
/* Option -grow_blindly */
int Xorriso_option_grow_blindly(struct XorrisO *xorriso, char *msc2, int flag);
/* Option -hardlinks "on"|"off" */
int Xorriso_option_hardlinks(struct XorrisO *xorriso, char *mode, int flag);
/* Option -help and part of -prog_help */
int Xorriso_option_help(struct XorrisO *xorriso, int flag);
@ -733,9 +551,6 @@ int Xorriso_option_map_l(struct XorrisO *xorriso, int argc, char **argv,
/* Option -mark */
int Xorriso_option_mark(struct XorrisO *xorriso, char *mark, int flag);
/* Option -md5 */
int Xorriso_option_md5(struct XorrisO *xorriso, char *mode, int flag);
/* Option -mkdir alias -mkdiri */
int Xorriso_option_mkdiri(struct XorrisO *xorriso, int argc, char **argv,
int *idx, int flag);
@ -878,12 +693,6 @@ int Xorriso_option_setfattri(struct XorrisO *xorriso, char *name, char *value,
int Xorriso_option_setfattr_listi(struct XorrisO *xorriso, char *path,
int flag);
/* Options -set_filter , -set_filter_r */
/* @param flag bit0=recursive -set_filter_r
*/
int Xorriso_option_set_filter(struct XorrisO *xorriso, char *name,
int argc, char **argv, int *idx, int flag);
/* Option -speed */
int Xorriso_option_speed(struct XorrisO *xorriso, char *speed, int flag);
@ -914,10 +723,6 @@ int Xorriso_option_toc(struct XorrisO *xorriso, int flag);
/* Option -uid */
int Xorriso_option_uid(struct XorrisO *xorriso, char *uid, int flag);
/* Option -unregister_filter */
int Xorriso_option_unregister_filter(struct XorrisO *xorriso, char *name,
int flag);
/* Options -update and -update_r
@param flag bit0= issue summary message
bit1= do not reset pacifier, no final pacifier message
@ -939,10 +744,6 @@ int Xorriso_option_volid(struct XorrisO *xorriso, char *volid, int flag);
/* Option -xattr "on"|"off" */
int Xorriso_option_xattr(struct XorrisO *xorriso, char *mode, int flag);
/* Option -zisofs */
int Xorriso_option_zisofs(struct XorrisO *xorriso, char *mode, int flag);
#endif /* Xorriso_includeD */

View File

@ -35,12 +35,10 @@ Vice versa xorriso is able to restore file objects from ISO 9660 filesystems.
<P>
<H2>Hardware requirements:</H2>
About any CD, DVD, or BD recorder produced in the recent ten years.
<BR>
<A HREF="http://libburnia-project.org">libburn</A>
supports recorders which are compliant to standards MMC-1 for CD and
MMC-5 for DVD or BD. Linux and FreeBSD allow to access drives connected
via SCSI, PATA (aka IDE, ATA), USB, or SATA.
A CD/DVD/BD recorder suitable for
<A HREF="http://libburnia-project.org">http://libburnia-project.org</A> <BR>
(SCSI , ATA , USB , or SATA writers compliant to standard MMC-3 for CD
and to MMC-5 for DVD or BD).
<BR>
</P>
@ -60,22 +58,39 @@ There will be no direct operation of optical drives, but only POSIX i/o
with objects of the local filesystem.
</DD>
<DD>
Might work with DVD-RAM, DVD+RW, BD-RE
but rather not with CD, DVD-R, DVD+R, BD-R.
Might work with DVD-RAM, DVD+RW, BD-RE but not with CD, DVD-R, DVD+R, BD-R.
</DD>
</DL>
<H3>Optional supporting software:</H2>
<DL>
<DT>libreadline and libreadline-dev</DT>
<DD>eventually make dialog more convenient.</DD>
<DD>are optional and eventually make dialog more convenient.</DD>
<DT>libacl and libacl-devel</DT>
<DD>eventually allow on Linux to get and set ACLs.</DD>
<DT>zlib and zlib-devel</DT>
<DD>eventually allow zisofs and gzip compression.</DD>
<DD>are optional and eventually allow on Linux to get and set ACLs.</DD>
</DL>
</P>
<P>
<H2>
GPL software included:<BR>
</H2>
<DL>
<DT>libburn-0.6.5</DT>
<DD>reads and writes data from and to CD, DVD, BD.</DD>
<DD>(founded by Derek Foreman and Ben Jansens,
developed and maintained since August 2006 by
Thomas Schmitt from team of libburnia-project.org)</DD>
<DT>libisofs-0.6.16</DT>
<DD>operates on ISO 9660 filesystem images.</DD>
<DD>(By Vreixo Formoso, Mario Danic and Thomas Schmitt
from team of libburnia-project.org)</DD>
<DT>libisoburn-0.3.6</DT>
<DD>coordinates libburn and libisofs, emulates multi-session where needed.</DD>
<DD>(By Vreixo Formoso and Thomas Schmitt
from team of libburnia-project.org)</DD>
</DL>
<DD>The source code of this software is independent of
cdrecord and mkisofs.</A>
</DD>
</P>
<P>
This program has been tested on Linux, FreeBSD, and Solaris systems.<BR>
For ports to other usable systems <A HREF="#contact">contact us</A>.
@ -93,7 +108,7 @@ ISO 9660 formatter and burner for CD, DVD, BD are fixely integrated.
Operates on an existing ISO image or creates a new one.
</LI>
<LI>
Copies files from filesystem into the ISO image and vice versa.
Copies files from filesystem into the ISO image.
</LI>
<LI>
Changes file properties, renames or deletes file objects in the ISO image.
@ -102,26 +117,22 @@ Changes file properties, renames or deletes file objects in the ISO image.
Updates ISO subtrees incrementally to match given disk subtrees.
</LI>
<LI>
Can record and restore hard link relations, ACL, and xattr.
</LI>
<LI>
Can attach MD5 checksums to each data file and the whole session.
</LI>
<LI>
File content may get zisofs or gzip compressed or filtered by external
processes.
</LI>
<LI>
Writes result as completely new image or as add-on session
to optical media or filesystem objects.
</LI>
<LI>
Can activate ISOLINUX boot images by El Torito boot record.
Can activate ISOLINUX boot images by El Torito boot record and by MBR.
</LI>
<LI>
Can perform multi-session tasks as emulation of mkisofs and cdrecord.
</LI>
<LI>
Can restore single files and whole trees from ISO image to disk filesystem.
</LI>
<LI>
Can record and restore ACL and xattr of disk files.
</LI>
<LI>
Can issue commands to mount older sessions on Linux or FreeBSD.
</LI>
<LI>
@ -245,21 +256,16 @@ Important: -indev and -outdev have to be different drives.
</DT>
<DT>Dialog mode accepts one or more options per line. An option and all its
arguments have to be given in one single line. Backslash may be used to mark
a line as incomplete so it gets continued by the next input line.
<BR>
Command -end stops the program run. It will write eventually pending changes
to media, if that has not already been done by a previous -commit.</DT>
arguments have to be given in one single line. Command -end stops the program
run. It will write eventually pending changes to media, if that has not
already been done by a previous -commit.</DT>
<DD>$<KBD>&nbsp;xorriso -dialog on</KBD></DD>
<DD><KBD>enter option and arguments :</KBD></DD>
<DD><KBD><B>-dev /dev/sr0</B></KBD></DD>
<DD><KBD>enter option and arguments :</KBD></DD>
<DD><KBD><B>-map /home/me/prepared_for_dvd/sounds_dummy /sounds</B></KBD></DD>
<DD><KBD>enter option and arguments :</KBD></DD>
<DD><KBD><B>-map /home/me/prepared_for_dvd/movies \</B></KBD></DD>
<DD><KBD>Trailing backslash : Enter rest of line (or @@@ to clear it) :
</KBD></DD>
<DD><KBD><B> /movies</B></KBD></DD>
<DD><KBD><B>-map /home/me/prepared_for_dvd/movies /movies</B></KBD></DD>
<DD>Available navigation commands: -cd, -ls, -du, -find</DD>
<DD><KBD>enter option and arguments :</KBD></DD>
<DD><KBD><B>-commit</B></KBD></DD>
@ -279,31 +285,19 @@ to match the new disk trees.
Older states can be retrieved by help of mount options like "sbsector="
or by help of xorriso option -mount.
<BR>
Eventual ACL, xattr and hardlink relations will be recorded. MD5 checksums
will be computed and recorded. Data reading will be avoided by accelerator
option -disk_dev_ino. After writing, the new session will be checked
by its recorded MD5.
<BR>
Eventual ACL or xattr will be recorded. Data reading will be avoided by
accelerator option -disk_dev_ino.
Only blank media or media with volume id "PROJECTS_MAIL_..." will be accepted.
Files with names ending by ".o" or ".swp" are excluded by options -not_leaf.
</DT>
<DD>$<KBD>&nbsp;xorriso -for_backup -disk_dev_ino on \</KBD></DD>
<DD>$<KBD>&nbsp;xorriso -acl on -xattr on -disk_dev_ino on \</KBD></DD>
<DD><KBD>&nbsp;&nbsp; -assert_volid 'PROJECTS_MAIL_*' FATAL \</KBD></DD>
<DD><KBD>&nbsp;&nbsp; -dev /dev/sr0 \</KBD></DD>
<DD><KBD>&nbsp;&nbsp; -volid PROJECTS_MAIL_"$(date '+%Y_%m_%d_%H%M%S')" \</KBD></DD>
<DD><KBD>&nbsp;&nbsp; -not_leaf '*.o' -not_leaf '*.swp' \</KBD></DD>
<DD><KBD>&nbsp;&nbsp; -update_r /home/thomas/open_source_projects /open_source_projects \</KBD></DD>
<DD><KBD>&nbsp;&nbsp; -update_r /home/thomas/personal_mail /personal_mail \</KBD></DD>
<DD><KBD>&nbsp;&nbsp; -commit -toc -check_md5 FAILURE -- -eject all</KBD></DD>
<DT>
To apply zisofs compression to those data files which get newly copied from
the local filesystem, perform immediately before -commit :
<DD><KBD>&nbsp;&nbsp; -hardlinks perform_update \</KBD></DD>
<DD>
<KBD>&nbsp;&nbsp; -find / -type f -pending_data -exec set_filter --zisofs -- \</KBD></DD>
</DD>
</DT>
<DD><KBD>&nbsp;&nbsp; -commit -toc -eject all</KBD></DD>
<DT>
<HR>
@ -369,11 +363,7 @@ Be cautious not to overwrite your hard disk instead of your USB stick:
<DT>In batch mode it is possible to operate xorriso in a pipeline
with an external consumer of the generated ISO image. Any message
output will be redirected to stderr in this case.
Examples for consumers are cdrecord or growisofs on operating systems
where xorriso cannot operate the burner drive directly,
or a ssh pipe to another system which has the desired drive
and a suitable burn program.</DT>
output will be redirected to stderr in this case.</DT>
<DD>$<KBD>&nbsp;xorriso -outdev - ...other.options... | consumer</KBD></DD>
@ -429,10 +419,9 @@ files or trees to disk:
<P>
<DL>
<DT><H3>Download as source code (see README):</H3></DT>
<DD><A HREF="xorriso-0.4.2.pl00.tar.gz">xorriso-0.4.2.pl00.tar.gz</A>
(1295 KB).
<DD><A HREF="xorriso-0.3.6.pl00.tar.gz">xorriso-0.3.6.pl00.tar.gz</A>
(1180 KB).
</DD>
<DD>(Released 29 Aug 2009)</DD>
</DL>
</DD>
</DL>
@ -457,85 +446,60 @@ an <A HREF="http://www.opensource.org/">Open Source</A> approved license</DD>
<HR>
<P>
Bug fixes towards xorriso-0.4.0.pl00:
Bug fixes towards xorriso-0.3.4.pl00:
<UL>
<LI>xorriso -as mkisofs did not understand the -C option of growisofs any more
<LI>Option -devices stalled if a U3 enhanced memory stick was present</LI>
<LI>Solaris recognized Rock Ridge in ISO images from xorriso
only if the new AAIP extension hid a bug with -compliance old_rr</LI>
<LI>Solaris was not able to use the ".." directory entry for navigation
in xorriso generated ISO images</LI>
<!--
<LI>- none -</LI>
-->
</UL>
</P>
<P>
Enhancements towards previous stable version xorriso-0.4.0.pl00:
<UL>
<LI>New option -md5, new -as mkisofs option --md5</LI>
<LI>New options -check_md5, -check_md5_r</LI>
<LI>New find actions check_md5 get_md5, get_any_xattr, make_md5</LI>
<LI>New find tests -has_md5, -has_any_xattr</LI>
<LI>New option -list_profiles</LI>
<LI>New option -calm_drive</LI>
<LI>Options -lsl and -lsdl now display correct link counts if -hardlinks is on
<!--
<LI>- none -</LI>
-->
</UL>
</P>
<HR>
<P>
<H3>
Library copies included in xorriso tarballs:
</H3>
<DL>
<DT>libburn-0.7.1</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.23</DT>
<DD>operates on ISO 9660 filesystem images.</DD>
<DD>(By Vreixo Formoso, Mario Danic and Thomas Schmitt
from team of libburnia-project.org)</DD>
<DT>libisoburn-0.4.2</DT>
<DD>coordinates libburn and libisofs, emulates multi-session where needed.</DD>
<DD>(By Vreixo Formoso and Thomas Schmitt
from team of libburnia-project.org)</DD>
<DD>&nbsp;</DD>
<DT>The source code of this software is independent of
cdrecord and mkisofs.</DT>
</DL>
</P>
<HR>
<P>
<DL>
<DT><H3>Development snapshot, version 0.4.3 :</H3></DT>
<DD>Bug fixes towards xorriso-0.4.2.pl00:
<UL>
<LI>- none yet -</LI>
<!--
-->
</UL>
</DD>
<DD>Enhancements towards stable version 0.4.2.pl00:
Enhancements towards previous stable version xorriso-0.3.4.pl00:
<UL>
<LI>
Dummy MMC adapter for compilation on systems other than Linux, FreeBSD
</LI>
<LI>
Default of -compliance has been changed to "old_rr". The previous default is
now available as "new_rr".
</LI>
<LI>
New -stream_recording modes with start address or "data". "on" is now 32s.
</LI>
</UL>
</P>
<HR>
<P>
<DL>
<DT><H3>Development snapshot, version 0.3.7 :</H3></DT>
<DD>Bug fixes towards xorriso-0.3.6.pl00:
<UL>
<LI>- none yet -</LI>
<!--
-->
</UL>
</DD>
<DD>Enhancements towards stable version 0.3.6.pl00:
<UL>
<LI>- none yet -</LI>
<!--
<LI>- none yet -</LI>
-->
</UL>
</DD>
<DD>&nbsp;</DD>
<DD><A HREF="README_xorriso_devel">README 0.4.3</A>
<DD><A HREF="xorriso_help_devel">xorriso_0.4.3 -help</A></DD>
<DD><A HREF="man_1_xorriso_devel.html">man xorriso (as of 0.4.3)</A></DD>
<DD><A HREF="README_xorriso_devel">README 0.3.7</A>
<DD><A HREF="xorriso_help_devel">xorriso_0.3.7 -help</A></DD>
<DD><A HREF="man_1_xorriso_devel.html">man xorriso (as of 0.3.7)</A></DD>
<DD>&nbsp;</DD>
<DT>If you want to distribute development versions of xorriso, then use
this tarball which produces static linking between xorriso and the
@ -545,8 +509,8 @@ libburnia libraries.
installation see README)
</DD>
<DD>
<A HREF="xorriso-0.4.3.tar.gz">xorriso-0.4.3.tar.gz</A>
(1295 KB).
<A HREF="xorriso-0.3.7.tar.gz">xorriso-0.3.7.tar.gz</A>
(1180 KB).
</DD>
<DT>A dynamically linked development version of xorriso can be obtained
from repositories of
@ -561,9 +525,7 @@ versions for dynamic linking. Only release versions are safe for that.
</KBD></DD>
<DD>Install: <KBD><B>cd libburn ; ./bootstrap ; ./configure --prefix /usr ; make ; make install</B>
</KBD></DD>
<DD>Download:
<KBD><B>bzr branch lp:~libburnia-team/libisofs/scdbackup</B></KBD>
</DD>
<DD>Download: <KBD><B>bzr branch lp:libisofs</B></KBD></DD>
<DD>Install: <KBD><B>cd libisofs ; ./bootstrap ; ./configure --prefix /usr ; make ; make install</B>
</KBD></DD>
<DD>Download: <KBD><B>svn co http://svn.libburnia-project.org/libisoburn/trunk libisoburn</B>
@ -589,6 +551,7 @@ Very special thanks to Andy Polyakov whose
provide the libburnia project with invaluable examples on how to deal
with DVD media and how to emulate multi-session on overwriteable media.
</P>
<HR>
@ -604,11 +567,6 @@ and by <A HREF="http://sourceforge.net">sourceforge.net</A><BR>
<A href="http://sourceforge.net">
<IMG src="sflogo-88-1.png" BORDER="0" ALT="SourceForge Logo"></A>
<!-- on sourceforge use : <IMG src="http://sourceforge.net/sflogo.php?group_id=16010" width="88" height="31" border="0" alt="SourceForge Logo"></A> -->
<P>
Enjoying a FreeBSD shell account with the opportunity to
build, install and test xorriso at<BR>
<A HREF="http://www.en.free-shells.com.ar">free-shells.com.ar</A>
</P>
</FONT></CENTER>
<HR>
<DL>

View File

@ -1,8 +1,4 @@
# ts A90315 : LIBBURNIA_PKGCONFDIR is defined OS specific in acinclude.m4
# was: pkgconfigdir=$(libdir)/pkgconfig
pkgconfigdir=$(LIBBURNIA_PKGCONFDIR)
pkgconfigdir=$(libdir)/pkgconfig
libincludedir=
lib_LTLIBRARIES =
@ -21,8 +17,7 @@ xorriso_xorriso_CPPFLAGS = -I./libburn -I./libisofs -I./libisoburn -I./xorriso
# No readline in the vanilla version because the necessary headers
# are in a separate readline-development package.
xorriso_xorriso_CFLAGS = -DXorriso_standalonE -DXorriso_with_maiN \
$(READLINE_DEF) $(LIBACL_DEF) $(XATTR_DEF) \
$(EXTF_DEF) $(EXTF_SUID_DEF) $(ZLIB_DEF)
$(READLINE_DEF) $(LIBACL_DEF) $(XATTR_DEF)
xorriso_xorriso_LDADD = $(THREAD_LIBS) $(LIBBURN_ARCH_LIBS)
@ -56,9 +51,9 @@ xorriso_xorriso_SOURCES = \
libisoburn/burn_wrap.c \
libisoburn/data_source.c \
\
libisofs/libisofs.h \
libisofs/builder.h \
libisofs/builder.c \
libisofs/error.h \
libisofs/node.h \
libisofs/node.c \
libisofs/tree.h \
@ -70,6 +65,7 @@ xorriso_xorriso_SOURCES = \
libisofs/fsource.h \
libisofs/fsource.c \
libisofs/fs_local.c \
libisofs/fs_image.h \
libisofs/fs_image.c \
libisofs/messages.h \
libisofs/messages.c \
@ -88,7 +84,6 @@ xorriso_xorriso_SOURCES = \
libisofs/ecma119_tree.h \
libisofs/ecma119_tree.c \
libisofs/writer.h \
libisofs/buffer.h \
libisofs/buffer.c \
libisofs/rockridge.h \
libisofs/rockridge.c \
@ -101,16 +96,12 @@ xorriso_xorriso_SOURCES = \
libisofs/find.c \
libisofs/filter.h \
libisofs/filter.c \
libisofs/filters/external.c \
libisofs/filters/zisofs.c \
libisofs/filters/gzip.c \
libisofs/filters/xor_encrypt.c \
libisofs/system_area.h \
libisofs/system_area.c \
libisofs/make_isohybrid_mbr.c \
libisofs/aaip_0_2.h \
libisofs/aaip_0_2.c \
libisofs/md5.h \
libisofs/md5.c \
\
libburn/async.c \
libburn/async.h \
@ -221,8 +212,8 @@ indent: $(indent_files)
## ========================================================================= ##
# Extra things
# nodist_pkgconfig_DATA = \
# xorriso.pc
nodist_pkgconfig_DATA = \
xorriso.pc
man_MANS = xorriso/xorriso.1
@ -238,15 +229,8 @@ EXTRA_DIST = \
xorriso/changelog.txt \
xorriso/xorriso_buildstamp_none.h \
$(man_MANS) \
doc/susp_aaip_2_0.txt \
doc/susp_aaip_isofs_names.txt \
doc/zisofs_format.txt \
libisofs/aaip-os-dummy.c \
libisofs/aaip-os-linux.c \
libisofs/aaip-os-freebsd.c \
libburn/os-dummy.h \
libburn/os-freebsd.h \
libburn/os-linux.h \
libburn/sg-dummy.c \
libburn/sg-freebsd.c \
libburn/sg-linux.c
libisofs/aaip-os-freebsd.c

View File

@ -18,6 +18,8 @@
#ifndef Xorriso_private_includeD
#define Xorriso_private_includeD yes
#define Xorriso_program_versioN "0.3.6"
/** The source code release timestamp */
#include "xorriso_timestamp.h"
#ifndef Xorriso_timestamP
@ -97,40 +99,14 @@ struct XorrisO { /* the global context of xorriso */
/* >>> put libisofs aspects here <<< */
int ino_behavior; /* bit0= at image load time:
Do not load PX inode numbers but generate new
unique ones for all loaded IsoNode.
bit1= at image generation time:
Do not consolidate suitable nodes to hardlinks.
bit2= at restore-to-disk time:
Do not consolidate suitable nodes to hardlinks.
bit3= with update:
Do not try to detect hardlink splits and joinings.
bit4= with extract:
Do not create or use hln arrays if sort_lba_on
*/
int do_joliet;
int do_aaip; /* bit0= ACL in
bit1= ACL out
bit2= EA in
bit3= EA out
bit4= record dev,inode per node, isofs_st_out in root
bit5= check dev,inode,isofs_st_in
bit6= omit content check if bit5 check is conclusive
bit7= omit dev check with bit5
bit8= store output charset in xattr "isofs.cs"
bit9= allow to set input charset from xattr "isofs.cs"
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 do_md5; /* bit0= read MD5 array
bit1= write session MD5
bit2= write MD5 for each data file
bit3= make file content stability check by double reading
bit4= use recorded MD5 as proxy of ISO file
*/
int relax_compliance; /* opaque bitfield to be set by xorrisoburn */
int do_follow_pattern;
int do_follow_param;
@ -145,15 +121,6 @@ struct XorrisO { /* the global context of xorriso */
mode_t global_dir_mode;
mode_t global_file_mode;
struct Xorriso_lsT *filters;
int filter_list_closed;
int zlib_level;
int zlib_level_default;
int zisofs_block_size;
int zisofs_block_size_default;
int zisofs_by_magic;
int do_overwrite; /* 0=off, 1=on, 2=nondir */
int do_reassure; /* 0=off, 1=on, 2=tree */
@ -199,17 +166,10 @@ struct XorrisO { /* the global context of xorriso */
*/
char image_start_value[81]; /* value according image_start_mode */
int do_calm_drive; /* bit0= calm down drive after aquiring it */
char indev[SfileadrL];
void *in_drive_handle; /* interpreted only by xorrisoburn.c */
void *in_volset_handle; /* interpreted only by xorrisoburn.c */
char *in_charset; /* The charset to interpret the filename bytes */
time_t isofs_st_out; /* A time point at least 1 second before image
composition began. To be stored with image as
xattr "isofs.st". */
time_t isofs_st_in; /* That time point as read from "isofs.st" of the
loaded image. */
int volset_change_pending; /* whether -commit would make sense */
int no_volset_present; /* set to 1 on first failure */
@ -263,18 +223,13 @@ struct XorrisO { /* the global context of xorriso */
/* XORRISO options */
int allow_graft_points;
int allow_restore; /* -1=permanently disallowed
0=disallowed, 1=allowed, 2=device files allowed */
int allow_restore; /* 0= disallowed, 1=allowed, 2=device files allowed */
int do_concat_split; /* 1= restore complete split file directories as
regular files
*/
int do_auto_chmod; /* 1= eventually temporarily open access permissions
of self-owned directories during restore
*/
int do_restore_sort_lba; /* 1= restore via node_array rather than via
tree traversal. Better read performance,
no directory mtime restore, needs do_auto_chmod
*/
int dialog; /* 0=off , 1=single-line , 2=multi-line */
@ -399,38 +354,6 @@ struct XorrisO { /* the global context of xorriso */
void *pacifier_fifo;
int find_compare_result; /* 1=everything matches , 0=mismatch , -1=error */
int find_check_md5_result; /* bit0= seen mismatch
bit1= seen error
bit2= seen data file without MD5
bit3= seen match
*/
/* Tree node collection and LBA sorting facility */
int node_counter;
int node_array_size;
void **node_array;
struct Xorriso_lsT *node_disk_prefixes;
struct Xorriso_lsT *node_img_prefixes;
/* Hardlink matching at restore time memorizes hardlink target paths.
Array of nodes sorted by LBA. */
int hln_count;
void **hln_array;
void **hln_targets;
int hln_change_pending; /* whether a change was made since hln creation */
/* >>> this should count all temp_mem and thus change its name */
off_t node_targets_availmem;
/* Hardlink matching at update time:
Array of all nodes in the tree, sorted by disk dev,ino.
Bitmap of nodes which possibly got new hardlink siblings.
List of involved disk-iso path pairs. */
int di_count;
void **di_array;
char *di_do_widen;
struct Xorriso_lsT *di_disk_paths;
struct Xorriso_lsT *di_iso_paths;
struct PermiteM *perm_stack; /* Temporarily altered dir access permissions */
@ -447,9 +370,6 @@ struct XorrisO { /* the global context of xorriso */
};
/* @param flag bit0= do not set hln_change_pending */
int Xorriso_set_change_pending(struct XorrisO *xorriso, int flag);
int Xorriso_prepare_regex(struct XorrisO *xorriso, char *adr, int flag);
int Xorriso_result(struct XorrisO *xorriso, int flag);
@ -458,6 +378,11 @@ int Xorriso_info(struct XorrisO *xorriso, int flag);
int Xorriso_request_confirmation(struct XorrisO *xorriso, int flag);
int Xorriso_prescan_args(struct XorrisO *xorriso, int argc, char **argv,
int flag);
int Xorriso_execute_option(struct XorrisO *xorriso, char *line, int flag);
/* @return 0=match , else no match
*/
int Xorriso_regexec(struct XorrisO *xorriso, char *to_match, int *failed_at,
@ -544,10 +469,6 @@ int Xorriso_pacifier_callback(struct XorrisO *xorriso, char *what_done,
off_t count, off_t todo, char *current_object,
int flag);
int Xorriso_pfx_disk_path(struct XorrisO *xorriso, char *iso_path,
char *iso_prefix, char *disk_prefix,
char disk_path[SfileadrL], int flag);
/* @param boss_iter Opaque handle to be forwarded to actions in ISO image
Set to NULL if calling this function from outside ISO world
@param flag bit0= update rather than compare
@ -588,11 +509,6 @@ int Xorriso_lsx_filev(struct XorrisO *xorriso, char *wd,
int Xorriso_rmx(struct XorrisO *xorriso, off_t boss_mem, char *path, int flag);
/* @param flag bit7= return 4 if restore fails from denied permission
do not issue error message
@return <=0 failure , 1 success ,
4 with bit7: permission to create file was denied
*/
int Xorriso_make_tmp_path(struct XorrisO *xorriso, char *orig_path,
char *tmp_path, int *fd, int flag);
@ -603,24 +519,8 @@ int Xorriso_make_tmp_path(struct XorrisO *xorriso, char *orig_path,
int Xorriso_reassure_restore(struct XorrisO *xorriso, char *path, int flag);
/* @param flag bit0= change regardless of xorriso->do_auto_chmod
bit1= desired is only rx
*/
int Xorriso_auto_chmod(struct XorrisO *xorriso, char *disk_path, int flag);
int Xorriso_make_accessible(struct XorrisO *xorriso, char *disk_path,int flag);
/* @param flag bit0= prefer to find a match after *img_prefixes
(but deliver img_prefixes if no other can be found)
*/
int Xorriso_make_restore_path(struct XorrisO *xorriso,
struct Xorriso_lsT **img_prefixes, struct Xorriso_lsT **disk_prefixes,
char img_path[SfileadrL], char disk_path[SfileadrL], int flag);
int Xorriso_restore_make_hl(struct XorrisO *xorriso,
char *old_path, char *new_path, int flag);
int Xorriso_protect_stdout(struct XorrisO *xorriso, int flag);
@ -674,16 +574,6 @@ int Xorriso_normalize_acl_text(struct XorrisO *xorriso, char *in_text,
int Xorriso_path_setfattr(struct XorrisO *xorriso, void *in_node, char *path,
char *name, size_t value_length, char *value, int flag);
int Xorriso_status_result(struct XorrisO *xorriso, char *filter, FILE *fp,
int flag);
int Xorriso_compare_2_files(struct XorrisO *xorriso, char *disk_adr,
char *iso_adr, char *adr_common_tail,
int *result, int flag);
int Xorriso_report_md5_outcome(struct XorrisO *xorriso, char *severity,
int flag);
int Sfile_str(char target[SfileadrL], char *source, int flag);
@ -728,8 +618,6 @@ int Sfile_type(char *filename, int flag);
*/
int Sfile_bsl_encoder(char **result, char *text, size_t text_len, int flag);
int Sfile_argv_bsl(int argc, char ***argv, int flag);
struct Xorriso_lsT {
char *text;
@ -744,7 +632,6 @@ struct Xorriso_lsT {
@param flag Bitfield for control purposes
bit0= insert before link rather than after it
bit1= do not copy data (e.g. because *data is invalid)
bit2= attach data directly by pointer rather than by copying
@return <=0 error, 1 ok
*/
int Xorriso_lst_new_binary(struct Xorriso_lsT **lstring, char *data,
@ -755,7 +642,8 @@ int Xorriso_lst_new_binary(struct Xorriso_lsT **lstring, char *data,
@param lstring The newly created object or NULL on failure
@param text A 0-terminated array of bytes
@param link Xorriso_lsT object to which the new object shall be linked
@param flag see Xorriso_lst_new_binary
@param flag Bitfield for control purposes
bit0= insert before link rather than after it
@return <=0 error, 1 ok
*/
int Xorriso_lst_new(struct Xorriso_lsT **lstring, char *text,
@ -763,16 +651,12 @@ int Xorriso_lst_new(struct Xorriso_lsT **lstring, char *text,
/** Create a new list item at the end of a given list.
@param entry Contains as input a pointer to a pointer to any existing
list item. As output this list item pointer may be
changed to the address of the new list item:
if ((*entry == 0) || (flag & 1))
@param lstring Contains as input a pointer to a pointer to any existing
list item. As output this list item pointer will be
changed to the address of the new list item.
@param data An array of bytes to be copied into the new object
@param data_len Number of bytes to be copied
@param flag Bitfield for control purposes
bit0= Return new object address in *entry
bit1= do not copy data (e.g. because *data is invalid)
bit2= attach data directly by pointer rather than by copying
@param flag unused yet, submit 0
@return <=0 error, 1 ok
*/
int Xorriso_lst_append_binary(struct Xorriso_lsT **entry,
@ -787,15 +671,6 @@ int Xorriso_lst_append_binary(struct Xorriso_lsT **entry,
int Xorriso_lst_destroy(struct Xorriso_lsT **lstring, int flag);
struct Xorriso_lsT *Xorriso_lst_get_next(struct Xorriso_lsT *entry, int flag);
struct Xorriso_lsT *Xorriso_lst_get_prev(struct Xorriso_lsT *entry, int flag);
char *Xorriso_lst_get_text(struct Xorriso_lsT *entry, int flag);
int Xorriso_lst_detach_text(struct Xorriso_lsT *entry, int flag);
char *Text_shellsafe(char *in_text, char *out_text, int flag);
int Sort_argv(int argc, char **argv, int flag);
@ -824,245 +699,6 @@ int Dirseq_next_adr(struct DirseQ *o, char reply[SfileadrL], int flag);
int Linkitem_reset_stack(struct LinkiteM **o, struct LinkiteM *to, int flag);
#define Xorriso_findjob_on_expR yes
#ifdef Xorriso_findjob_on_expR
/*
A single Testnode.
*/
struct ExprtesT {
struct FindjoB *boss;
int invert; /* 0=normal 1=invert result */
/*
0= -false (with invert : -true)
1= -name char *arg1 (regex_t in *arg2)
2= -type char *arg1
3= -damaged
4= -lba_range int *arg1 int *arg2
5= -has_acl
6= -has_xattr
7= -has_aaip
8= -has_filter
9= -wanted_node IsoNode *arg1 (for internal use, arg1 not allocated)
10= -pending_data
11= -decision char *arg1 ("yes", "no")
12= -prune
13= -wholename char *arg1 (regex_t in *arg2)
14= -has_any_xattr
15= -has_md5
*/
int test_type;
void *arg1;
void *arg2;
};
/*
A computational node.
A tree of these nodes forms the expression.
Sequences of AND/OR operations form branches, brackets spawn new branches,
NOT inverts node's test resp. subtree result.
*/
struct ExprnodE {
struct ExprnodE *up;
char origin[8];
/* Operators */
int invert; /* 0=normal 1=invert own result (subtree or test, but not op) */
int assoc; /*
0= left : compute own value, combine with left value,
compute right value, combine with current value
1= right: compute own value, compute right value,
combine own and right, combine with left value
*/
int use_shortcuts; /* 0= evaluate all tests of -and and -or,
1= evaluate only until the combined result is known
*/
struct ExprnodE *left;
int left_op; /* 0=OR , 1=AND */
struct ExprnodE *right;
int right_op; /* see left_op */
/* Brackets : a pointer to the first node in a subchain */
struct ExprnodE *sub;
int is_if_then_else;
struct ExprnodE *true_branch;
struct ExprnodE *false_branch;
/* elementary test : if sub!=NULL , test is ignored */
struct ExprtesT *test;
/* Result */
int own_value;
int composed_value;
};
struct FindjoB {
char *start_path;
struct ExprnodE *test_tree;
struct ExprnodE *cursor;
int invert; /* 0=normal 1=set invert-property for next new test node */
int use_shortcuts;
/* 0= echo
1= rm (also rmdir)
2= rm_r
>>> 3= mv target
4= chown user
5= chgrp group
6= chmod mode_and mode_or
7= alter_date type date
8= lsdl
9= chown_r user
10= chgrp_r group
11= chmod_r mode_and mode_or
12= alter_date_r type date
13= find
14= compare disk_equivalent_of_start_path
15= in_iso iso_rr_equivalent_of_start_path
16= not_in_iso iso_rr_equiv
17= update disk_equiv
18= add_missing iso_rr_equiv
19= empty_iso_dir iso_rr_equiv
20= is_full_in_iso iso_rr_equiv
21= report_damage
22= report_lba
23= internal: memorize path of last matching node in found_path
24= getfacl
25= setfacl access_acl default_acl
26= getfattr
27= setfattr
28= set_filter name
29= show_stream
30= internal: count by xorriso->node_counter
31= internal: register in xorriso->node_array
32= internal: widen_hardlinks disk_equiv: update nodes marked in di_do_widen
33= get_any_xattr
34= get_md5
35= check_md5
36= make_md5
*/
int action;
int prune;
/* action specific parameters */
char *target;
char *text_2;
uid_t user;
gid_t group;
mode_t mode_and, mode_or;
int type; /* see Xorriso_set_time flag */
time_t date;
char *found_path;
struct FindjoB *subjob;
/* Errors */
char errmsg[4096];
int errn; /*
>0 = UNIX errno
-1 = close_bracket: no bracket open
-2 = binary operator or closing bracket expected
-3 = unexpected binary operator or closing bracket
-4 = unsupported command
-5 = -then -elseif -else -endif without -if or at wrong place
*/
};
int Exprtest_match(struct XorrisO *xorriso, struct ExprtesT *ftest,
void *node_pt, char *name, char *path,
struct stat *boss_stbuf, struct stat *stbuf, int flag);
int Exprnode_destroy(struct ExprnodE **fnode, int flag);
int Exprnode_tree_value(struct XorrisO *xorriso, struct ExprnodE *fnode,
int left_value, void *node, char *name, char *path,
struct stat *boss_stbuf, struct stat *stbuf, int flag);
int Findjob_new(struct FindjoB **o, char *start_path, int flag);
int Findjob_destroy(struct FindjoB **o, int flag);
int Findjob_set_start_path(struct FindjoB *o, char *start_path, int flag);
int Findjob_get_start_path(struct FindjoB *o, char **start_path, int flag);
int Findjob_set_commit_filter_2(struct FindjoB *o, int flag);
int Findjob_set_lba_range(struct FindjoB *o, int start_lba, int count,
int flag);
int Findjob_set_wanted_node(struct FindjoB *o, void *wanted_node, int flag);
int Findjob_set_decision(struct FindjoB *o, char *decision, int flag);
int Findjob_open_bracket(struct FindjoB *job, int flag);
int Findjob_close_bracket(struct FindjoB *job, int flag);
int Findjob_not(struct FindjoB *job, int flag);
int Findjob_and(struct FindjoB *job, int flag);
int Findjob_or(struct FindjoB *job, int flag);
int Findjob_if(struct FindjoB *job, int flag);
int Findjob_then(struct FindjoB *job, int flag);
int Findjob_else(struct FindjoB *job, int flag);
int Findjob_elseif(struct FindjoB *job, int flag);
int Findjob_endif(struct FindjoB *job, int flag);
int Findjob_test_2(struct XorrisO *xorriso, struct FindjoB *o,
void *node, char *name, char *path,
struct stat *boss_stbuf, struct stat *stbuf, int flag);
int Findjob_set_action_found_path(struct FindjoB *o, int flag);
/* @param flag bit0= recursive
*/
int Findjob_set_action_target(struct FindjoB *o, int action, char *target,
int flag);
int Findjob_get_action(struct FindjoB *o, int flag);
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,
int flag);
int Findjob_set_found_path(struct FindjoB *o, char *path, int flag);
int Findjob_get_found_path(struct FindjoB *o, char **path, int flag);
#else /* Xorriso_findjob_on_expR */
struct FindjoB;
@ -1127,8 +763,6 @@ 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_get_filter_filter(struct FindjoB *o, int *value, 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);
@ -1137,8 +771,6 @@ int Findjob_set_found_path(struct FindjoB *o, char *path, int flag);
int Findjob_get_found_path(struct FindjoB *o, char **path, int flag);
#endif /* ! Xorriso_findjob_on_expR */
struct SplitparT;
@ -1190,7 +822,6 @@ char *Spotlist__quality_name(int quality, char name[80], int flag);
#define Xorriso_read_quality_gooD 0x7fffffff
#define Xorriso_read_quality_md5_matcH 0x70000000
#define Xorriso_read_quality_sloW 0x60000000
#define Xorriso_read_quality_partiaL 0x50000000
#define Xorriso_read_quality_valiD 0x40000000
@ -1198,58 +829,9 @@ char *Spotlist__quality_name(int quality, char name[80], int flag);
#define Xorriso_read_quality_invaliD 0x3ffffffe
#define Xorriso_read_quality_tao_enD 0x28000000
#define Xorriso_read_quality_off_tracK 0x20000000
#define Xorriso_read_quality_md5_mismatcH 0x10000000
#define Xorriso_read_quality_unreadablE 0x00000000
struct CheckmediajoB {
int use_dev; /* 0= use indev , 1= use outdev , 2= use sector map*/
int min_lba; /* if >=0 : begin checking at this address */
int max_lba; /* if >=0 : read up to this address, else use mode */
int min_block_size; /* >>> not yet implemented:
granularity desired by user
*/
int mode; /* 0= track by track
1= single sweep over libisoburn media capacity
>>> 2= single sweep over libburn media capacity
*/
time_t start_time;
int time_limit; /* Number of seconds after which to abort */
int item_limit; /* Maximum number of media check list items as result */
char abort_file_path[SfileadrL];
char data_to_path[SfileadrL];
int data_to_fd;
off_t data_to_offset; /* usually 0 with image copy, negative with file copy */
off_t data_to_limit; /* used with file copy */
int patch_lba0;
int patch_lba0_msc1;
char sector_map_path[SfileadrL];
struct SectorbitmaP *sector_map;
int map_with_volid; /* 0=add quick toc to map file,
1=read ISO heads for toc
*/
int retry; /* -1= only try full read_chunk, 1=retry with 2k blocks
0= retry with CD, full chunk else
*/
int report_mode; /* 0= print MCL items
1= print damaged files
*/
char event_severity[20]; /* If not "ALL": trigger event of given severity
at the end of a check job if bad blocks were
discovered.
*/
};
int Checkmediajob_new(struct CheckmediajoB **o, int flag);
int Checkmediajob_destroy(struct CheckmediajoB **o, int flag);

View File

@ -1 +1 @@
#define Xorriso_timestamP "2009.08.29.143001"
#define Xorriso_timestamP "2009.03.16.090001"

File diff suppressed because it is too large Load Diff

View File

@ -18,13 +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 4
#define xorriso_libisoburn_req_micro 2
struct SpotlisT; /* List of intervals with different read qualities */
struct CheckmediajoB; /* Parameters for Xorriso_check_media() */
#define xorriso_libisoburn_req_minor 3
#define xorriso_libisoburn_req_micro 6
int Xorriso_startup_libraries(struct XorrisO *xorriso, int flag);
@ -92,11 +87,6 @@ int Xorriso_format_media(struct XorrisO *xorriso, off_t size, int flag);
*/
int Xorriso_list_formats(struct XorrisO *xorriso, int flag);
/* @param flag bit1= obtain outdrive, else indrive
@return <=0 error, 1 success
*/
int Xorriso_list_profiles(struct XorrisO *xorriso, int flag);
/* @param flag bit2= formatting rather than blanking
@return 0=failure, did not touch media , -1=failure, altered media
1=success, altered media , 2=success, did not touch media
@ -187,12 +177,6 @@ int Xorriso_findi(struct XorrisO *xorriso, struct FindjoB *job,
void *dir_node_generic, char *dir_path,
struct stat *dir_stbuf, int depth, int flag);
/* @param flag bit0= do not dive into trees
bit1= do not perform job->action on resulting node array
*/
int Xorriso_findi_sorted(struct XorrisO *xorriso, struct FindjoB *job,
off_t boss_mem, int filec, char **filev, int flag);
/* @param flag bit0= do not mark image as changed */
int Xorriso_set_volid(struct XorrisO *xorriso, char *volid, int flag);
@ -227,8 +211,17 @@ int Xorriso_burn_track(struct XorrisO *xorriso, off_t write_start_address,
int Xorriso_get_profile(struct XorrisO *xorriso, int *profile_number,
char profile_name[80], int flag);
#ifdef NIX
/* @param flag bit0= do not mark image as changed */
int Xorriso_set_publisher(struct XorrisO *xorriso, char *name, int flag);
/* @param flag bit0= do not mark image as changed */
int Xorriso_set_application_id(struct XorrisO *xorriso, char *name, int flag);
#endif /* NIX */
/* @param flag bit0= node_pt is a valid ISO object handle, ignore pathname
bit1= dig out the most original stream for reading
*/
int Xorriso_iso_file_open(struct XorrisO *xorriso, char *pathname,
void *node_pt, void **stream, int flag);
@ -315,31 +308,50 @@ int Xorriso_get_local_charset(struct XorrisO *xorriso, char **name, int flag);
int Xorriso_set_local_charset(struct XorrisO *xorriso, char *name, int flag);
int Xorriso_destroy_node_array(struct XorrisO *xorriso, int flag);
int Xorriso_destroy_hln_array(struct XorrisO *xorriso, int flag);
int Xorriso_destroy_di_array(struct XorrisO *xorriso, int flag);
struct CheckmediajoB {
int use_dev; /* 0= use indev , 1= use outdev , 2= use sector map*/
int Xorriso_new_node_array(struct XorrisO *xorriso, off_t mem_limit,
int addon_nodes, int flag);
int min_lba; /* if >=0 : begin checking at this address */
int max_lba; /* if >=0 : read up to this address, else use mode */
int Xorriso_sort_node_array(struct XorrisO *xorriso, int flag);
int min_block_size; /* >>> not yet implemented:
granularity desired by user
*/
int mode; /* 0= track by track
1= single sweep over libisoburn media capacity
>>> 2= single sweep over libburn media capacity
*/
time_t start_time;
int time_limit; /* Number of seconds after which to abort */
int Xorriso_new_hln_array(struct XorrisO *xorriso, off_t mem_limit, int flag);
int item_limit; /* Maximum number of media check list items as result */
/* @param flag bit0= allocate xorriso->node_targets too
*/
int Xorriso_restore_node_array(struct XorrisO *xorriso, int flag);
char abort_file_path[SfileadrL];
int Xorriso_check_md5(struct XorrisO *xorriso, void *in_node, char *path,
int flag);
char data_to_path[SfileadrL];
int data_to_fd;
off_t data_to_offset; /* usually 0 with image copy, negative with file copy */
off_t data_to_limit; /* used with file copy */
int patch_lba0;
int patch_lba0_msc1;
int Xorriso_check_session_md5(struct XorrisO *xorriso, char *severity,
int flag);
char sector_map_path[SfileadrL];
struct SectorbitmaP *sector_map;
int map_with_volid; /* 0=add quick toc to map file,
1=read ISO heads for toc
*/
int Xorriso_image_has_md5(struct XorrisO *xorriso, int flag);
int retry; /* -1= only try full read_chunk, 1=retry with 2k blocks
0= retry with CD, full chunk else
*/
int report_mode; /* 0= print MCL items
1= print damaged files
*/
};
int Xorriso_check_media(struct XorrisO *xorriso, struct SpotlisT **spotlist,
struct CheckmediajoB *job, int flag);
@ -419,67 +431,6 @@ int Xorriso_record_dev_inode(struct XorrisO *xorriso, char *disk_path,
int Xorriso_local_getfacl(struct XorrisO *xorriso, char *disk_path,
char **text, int flag);
int Xorriso_set_filter(struct XorrisO *xorriso, void *in_node,
char *path, char *filter_name, int flag);
/* @param flag bit0= delete filter with the given name
*/
int Xorriso_external_filter(struct XorrisO *xorriso,
char *name, char *options, char *path,
int argc, char **argv, int flag);
int Xorriso_status_extf(struct XorrisO *xorriso, char *filter, FILE *fp,
int flag);
int Xorriso_destroy_all_extf(struct XorrisO *xorriso, int flag);
int Xorriso_show_stream(struct XorrisO *xorriso, void *in_node,
char *path, int flag);
int Xorriso_set_zisofs_params(struct XorrisO *xorriso, int flag);
int Xorriso_status_zisofs(struct XorrisO *xorriso, char *filter, FILE *fp,
int flag);
/* @param flag bit0= overwrite existing di_array (else return 2)
*/
int Xorriso_make_di_array(struct XorrisO *xorriso, int flag);
/* @param flag bit0= overwrite existing hln_array (else return 2)
*/
int Xorriso_make_hln_array(struct XorrisO *xorriso, int flag);
/*
@param flag bit2= -follow: this is not a command parameter
@return -1= severe error
0= not applicable for hard links
1= go on with processing
2= iso_rr_path is fully updated
*/
int Xorriso_hardlink_update(struct XorrisO *xorriso, int *compare_result,
char *disk_path, char *iso_rr_path, int flag);
int Xorriso_finish_hl_update(struct XorrisO *xorriso, int flag);
int Xorriso_get_md5(struct XorrisO *xorriso, void *in_node, char *path,
char md5[16], int flag);
int Xorriso_make_md5(struct XorrisO *xorriso, void *in_node, char *path,
int flag);
int Xorriso_md5_start(struct XorrisO *xorriso, void **ctx, int flag);
int Xorriso_md5_compute(struct XorrisO *xorriso, void *ctx,
char *data, int datalen, int flag);
int Xorriso_md5_end(struct XorrisO *xorriso, void **ctx, char md5[16],
int flag);
/* @param flag bit0=input drive
bit1=output drive
*/
int Xorriso_drive_snooze(struct XorrisO *xorriso, int flag);
/* A pseudo file type for El-Torito bootsectors as in man 2 stat :
For now take the highest possible value.