Compare commits
32 Commits
ZeroTwoSix
...
ZeroTwoEig
Author | SHA1 | Date | |
---|---|---|---|
a21d632153 | |||
5eae306db2 | |||
8f10ec3032 | |||
1dac61c338 | |||
04efd40a86 | |||
76770e97bf | |||
cb6646d49e | |||
cd92b00f61 | |||
a0972af58f | |||
8945bce9ff | |||
b4b2572286 | |||
e40ddf8834 | |||
afd2f0cd61 | |||
e93ab421c2 | |||
e65346cd1b | |||
7685ca5d64 | |||
5d939f185c | |||
c1c033900e | |||
e1c4ed7d17 | |||
8898c58d3c | |||
18da5ec3f2 | |||
d5ec0342cc | |||
6af8449f5a | |||
69a6b4f4a1 | |||
daadfc113d | |||
1625db8bbd | |||
2026814a80 | |||
722e091460 | |||
2d1d4d4b37 | |||
fdea98935a | |||
7044f2cba1 | |||
f65dc9aa82 |
24
README
24
README
@ -4,13 +4,13 @@
|
||||
libisoburn. By Vreixo Formoso <metalpain2002@yahoo.es>
|
||||
and Thomas Schmitt <scdbackup@gmx.net>
|
||||
Integrated sub project of libburnia-project.org.
|
||||
http://files.libburnia-project.org/releases/libisoburn-0.2.5.tar.gz
|
||||
http://files.libburnia-project.org/releases/libisoburn-0.2.8.pl00.tar.gz
|
||||
Copyright (C) 2006-2008 Vreixo Formoso, Thomas Schmitt.
|
||||
Provided under GPL version 2.
|
||||
------------------------------------------------------------------------------
|
||||
|
||||
libisoburn is a frontend for libraries libburn and libisofs which enables
|
||||
creation and expansion of ISO-9660 filesystems on all CD/DVD media supported
|
||||
creation and expansion of ISO-9660 filesystems on all CD/DVD/BD media supported
|
||||
by libburn. This includes media like DVD+RW, which do not support multi-session
|
||||
management on media level and even plain disk files or block devices.
|
||||
|
||||
@ -26,18 +26,18 @@ By using this software you agree to the disclaimer at the end of this text:
|
||||
|
||||
Compilation, First Glimpse, Installation
|
||||
|
||||
Dynamic library and compile time header requirements for libisoburn-0.2.5 :
|
||||
- libburn.so.4 , version libburn-0.5.2 or higher
|
||||
- libisofs.so.6 , version libisofs-0.6.6 or higher
|
||||
Dynamic library and compile time header requirements for libisoburn-0.2.8 :
|
||||
- libburn.so.4 , version libburn-0.5.4 or higher
|
||||
- libisofs.so.6 , version libisofs-0.6.10 or higher
|
||||
libisoburn and xorriso will not start with libraries which are older than their
|
||||
headers seen at compile time. So compile in the oldest possible installation
|
||||
setup unless you have reason to enforce a newer bug fix level.
|
||||
|
||||
Obtain libisoburn-0.2.5.tar.gz, take it to a directory of your choice
|
||||
Obtain libisoburn-0.2.8.pl00.tar.gz, take it to a directory of your choice
|
||||
and do:
|
||||
|
||||
tar xzf libisoburn-0.2.5.tar.gz
|
||||
cd libisoburn-0.2.5
|
||||
tar xzf libisoburn-0.2.8.pl00.tar.gz
|
||||
cd libisoburn-0.2.8
|
||||
|
||||
Within that directory execute:
|
||||
|
||||
@ -57,7 +57,7 @@ as well as
|
||||
|
||||
xorriso
|
||||
|
||||
libisoburn includes a command line and dialog application named xorriso,
|
||||
libisoburn comes with a command line and dialog application named xorriso,
|
||||
which offers a substantial part of libisoburn features to shell scripts and
|
||||
users. Its file xorriso/README describes a standalone tarball as first
|
||||
preference for statically linked xorriso installation.
|
||||
@ -72,6 +72,12 @@ Several alias links point to the xorriso binary:
|
||||
xorrecord starts xorriso with -as cdrecord emulation already enabled
|
||||
osirrox starts with -osirrox image-to-disk copying already enabled
|
||||
|
||||
By default xorriso will depend on libreadline if the readline-dev headers
|
||||
are present. This dependcy can be avoided by running
|
||||
./configure --prefix=/usr --disable-libreadline
|
||||
make clean ; make
|
||||
Never omit the "make clean" command after switching libreadline enabling.
|
||||
|
||||
|
||||
Drives and Disk File Objects
|
||||
|
||||
|
34
configure.ac
34
configure.ac
@ -1,4 +1,4 @@
|
||||
AC_INIT([libisoburn], [0.2.5], [http://libburnia-project.org])
|
||||
AC_INIT([libisoburn], [0.2.8], [http://libburnia-project.org])
|
||||
AC_PREREQ([2.50])
|
||||
dnl AC_CONFIG_HEADER([config.h])
|
||||
|
||||
@ -21,7 +21,7 @@ dnl
|
||||
dnl These three are only copies to provide libtool with unused LT_RELEASE
|
||||
ISOBURN_MAJOR_VERSION=0
|
||||
ISOBURN_MINOR_VERSION=2
|
||||
ISOBURN_MICRO_VERSION=5
|
||||
ISOBURN_MICRO_VERSION=8
|
||||
dnl ISOBURN_VERSION=$ISOBURN_MAJOR_VERSION.$ISOBURN_MINOR_VERSION.$ISOBURN_MICRO_VERSION
|
||||
|
||||
AC_SUBST(ISOBURN_MAJOR_VERSION)
|
||||
@ -33,16 +33,16 @@ dnl Libtool versioning
|
||||
dnl Generate libisoburn.so.1.x.y
|
||||
dnl SONAME will become LT_CURRENT - LT_AGE
|
||||
dnl
|
||||
dnl ts A80824
|
||||
dnl ### This is the release version 0.2.4 = libisoburn.so.1.13.0
|
||||
dnl This is the development version after above stable release
|
||||
dnl ts A80920
|
||||
dnl This is the release version 0.2.8 = libisoburn.so.1.17.0
|
||||
dnl ### This is the development version after above stable release
|
||||
dnl LT_CURRENT++, LT_AGE++ have not happened happened yet.
|
||||
dnl ### LT_CURRENT++, LT_AGE++ has happened meanwhile.
|
||||
dnl
|
||||
dnl SONAME = 14 - 13 = 1 . Library name = libisoburn.so.1.13.0
|
||||
dnl SONAME = 18 - 17 = 1 . Library name = libisoburn.so.1.17.0
|
||||
LT_RELEASE=$ISOBURN_MAJOR_VERSION.$ISOBURN_MINOR_VERSION
|
||||
LT_CURRENT=14
|
||||
LT_AGE=13
|
||||
LT_CURRENT=18
|
||||
LT_AGE=17
|
||||
LT_REVISION=0
|
||||
LT_CURRENT_MINUS_AGE=`expr $LT_CURRENT - $LT_AGE`
|
||||
|
||||
@ -86,22 +86,28 @@ AC_SUBST(ARCH)
|
||||
AC_SUBST(LIBBURN_ARCH_LIBS)
|
||||
|
||||
|
||||
AC_ARG_ENABLE(libreadline,
|
||||
[ --enable-libreadline Enable use of libreadline by xorriso, default=yes],
|
||||
, enable_libreadline=yes)
|
||||
if test x$enable_libreadline = xyes; then
|
||||
dnl Check whether there is readline-devel and readline-runtime.
|
||||
dnl If not, erase this macro which would enable use of readline(),add_history()
|
||||
READLINE_DEF="-DXorriso_with_readlinE"
|
||||
READLINE_DEF="-DXorriso_with_readlinE"
|
||||
dnl The empty yes case obviously causes -lreadline to be linked
|
||||
AC_CHECK_HEADER(readline/readline.h, AC_CHECK_LIB(readline, readline, , READLINE_DEF= ), READLINE_DEF= )
|
||||
AC_CHECK_HEADER(readline/readline.h, AC_CHECK_LIB(readline, readline, , READLINE_DEF= ), READLINE_DEF= )
|
||||
dnl The X= in the yes case prevents that -lreadline gets linked twice
|
||||
AC_CHECK_HEADER(readline/history.h, AC_CHECK_LIB(readline, add_history, X= , READLINE_DEF= ), READLINE_DEF= )
|
||||
AC_CHECK_HEADER(readline/history.h, AC_CHECK_LIB(readline, add_history, X= , READLINE_DEF= ), READLINE_DEF= )
|
||||
else
|
||||
READLINE_DEF=
|
||||
fi
|
||||
AC_SUBST(READLINE_DEF)
|
||||
|
||||
|
||||
AC_CHECK_HEADER(libburn/libburn.h)
|
||||
AC_CHECK_HEADER(libisofs/libisofs.h)
|
||||
|
||||
dnl Check for proper library versions
|
||||
LIBBURN_REQUIRED=0.5.2
|
||||
LIBISOFS_REQUIRED=0.6.8
|
||||
LIBBURN_REQUIRED=0.5.4
|
||||
LIBISOFS_REQUIRED=0.6.10
|
||||
PKG_CHECK_MODULES(LIBBURN, libburn-1 >= $LIBBURN_REQUIRED)
|
||||
PKG_CHECK_MODULES(LIBISOFS, libisofs-1 >= $LIBISOFS_REQUIRED)
|
||||
|
||||
|
@ -58,7 +58,7 @@ extern void *libisoburn_default_msgs_submit_handle;
|
||||
extern int libisoburn_default_msgs_submit_flag;
|
||||
|
||||
|
||||
int isoburn_emulate_toc(struct burn_drive *d, int flag);
|
||||
static int isoburn_emulate_toc(struct burn_drive *d, int flag);
|
||||
|
||||
|
||||
int isoburn_initialize(char msg[1024], int flag)
|
||||
@ -263,6 +263,7 @@ int isoburn_is_intermediate_dvd_rw(struct burn_drive *d, int flag)
|
||||
@param flag bit0= pretent blank on overwriteable media
|
||||
bit3= if the drive reports a -ROM profile then try to read
|
||||
table of content by scanning for ISO image headers.
|
||||
bit4= do not emulate TOC on overwriteable media
|
||||
*/
|
||||
static int isoburn_welcome_media(struct isoburn **o, struct burn_drive *d,
|
||||
int flag)
|
||||
@ -312,11 +313,13 @@ 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, 0);
|
||||
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;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -326,9 +329,13 @@ static int isoburn_welcome_media(struct isoburn **o, struct burn_drive *d,
|
||||
|
||||
if(readonly) {
|
||||
/* This might be overwriteable media in a -ROM drive */
|
||||
ret= isoburn_emulate_toc(d, 1);
|
||||
if(ret<0)
|
||||
goto ex;
|
||||
if((flag & 16)) {
|
||||
ret= 0;
|
||||
} else {
|
||||
ret= isoburn_emulate_toc(d, 1);
|
||||
if(ret<0)
|
||||
goto ex;
|
||||
}
|
||||
if(ret==0 && profile !=0x08 && (flag&8)) {
|
||||
/* This might also be multi-session media which do not
|
||||
get shown with a decent TOC.
|
||||
@ -373,24 +380,38 @@ ex:
|
||||
table of content by scanning for ISO image headers.
|
||||
(depending on media type and drive state this might
|
||||
help or it might make the resulting toc even worse)
|
||||
bit4= do not emulate TOC on overwriteable media
|
||||
*/
|
||||
int isoburn_drive_aquire(struct burn_drive_info *drive_infos[],
|
||||
char *adr, int flag)
|
||||
{
|
||||
int ret, conv_ret, drive_grabbed= 0;
|
||||
char libburn_drive_adr[BURN_DRIVE_ADR_LEN];
|
||||
int ret, drive_grabbed= 0;
|
||||
struct isoburn *o= NULL;
|
||||
|
||||
#ifndef NIX
|
||||
|
||||
/* <<< should be obsolete by new drive addressing of libburn-0.5.2 */
|
||||
/* >>> but helps with kernel 2.4 to use /dev/sr */
|
||||
|
||||
int conv_ret;
|
||||
char libburn_drive_adr[BURN_DRIVE_ADR_LEN];
|
||||
|
||||
conv_ret= burn_drive_convert_fs_adr(adr, libburn_drive_adr);
|
||||
if(conv_ret<=0)
|
||||
strcpy(libburn_drive_adr, adr);
|
||||
|
||||
ret= burn_drive_scan_and_grab(drive_infos, libburn_drive_adr, flag&1);
|
||||
|
||||
#else
|
||||
|
||||
ret= burn_drive_scan_and_grab(drive_infos, adr, flag & 1);
|
||||
|
||||
#endif /* ! NIX */
|
||||
|
||||
if(ret<=0)
|
||||
goto ex;
|
||||
drive_grabbed= 1;
|
||||
ret= isoburn_welcome_media(&o, (*drive_infos)[0].drive,
|
||||
(flag&8) | !!(flag&2));
|
||||
(flag & 24) | !!(flag&2));
|
||||
if(ret<=0)
|
||||
goto ex;
|
||||
|
||||
|
@ -200,7 +200,7 @@ 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 8
|
||||
#define isoburn_libisofs_req_micro 10
|
||||
|
||||
/** The minimum version of libburn to be used with this version of libisoburn
|
||||
at compile time.
|
||||
@ -208,7 +208,7 @@ void isoburn_version(int *major, int *minor, int *micro);
|
||||
*/
|
||||
#define isoburn_libburn_req_major 0
|
||||
#define isoburn_libburn_req_minor 5
|
||||
#define isoburn_libburn_req_micro 2
|
||||
#define isoburn_libburn_req_micro 4
|
||||
|
||||
|
||||
/** The minimum version of libisofs to be used with this version of libisoburn
|
||||
@ -244,7 +244,7 @@ int isoburn_libburn_req(int *major, int *minor, int *micro);
|
||||
*/
|
||||
#define isoburn_header_version_major 0
|
||||
#define isoburn_header_version_minor 2
|
||||
#define isoburn_header_version_micro 5
|
||||
#define isoburn_header_version_micro 8
|
||||
/** Note:
|
||||
Above version numbers are also recorded in configure.ac because libtool
|
||||
wants them as parameters at build time.
|
||||
@ -364,6 +364,7 @@ int isoburn_drive_scan_and_grab(struct burn_drive_info *drive_infos[],
|
||||
table of content by scanning for ISO image headers.
|
||||
(depending on media type and drive this might
|
||||
help or it might make the resulting toc even worse)
|
||||
bit4= do not emulate table of content on overwriteable media
|
||||
@return 1 = success , 0 = drive not found , <0 = other error
|
||||
*/
|
||||
int isoburn_drive_aquire(struct burn_drive_info *drive_infos[],
|
||||
@ -1183,10 +1184,9 @@ int isoburn_prepare_blind_grow(struct burn_drive *d, struct burn_disc **disc,
|
||||
|
||||
|
||||
/**
|
||||
Revoke isoburn_prepare_new_image() or isoburn_prepare_disc() instead of
|
||||
running isoburn_disc_write().
|
||||
Revoke isoburn_prepare_*() instead of running isoburn_disc_write().
|
||||
libisofs reserves resources and maybe already starts generating the
|
||||
image stream when one of above two calls is performed. It is mandatory to
|
||||
image stream when one of above three calls is performed. It is mandatory to
|
||||
either run isoburn_disc_write() or to revoke the preparations by the
|
||||
call described here.
|
||||
@since 0.1.0
|
||||
|
@ -4,7 +4,7 @@
|
||||
xorriso. By Thomas Schmitt <scdbackup@gmx.net>
|
||||
Integrated sub project of libburnia-project.org but also published via:
|
||||
http://scdbackup.sourceforge.net/xorriso_eng.html
|
||||
http://scdbackup.sourceforge.net/xorriso-0.2.5.tar.gz
|
||||
http://scdbackup.sourceforge.net/xorriso-0.2.8.pl00.tar.gz
|
||||
Copyright (C) 2006-2008 Thomas Schmitt, provided under GPL version 2.
|
||||
------------------------------------------------------------------------------
|
||||
|
||||
@ -36,10 +36,10 @@ The tarball contains anything that is needed except libc and libpthread.
|
||||
libreadline and the readline-dev headers will make dialog mode more convenient,
|
||||
but are not mandatory.
|
||||
|
||||
Obtain xorriso-0.2.5.tar.gz, take it to a directory of your choice and do:
|
||||
Obtain xorriso-0.2.8.pl00.tar.gz, take it to a directory of your choice and do:
|
||||
|
||||
tar xzf xorriso-0.2.5.tar.gz
|
||||
cd xorriso-0.2.5
|
||||
tar xzf xorriso-0.2.8.pl00.tar.gz
|
||||
cd xorriso-0.2.8
|
||||
|
||||
Within that directory execute:
|
||||
|
||||
@ -74,6 +74,12 @@ The installation creates several alias links pointing to the xorriso binary:
|
||||
xorrecord starts xorriso with -as cdrecord emulation already enabled
|
||||
osirrox starts with -osirrox image-to-disk copying already enabled
|
||||
|
||||
If you want to avoid dependecy on libreadline although the libreadline
|
||||
development package is installed, then rather build xorriso by:
|
||||
./configure --prefix=/usr --disable-libreadline
|
||||
make clean ; make
|
||||
Never omit the "make clean" command after switching libreadline enabling.
|
||||
|
||||
|
||||
Drives and Disk File Objects
|
||||
|
||||
@ -186,9 +192,9 @@ and a matching dynamically linked xorriso binary.
|
||||
This binary is leaner but depends on properly installed libraries of suitable
|
||||
revision.
|
||||
|
||||
Dynamic library and compile time header requirements for libisoburn-0.2.5 :
|
||||
- libburn.so.4 , version libburn-0.5.2 or higher
|
||||
- libisofs.so.6 , version libisofs-0.6.6 or higher
|
||||
Dynamic library and compile time header requirements for libisoburn-0.2.8 :
|
||||
- libburn.so.4 , version libburn-0.5.4 or higher
|
||||
- libisofs.so.6 , version libisofs-0.6.10 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.
|
||||
|
@ -3566,18 +3566,410 @@ xorriso/make_xorriso_standalone.sh
|
||||
xorriso/configure_ac.txt
|
||||
Version leap to 0.2.5
|
||||
|
||||
24 Aug 2008 []
|
||||
24 Aug 2008 [2015]
|
||||
xorriso/changelog.txt
|
||||
Documented changes and release timestamp
|
||||
|
||||
------------------------------------ cycle - xorriso-0.2.5 - 2008.08.24.173217
|
||||
|
||||
------------------------------------ cycle - xorriso-0.2.5 -
|
||||
------------------------------------ cycle - xorriso-0.2.5 -
|
||||
26 Aug 2008 [2017]
|
||||
xorriso/convert_man_to_html.sh
|
||||
Adjusted HTML generator to recent man page changes
|
||||
|
||||
2008.08.26.163254 [2018]
|
||||
libisoburn/libisoburn.h
|
||||
libisoburn/data_source.c
|
||||
xorriso/xorriso.c
|
||||
xorriso/xorrisoburn.c
|
||||
xorriso/configure_ac.txt
|
||||
Adopting next development step of libisofs
|
||||
|
||||
26 Aug 2008 [2019]
|
||||
xorriso/xorriso.1
|
||||
Adjusted man page statements about file size limits
|
||||
|
||||
2008.08.27.121211 [2020]
|
||||
xorriso/xorriso_private.h
|
||||
xorriso/xorriso.c
|
||||
xorriso/xorrisoburn.c
|
||||
xorriso/xorriso.1
|
||||
New option -file_size_limit, -as mkisofs now supports -iso-level 1 to 3
|
||||
|
||||
2008.08.27.122127 [2021]
|
||||
xorriso/xorriso.c
|
||||
Reacted on compiler warning
|
||||
|
||||
------------------------------------ cycle - xorriso-0.2.5 - 2008.08.27.122127
|
||||
* Capability to insert and extract files far larger than 4 GB
|
||||
* New option -file_size_limit, -as mkisofs now supports -iso-level 1 to 3
|
||||
|
||||
|
||||
27 Aug 2008 [2022]
|
||||
xorriso/xorriso.1
|
||||
Corrected a typo in man page
|
||||
|
||||
2008.09.02.164803 [2025]
|
||||
xorriso/xorriso.c
|
||||
xorriso/xorrisoburn.h
|
||||
xorriso/xorrisoburn.c
|
||||
xorriso/xorriso.1
|
||||
New option -extract_cut
|
||||
|
||||
2008.09.03.143218 [2026]
|
||||
xorriso/xorriso_private.h
|
||||
xorriso/xorriso.c
|
||||
xorriso/xorrisoburn.c
|
||||
xorriso/xorriso.1
|
||||
New -error_behavior "file_extraction" behavior "best_effort"
|
||||
|
||||
2008.09.04.100158 [2027]
|
||||
xorriso/xorriso.h
|
||||
xorriso/xorriso_private.h
|
||||
xorriso/xorriso.c
|
||||
xorriso/xorrisoburn.c
|
||||
xorriso/xorriso.1
|
||||
New option -check_media_defaults
|
||||
|
||||
------------------------------------ cycle - xorriso-0.2.5 - 2008.09.04.100158
|
||||
* New option -extract_cut
|
||||
* New -error_behavior "file_extraction" behavior "best_effort"
|
||||
* New option -check_media_defaults
|
||||
|
||||
|
||||
2008.09.05.095344 [2028]
|
||||
xorriso/xorriso_private.h
|
||||
xorriso/xorriso.h
|
||||
xorriso/xorriso.c
|
||||
xorriso/xorrisoburn.c
|
||||
xorriso/xorriso.1
|
||||
New option -list_delimiter
|
||||
|
||||
5 Sep 2008 [2029]
|
||||
xorriso/xorriso_eng.html
|
||||
Updated development feature list
|
||||
|
||||
2008.09.05.114936 [2030]
|
||||
xorriso/xorriso.c
|
||||
-commit_eject, -alter_date, -alter_date_r, -pacifier, -prog_help had wrong argument count prediction
|
||||
|
||||
5 Sep 2008 [2031]
|
||||
xorriso/xorriso.1
|
||||
Documented forgotten option -publisher
|
||||
|
||||
5 Sep 2008 [2032]
|
||||
xorriso/xorriso_eng.html
|
||||
xorriso/xorriso.1
|
||||
Minor documentation polishing
|
||||
|
||||
------------------------------------ cycle - xorriso-0.2.5 - 2008.09.05.114936
|
||||
* New option -list_delimiter
|
||||
|
||||
|
||||
6 Sep 2008 [2033]
|
||||
xorriso/xorriso_eng.html
|
||||
xorriso/xorriso.1
|
||||
Documentation polishing
|
||||
|
||||
2008.09.07.144714 [2034]
|
||||
xorriso/xorrisoburn.c
|
||||
Removed outdated alternative code for support of libisofs-0.6.6
|
||||
|
||||
2008.09.08.094748 [2035]
|
||||
xorriso/xorriso.c
|
||||
xorriso/xorrisoburn.c
|
||||
Made use of new libisofs call iso_image_update_sizes()
|
||||
|
||||
2008.09.08.121548 [2036]
|
||||
xorriso/xorrisoburn.c
|
||||
Bug fix: -format full did not re-format already formatted DVD+RW
|
||||
|
||||
2008.09.09.082406 [2037]
|
||||
xorriso/xorrisoburn.c
|
||||
Smoothened time estimation with pacifier mkisofs style
|
||||
|
||||
9 Sep 2008 [2038]
|
||||
xorriso/xorriso_eng.html
|
||||
Updated web page
|
||||
|
||||
------------------------------------ cycle - xorriso-0.2.5 - 2008.09.09.082406
|
||||
* Bug fix: -format full did not re-format already formatted DVD+RW
|
||||
|
||||
|
||||
2008.09.11.114227 [2040]
|
||||
xorriso/xorrisoburn.c
|
||||
Issuing message at begin of image loading
|
||||
|
||||
2008.09.13.204455 [2047]
|
||||
xorriso/xorrisoburn.c
|
||||
Correction about -check_media report and message about image loading
|
||||
|
||||
2008.09.16.060427 [2053]
|
||||
xorriso/xorriso.c
|
||||
xorriso/xorrisoburn.c
|
||||
Corrected pacifier text (Ticket 141)
|
||||
|
||||
2008.09.16.185206 [2054]
|
||||
xorriso/xorriso_private.h
|
||||
xorriso/xorriso.1
|
||||
Corrected falsely computed default setting of -file_size_limit
|
||||
|
||||
2008.09.17.193824 [2056]
|
||||
xorriso/xorrisoburn.c
|
||||
Corrected message duplication about emulated sessions on overwriteable media
|
||||
|
||||
2008.09.19.090619 [2057] [2058]
|
||||
xorriso/configure_ac.txt
|
||||
standalone version switch to libisofs-0.6.8
|
||||
|
||||
19 Sep 2008 [2059]
|
||||
xorriso/xorriso.1
|
||||
Small change in man page
|
||||
|
||||
2008.09.19.104424 [2060]
|
||||
configure.ac
|
||||
libisoburn/libisoburn.h
|
||||
Switched requirements to libisofs-0.6.8
|
||||
|
||||
------------------------------------ cycle - xorriso-0.2.5 - 2008.09.19.104424
|
||||
|
||||
|
||||
2008.09.19.122656 [2061]
|
||||
xorriso/xorrisoburn.c
|
||||
Changed WARNING about non-writeable media to NOTE severity of blank messages
|
||||
|
||||
|
||||
2008.09.19.180001 [2066]
|
||||
configure.ac
|
||||
README
|
||||
libisoburn/libisoburn.h
|
||||
xorriso/README
|
||||
xorriso/xorriso_timestamp.h
|
||||
xorriso/xorriso_private.h
|
||||
xorriso/xorrisoburn.h
|
||||
xorriso/xorriso_eng.html
|
||||
xorriso/make_xorriso_standalone.sh
|
||||
xorriso/configure_ac.txt
|
||||
Version leap to 0.2.6
|
||||
|
||||
20 Sep 2008 [2067]
|
||||
xorriso/changelog.txt
|
||||
Documented changes and release timestamp
|
||||
|
||||
---------------------------------- release - xorriso-0.2.6 - 2008.09.19.180001
|
||||
* Capability to insert and extract files far larger than 4 GB
|
||||
* New option -file_size_limit, -as mkisofs now supports -iso-level 1 to 3
|
||||
* New option -extract_cut
|
||||
* New -error_behavior "file_extraction" behavior "best_effort"
|
||||
* New option -check_media_defaults
|
||||
* New option -list_delimiter
|
||||
* Bug fix: -format full did not re-format already formatted DVD+RW
|
||||
|
||||
|
||||
2008.09.20.093140 [2068]
|
||||
configure.ac
|
||||
README
|
||||
libisoburn/libisoburn.h
|
||||
xorriso/README
|
||||
xorriso/xorriso_timestamp.h
|
||||
xorriso/xorriso_private.h
|
||||
xorriso/xorrisoburn.h
|
||||
xorriso/xorriso_eng.html
|
||||
xorriso/make_xorriso_standalone.sh
|
||||
xorriso/configure_ac.txt
|
||||
Version leap to 0.2.7
|
||||
|
||||
20 Sep 2008 [2069]
|
||||
xorriso/changelog.txt
|
||||
Documented changes and release timestamp
|
||||
|
||||
------------------------------------ cycle - xorriso-0.2.7 - 2008.09.20.093140
|
||||
|
||||
2008.09.24.155424 [2077]
|
||||
xorriso/xorrisoburn.c
|
||||
Trying to get pacifiers of simultaneously running emulations into sync
|
||||
|
||||
2008.09.26.120934 [2082]
|
||||
xorriso/xorriso.c
|
||||
Bug fix: -as mkisofs -iso-level was accused to be an unknown option
|
||||
|
||||
2008.09.26.161331 [2083]
|
||||
xorriso/xorriso_private.h
|
||||
xorriso/xorriso.c
|
||||
xorriso/xorrisoburn.h
|
||||
xorriso/xorrisoburn.c
|
||||
xorriso/xorriso.1
|
||||
A first attempt on making bootable ISO images
|
||||
|
||||
2008.09.28.112850 [2084]
|
||||
xorriso/configure_ac.txt
|
||||
Standalone version switch to libisofs-0.6.9 (vreixoml 387) to avoid SIGSEGV
|
||||
|
||||
2008.09.28.113256 [2085]
|
||||
xorriso/xorriso.c
|
||||
xorriso/xorrisoburn.c
|
||||
xorriso/xorriso.1
|
||||
xorriso/convert_man_to_html.sh
|
||||
xorriso/xorriso_eng.html
|
||||
Made -boot_image isolinux activation obey -overwrite setting
|
||||
|
||||
2008.09.30.102243 [2088]
|
||||
libisoburn/libisoburn.h
|
||||
Requiring libisofs-0.6.9 because of bug fixes with El Torito
|
||||
|
||||
2008.09.30.102753 [2089]
|
||||
xorriso/xorriso.c
|
||||
xorriso/xorrisoburn.c
|
||||
xorriso/xorriso.1
|
||||
Adjustments about -boot_image after testing with various media types
|
||||
|
||||
30 Sep 2008 [2090]
|
||||
xorriso/xorriso_eng.html
|
||||
Mentioned progress and bug fixes in 0.2.7
|
||||
|
||||
------------------------------------ cycle - xorriso-0.2.7 - 2008.09.30.102753
|
||||
* Bug fix: -as mkisofs -iso-level was accused to be an unknown option
|
||||
* Ability to write and maintain bootable ISO images based on ISOLINUX
|
||||
|
||||
|
||||
2008.09.30.174925 [2091]
|
||||
xorriso/xorrisoburn.c
|
||||
xorriso/xorriso.1
|
||||
Small adjustments about -boot_image
|
||||
|
||||
2008.10.02.092354 [2092]
|
||||
xorriso/xorrisoburn.c
|
||||
xorriso/xorriso.1
|
||||
Small adjustments about -boot_image
|
||||
|
||||
2008.10.02.092635 [2093]
|
||||
xorriso/xorriso.c
|
||||
Enabled -as cdrecord blank=as_needed
|
||||
|
||||
2008.10.02.105442 [2094]
|
||||
xorriso/README
|
||||
xorriso/configure_ac.txt
|
||||
Introduced xorriso-standalone ./configure option --disable-libreadline
|
||||
|
||||
2008.10.02.110828 [2095]
|
||||
README
|
||||
xorriso/README
|
||||
xorriso/configure_ac.txt
|
||||
Fine tuning about ./configure option --disable-libreadline
|
||||
|
||||
------------------------------------ cycle - xorriso-0.2.7 - 2008.10.02.110828
|
||||
* New ./configure option --disable-libreadline to make binary more portable
|
||||
|
||||
|
||||
4 Oct 2008 [2099]
|
||||
xorriso/convert_man_to_html.sh
|
||||
xorriso/xorriso.1
|
||||
Relocated the El Torito paragraph in man xorriso
|
||||
|
||||
2008.10.05.075432 [2101]
|
||||
libisoburn/libisoburn.h
|
||||
libisoburn/burn_wrap.c
|
||||
xorriso/xorriso_private.h
|
||||
xorriso/xorriso.c
|
||||
xorriso/xorrisoburn.c
|
||||
xorriso/xorriso.1
|
||||
-rom_toc_scan nonrom_off disables toc emulation on overwriteables
|
||||
|
||||
2008.10.05.093703 [2105]
|
||||
xorriso/xorrisoburn.c
|
||||
Bug fix: Random target filenames with looping symbolic links
|
||||
|
||||
2008.10.05.125046 [2109]
|
||||
xorriso/configure_ac.txt
|
||||
Adapted standalone BURN_*_VERSION to libburn 0.5.5
|
||||
|
||||
2008.10.05.125242 [2110]
|
||||
configure.ac
|
||||
libisoburn/libisoburn.h
|
||||
libisoburn now demands libburn-0.5.4
|
||||
|
||||
------------------------------------ cycle - xorriso-0.2.7 - 2008.10.05.125242
|
||||
* Bug fix: -follow link attributed random target filenames to looping links
|
||||
|
||||
|
||||
2008.10.06.114114 [2113]
|
||||
xorriso/configure_ac.txt
|
||||
Adapted standalone LIBISOFS_*_VERSION to libisofs 0.6.10
|
||||
|
||||
2008.10.06.114845 [2114]
|
||||
configure.ac
|
||||
libisoburn/libisoburn.h
|
||||
libisoburn now demands libisofs-0.6.10
|
||||
|
||||
------------------------------------ cycle - xorriso-0.2.7 - 2008.10.06.114845
|
||||
|
||||
|
||||
7 Oct 2008 [2115]
|
||||
xorriso/xorriso.1
|
||||
Polished man xorriso
|
||||
|
||||
2008.10.08.135848 [2116]
|
||||
xorriso/xorriso.c
|
||||
xorriso/xorriso.1
|
||||
Changed newly introduced -rom_toc_scan nonrom_off to off:emul_off
|
||||
|
||||
2008.10.09.145926 [2117]
|
||||
configure.ac
|
||||
README
|
||||
Introduced libburn ./configure option --disable-libreadline
|
||||
|
||||
9 Oct 2008 [2118]
|
||||
xorriso/compile_xorriso.sh
|
||||
Introduced xorriso development compiler script option -no_libreadline
|
||||
|
||||
------------------------------------ cycle - xorriso-0.2.7 - 2008.10.09.145926
|
||||
|
||||
|
||||
2008.10.10.131102 [2119]
|
||||
xorriso/xorriso_private.h
|
||||
xorriso/xorriso.c
|
||||
xorriso/xorriso.1
|
||||
Enabled dialog for multi-lines and newline characters in quotation marks
|
||||
|
||||
2008.10.10.134020 [2120]
|
||||
xorriso/xorriso.c
|
||||
Polishing multi-line dialog
|
||||
|
||||
2008.10.12.120001 [2122]
|
||||
configure.ac
|
||||
README
|
||||
libisoburn/libisoburn.h
|
||||
xorriso/README
|
||||
xorriso/xorriso_timestamp.h
|
||||
xorriso/xorriso_private.h
|
||||
xorriso/xorrisoburn.h
|
||||
xorriso/xorriso_eng.html
|
||||
xorriso/make_xorriso_standalone.sh
|
||||
xorriso/configure_ac.txt
|
||||
Version leap to 0.2.8
|
||||
|
||||
12 Oct 2008 []
|
||||
xorriso/changelog.txt
|
||||
Documented changes and release timestamp
|
||||
|
||||
---------------------------------- release - xorriso-0.2.8 - 2008.10.12.120001
|
||||
* Bug fix: -as mkisofs -iso-level was accused to be an unknown option
|
||||
* Bug fix: -follow link attributed random target filenames to looping links
|
||||
* Ability to write and maintain bootable ISO images based on ISOLINUX
|
||||
* New ./configure option --disable-libreadline to make binary more portable
|
||||
|
||||
|
||||
------------------------------------ cycle - xorriso-0.2.9 -
|
||||
------------------------------------ cycle - xorriso-0.2.9 -
|
||||
|
||||
[]
|
||||
libisoburn/burn_wrap.c
|
||||
Tested removal of drive address path conversion in isoburn_drive_aquire()
|
||||
xorriso/xorriso.h
|
||||
xorriso/xorriso.c
|
||||
xorriso/xorriso.1
|
||||
xorriso/xorrisoburn.c
|
||||
New option -quoted_path_list
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
===============================================================================
|
||||
@ -3588,16 +3980,23 @@ Tested removal of drive address path conversion in isoburn_drive_aquire()
|
||||
|
||||
------------------------------------------------- important
|
||||
|
||||
|
||||
------------------------------------------------- development
|
||||
|
||||
- option -list_delimiter
|
||||
- creation of bootable images
|
||||
- ? declare change pending after -boot_image isolinux bootspec ?
|
||||
- isohybrid option as soon as supported by libisofs
|
||||
|
||||
- xorriso seems able to deal with newlines in file names.
|
||||
Now a path_list format is needed which escapes newlines.
|
||||
Dialog needs to be enabled for newlines.
|
||||
|
||||
- random access read and write option
|
||||
|
||||
- option to patch the mount image size and location on overwriteables
|
||||
|
||||
- change -check_media what=disc to libburn disc rather than libisoburn
|
||||
(seems to need new API capabilities of libburn)
|
||||
|
||||
- opportunity to retrieve file via burn_read_data() and libisofs provided lba
|
||||
|
||||
??? Clarify handling of links in ISO and on disk during restore
|
||||
|
||||
> Relative addressing and pattern matching :
|
||||
@ -3609,8 +4008,7 @@ Tested removal of drive address path conversion in isoburn_drive_aquire()
|
||||
the main thread cares for user and message queues.
|
||||
|
||||
- Introduce an interrupt key for dialog
|
||||
|
||||
- watch read latency and evaluate read quality indicator
|
||||
>>> but how without disturbing readline ?
|
||||
|
||||
- regularly do valgrind check for memory leaks
|
||||
|
||||
@ -3634,30 +4032,14 @@ Tested removal of drive address path conversion in isoburn_drive_aquire()
|
||||
|
||||
------ problem fixes :
|
||||
|
||||
- Error code for libisoburn data source read errors.
|
||||
|
||||
- Proper reaction on severity of errors issued by data_source
|
||||
(currently even a FATAL gets converted to ISO_FILE_READ_ERROR
|
||||
in iso_stream_read())
|
||||
|
||||
- #define ISO_ERR_PRIO(e) ((e & 0x00700000) << 8)
|
||||
(rather than 0x00F00000, see ticket 135)
|
||||
|
||||
- the error handling system should be comprehensively documented
|
||||
and eventually rectified where needed.
|
||||
|
||||
- ticket 137:
|
||||
With softlink /X/YZ and Joliet enabled:
|
||||
libisofs: HINT : Can't add YZ to Joliet tree. This kind of files can only be added to a Rock Ridget tree. Skipping.
|
||||
HINT is not a suitable severity for this. Better: WARNING, SORRY, MISHAP
|
||||
One should at least give the full path of /X/YZ or the type of the file.
|
||||
|
||||
|
||||
------ feature enhancements :
|
||||
|
||||
- Data files >= 4 GiB.
|
||||
|
||||
- API: iso_image_update_sizes() to be run immediately before -commit
|
||||
- Optional performing of ISO hybrid patch for USB and other pseudo hard disks
|
||||
http://www.sfr-fresh.com/linux/misc/syslinux-3.72.tar.gz:a/syslinux-3.72/utils/isohybrid
|
||||
http://syslinux.zytor.com/archives/2008-October/010869.html
|
||||
|
||||
- A repeatable shell command as origin ("disk_file")
|
||||
of a regular file in the ISO image.
|
||||
@ -3669,9 +4051,6 @@ Tested removal of drive address path conversion in isoburn_drive_aquire()
|
||||
- Image checksum tag in the last data blocks of an image.
|
||||
A data file entry should point to that block.
|
||||
|
||||
- creation of bootable images
|
||||
>>> Vreixo points to demo/iso.c
|
||||
|
||||
|
||||
------ extended attribute stunts: Not visible for mount but for libisofs
|
||||
|
||||
|
@ -22,6 +22,8 @@ do_strip=0
|
||||
static_opts=
|
||||
warn_opts="-Wall"
|
||||
nglibisofs=1
|
||||
def_libreadline="-DXorriso_with_readlinE"
|
||||
link_libreadline="-lreadline"
|
||||
|
||||
for i in "$@"
|
||||
do
|
||||
@ -35,11 +37,16 @@ do
|
||||
elif test "$i" = "-g"
|
||||
then
|
||||
debug_opts="-g -O0"
|
||||
elif test "$i" = "-no_libreadline"
|
||||
then
|
||||
def_libreadline=""
|
||||
link_libreadline=""
|
||||
elif test "$i" = "-help" -o "$i" = "--help" -o "$i" = "-h"
|
||||
then
|
||||
echo \
|
||||
"$xorr/compile_xorriso.sh : to be executed above top level directories"
|
||||
echo "Options:"
|
||||
echo " -no_libreadline do not compile for and link with libreadline."
|
||||
echo " -do_diet produce capability reduced lean version."
|
||||
echo " -do_strip apply program strip to compiled programs."
|
||||
echo " -g produce debuggable programm."
|
||||
@ -83,7 +90,7 @@ date -u '+#define Xorriso_build_timestamP "%Y.%m.%d.%H%M%S"' >"$xorr"/xorriso_bu
|
||||
echo "Build timestamp : $(sed -e 's/#define Xorriso_build_timestamP "//' -e 's/"$//' "$xorr"/xorriso_buildstamp.h)"
|
||||
|
||||
echo "compiling program $xorr/xorriso.c $static_opts $debug_opts $def_opts"
|
||||
cc -I. -DXorriso_with_maiN -DXorriso_with_regeX -DXorriso_with_readlinE \
|
||||
cc -I. -DXorriso_with_maiN -DXorriso_with_regeX $def_libreadline \
|
||||
$warn_opts \
|
||||
$static_opts \
|
||||
$debug_opts \
|
||||
@ -130,7 +137,7 @@ cc -I. -DXorriso_with_maiN -DXorriso_with_regeX -DXorriso_with_readlinE \
|
||||
\
|
||||
$libisofs \
|
||||
\
|
||||
-lreadline \
|
||||
$link_libreadline \
|
||||
\
|
||||
-lpthread
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
AC_INIT([xorriso], [0.2.5], [http://libburnia-project.org])
|
||||
AC_INIT([xorriso], [0.2.8], [http://libburnia-project.org])
|
||||
AC_PREREQ([2.50])
|
||||
dnl AC_CONFIG_HEADER([config.h])
|
||||
|
||||
@ -9,14 +9,14 @@ AM_INIT_AUTOMAKE([subdir-objects])
|
||||
|
||||
BURN_MAJOR_VERSION=0
|
||||
BURN_MINOR_VERSION=5
|
||||
BURN_MICRO_VERSION=3
|
||||
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=8
|
||||
LIBISOFS_MICRO_VERSION=10
|
||||
AC_SUBST(LIBISOFS_MAJOR_VERSION)
|
||||
AC_SUBST(LIBISOFS_MINOR_VERSION)
|
||||
AC_SUBST(LIBISOFS_MICRO_VERSION)
|
||||
@ -95,14 +95,20 @@ else
|
||||
CFLAGS="$CFLAGS -DDEBUG"
|
||||
fi
|
||||
|
||||
|
||||
AC_ARG_ENABLE(libreadline,
|
||||
[ --enable-libreadline Enable use of libreadline by xorriso, default=yes],
|
||||
, enable_libreadline=yes)
|
||||
if test x$enable_libreadline = xyes; then
|
||||
dnl Check whether there is readline-devel and readline-runtime.
|
||||
dnl If not, erase this macro which would enable use of readline(),add_history()
|
||||
READLINE_DEF="-DXorriso_with_readlinE"
|
||||
READLINE_DEF="-DXorriso_with_readlinE"
|
||||
dnl The empty yes case obviously causes -lreadline to be linked
|
||||
AC_CHECK_HEADER(readline/readline.h, AC_CHECK_LIB(readline, readline, , READLINE_DEF= ), READLINE_DEF= )
|
||||
AC_CHECK_HEADER(readline/readline.h, AC_CHECK_LIB(readline, readline, , READLINE_DEF= ), READLINE_DEF= )
|
||||
dnl The X= in the yes case prevents that -lreadline gets linked twice
|
||||
AC_CHECK_HEADER(readline/history.h, AC_CHECK_LIB(readline, add_history, X= , READLINE_DEF= ), READLINE_DEF= )
|
||||
AC_CHECK_HEADER(readline/history.h, AC_CHECK_LIB(readline, add_history, X= , READLINE_DEF= ), READLINE_DEF= )
|
||||
else
|
||||
READLINE_DEF=
|
||||
fi
|
||||
AC_SUBST(READLINE_DEF)
|
||||
|
||||
|
||||
|
@ -51,7 +51,7 @@ then
|
||||
-e 's/<b>Libburn drives:<\/b>/\ <BR><b>Libburn drives:<\/b>/' \
|
||||
-e 's/^-dev /\ \ -dev /' \
|
||||
-e 's/^-devices /\ \ -devices /' \
|
||||
-e 's/<b>Rock Ridge, POSIX, X\/Open:<\/b>/\ <BR><b>Rock Ridge, POSIX, X\/Open:<\/b>/' \
|
||||
-e 's/<b>Rock Ridge, POSIX, X\/Open, and El Torito:<\/b>/\ <BR><b>Rock Ridge, POSIX, X\/Open, and El Torito:<\/b>/' \
|
||||
-e 's/<b>Command processing:<\/b>/\ <BR><b>Command processing:<\/b>/' \
|
||||
-e 's/<b>Dialog, Readline, Result pager:<\/b>/\ <BR><b>Dialog, Readline, Result pager:<\/b>/' \
|
||||
-e 's/<b>Aquiring source and target drive:<\/b>/\ <BR><b>Aquiring source and target drive:<\/b><BR>\ <BR>/' \
|
||||
@ -66,6 +66,7 @@ then
|
||||
-e 's/^706k = 706kB/\ \ 706k = 706kB/' \
|
||||
-e 's/^5540k = 5540kB/\ \ 5540k = 5540kB/' \
|
||||
-e 's/<b>Exception processing:<\/b>/\ <BR><b>Exception processing:<\/b><BR>\ <BR>/' \
|
||||
-e 's/<b>El Torito bootable ISO images:<\/b>/\ <BR><b>El Torito bootable ISO images:<\/b><BR>\ <BR>/' \
|
||||
-e 's/<b>Dialog mode control:<\/b>/\ <BR><b>Dialog mode control:<\/b><BR>\ <BR>/' \
|
||||
-e 's/<b>Drive and media related inquiry actions:<\/b>/\ <BR><b>Drive and media related inquiry actions:<\/b><BR>\ <BR>/' \
|
||||
-e 's/<b>Navigation in ISO image/\ <BR><b>Navigation in ISO image/' \
|
||||
|
@ -25,11 +25,11 @@
|
||||
current_dir=$(pwd)
|
||||
lone_dir="$current_dir"/"xorriso-standalone"
|
||||
|
||||
xorriso_rev=0.2.5
|
||||
xorriso_rev=0.2.8
|
||||
# For unstable uploads:
|
||||
xorriso_pl=""
|
||||
# xorriso_pl=""
|
||||
# For stable releases:
|
||||
# xorriso_pl=".pl00"
|
||||
xorriso_pl=".pl00"
|
||||
|
||||
with_bootstrap_tarball=1
|
||||
|
||||
|
@ -2,7 +2,7 @@
|
||||
.\" First parameter, NAME, should be all caps
|
||||
.\" Second parameter, SECTION, should be 1-8, maybe w/ subsection
|
||||
.\" other parameters are allowed: see man(7), man(1)
|
||||
.TH XORRISO 1 "Sep 19, 2008"
|
||||
.TH XORRISO 1 "Oct 10, 2008"
|
||||
.\" Please adjust this date whenever revising the manpage.
|
||||
.\"
|
||||
.\" Some roff macros, for reference:
|
||||
@ -53,6 +53,8 @@ Updates ISO subtrees incrementally to match given disk subtrees.
|
||||
Writes result either as completely new image or as add-on session
|
||||
to optical media or filesystem objects.
|
||||
.br
|
||||
Can activate ISOLINUX boot images via El Torito.
|
||||
.br
|
||||
Can perform multi-session tasks as emulation of mkisofs and cdrecord.
|
||||
.br
|
||||
Can restore files from ISO image to disk filesystem (see osirrox).
|
||||
@ -77,7 +79,7 @@ Creating, Growing, Modifying, Blind Growing
|
||||
.br
|
||||
Libburn drives
|
||||
.br
|
||||
Rock Ridge, POSIX, X/Open
|
||||
Rock Ridge, POSIX, X/Open, and El Torito
|
||||
.br
|
||||
Command processing
|
||||
.br
|
||||
@ -325,7 +327,7 @@ One may use option
|
||||
.B -ban_stdio_write
|
||||
to surely prevent this risk and to allow only MMC drives.
|
||||
.SS
|
||||
.B Rock Ridge, POSIX, X/Open:
|
||||
.B Rock Ridge, POSIX, X/Open, and El Torito:
|
||||
.br
|
||||
.B Rock Ridge
|
||||
is the name of a set of additional informations which enhance
|
||||
@ -340,6 +342,20 @@ xorriso is not named "porriso" because POSIX only guarantees 14 characters
|
||||
of filename length. It is the X/Open System Interface standard XSI which
|
||||
demands a file name length of up to 255 characters and paths of up to 1024
|
||||
characters. Rock Ridge fulfills this demand.
|
||||
.PP
|
||||
An
|
||||
.B El Torito
|
||||
boot record connects a boot image, which is a binary program plus some
|
||||
other files stored in the ISO image, with the bootstrapping facility of
|
||||
contemporary computers.
|
||||
The content of the boot image files is not in the scope of El Torito.
|
||||
.br
|
||||
Most bootable Linux CDs are equipped with ISOLINUX boot images. xorriso is
|
||||
able to create or maintain an El Torito object which makes such an image
|
||||
bootable. Emulation -as mkisofs supports the example options out of the
|
||||
ISOLINUX wiki.
|
||||
.br
|
||||
The support for other boot image types is sparse.
|
||||
.SS
|
||||
.B Command processing:
|
||||
.br
|
||||
@ -395,7 +411,7 @@ to make dialog more comfortable.
|
||||
.PP
|
||||
Readline is an enhancement for the input line. You may know it already from
|
||||
the bash shell. Whether it is available in xorriso depends on the availability
|
||||
of package readline-dev at the time when xorriso was built from its sourcecode.
|
||||
package readline-dev at the time when xorriso was built from its sourcecode.
|
||||
.br
|
||||
It allows to move the cursor over the text in the line by help of the
|
||||
Leftward and the Rightward arrow key.
|
||||
@ -465,8 +481,8 @@ changes.
|
||||
.br
|
||||
-outdev can be performed without previous -dev or -indev. In that case an
|
||||
empty ISO image with no changes pending is created. It can either be populated
|
||||
by help of -add or it can be discarded silently if -dev or -indev are
|
||||
performed afterwards.
|
||||
by help of -map, -add et.al. or it can be discarded silently if -dev or -indev
|
||||
are performed afterwards.
|
||||
.br
|
||||
Special address string "-" means standard output, to which several restrictions
|
||||
apply. See above paragraph "Libburn drives".
|
||||
@ -516,7 +532,7 @@ until the next -dev or -indev. After the image has been loaded once, the
|
||||
setting is valid for -rollback until next -dev or -indev, where it
|
||||
will be reset to "auto".
|
||||
.TP
|
||||
\fB\-rom_toc_scan\fR "on"|"off"
|
||||
\fB\-rom_toc_scan\fR "on"|"off"[:"emul_on"|"emul_off"]
|
||||
Read-only drives do not tell the actual media type but show any media as
|
||||
ROM (e.g. as DVD-ROM). The session history of MMC multi-session media might
|
||||
be truncated to first and last session or even be completely false.
|
||||
@ -527,8 +543,13 @@ especially the address of the last session, there is a scan for ISO 9660
|
||||
filesystem headers which might help but also might yield worse results
|
||||
than the drive's table of content. At its end it can cause read attempts
|
||||
to invalid addresses and thus ugly drive behavior.
|
||||
Setting "on" enables that scan for alleged read-only media.
|
||||
.br
|
||||
To be in effect, -rom_toc_scan has to be enabled by "on" before the -*dev
|
||||
On the other hand the emulation of session history on overwriteable media
|
||||
can hamper reading of partly damaged media. Setting "off:emul_off" disables
|
||||
the elsewise trustworthy table-of-content scan for those media.
|
||||
.br
|
||||
To be in effect, the -rom_toc_scan setting has to be made before the -*dev
|
||||
command which aquires drive and media.
|
||||
.TP
|
||||
\fB\-ban_stdio_write\fR
|
||||
@ -861,7 +882,7 @@ iso_rr_path.
|
||||
-type type_letter
|
||||
.br
|
||||
matches only files files of the given type:
|
||||
"block", "char", "dir", "pipe", "file", "link", "socket",
|
||||
"block", "char", "dir", "pipe", "file", "link", "socket", "eltorito",
|
||||
"Xotic" which eventually matches what is not matched by the other types.
|
||||
.br
|
||||
Only the first letter is interpreted. E.g.: -find / -type d
|
||||
@ -1352,25 +1373,77 @@ xorriso adds the traditional 300k of padding by default to all images.
|
||||
.br
|
||||
For images which will never get to a CD it is safe to use -padding 0 .
|
||||
.TP
|
||||
\fB\-boot_image\fR "any"|"isolinux" "discard"|"keep"|"patch"
|
||||
Defines the handling of an eventual boot image (El-Torito) which has been read
|
||||
from an existing ISO image. All types ("any") can be discarded or kept
|
||||
unaltered. The latter makes only sense if the format of the boot image is
|
||||
.B El Torito bootable ISO images:
|
||||
.PP
|
||||
Contrary to published specifications many BIOSes will load an El Torito
|
||||
object from the first session on media and not from the last one, which
|
||||
gets mounted by default. This makes no problems with overwriteable media,
|
||||
because they appear to inadverted readers as one single session.
|
||||
.br
|
||||
But with multi-session media CD-R[W], DVD-R[W], DVD+R, it implies that the
|
||||
whole bootable system has to reside already in the first session and that
|
||||
the last session still has to bear all files which the booted system expects
|
||||
after eventually mounting the ISO image.
|
||||
.br
|
||||
If ISOLINUX is known to be present on media then it is advised to patch it
|
||||
when a follow-up session gets written. But one should not rely on the
|
||||
capability to influence the bootability of the existing sessions, unless one
|
||||
can assume overwriteable media.
|
||||
.TP
|
||||
\fB\-boot_image\fR "any"|"isolinux" "discard"|"keep"|"patch"|bootspec
|
||||
Defines the handling of an eventual El Torito object which has
|
||||
been read from an existing ISO image or defines how to make a prepared
|
||||
ISOLINUX file set bootable.
|
||||
.br
|
||||
|
||||
All types ("any") of El Torito boot images can be discarded or kept unaltered.
|
||||
The latter makes only sense if the format of the boot image is
|
||||
relocatable without content changes.
|
||||
.br
|
||||
The boot image type "isolinux" can be kept unaltered (not advisable), or
|
||||
discarded, or it can be patched to match its relocation. In the latter case
|
||||
the resulting ISO image is bootable if the boot image was really complying
|
||||
to the isolinux standard.
|
||||
.br
|
||||
Creation of new boot images is not yet possible.
|
||||
An existing boot image of type "isolinux" can be discarded or it can be
|
||||
patched to match its relocation. In the latter case the resulting ISO image
|
||||
stays bootable if the boot image was really produced by ISOLINUX.
|
||||
.br
|
||||
CAUTION:
|
||||
This is an expert option. xorriso is not an expert yet.
|
||||
It cannot recognize the inner form of boot images.
|
||||
This is an expert option.
|
||||
xorriso cannot recognize the inner form of boot images.
|
||||
So the user has already to know about the particular needs of the
|
||||
bootimage which is present on the input media.
|
||||
boot image which is present on the input media.
|
||||
.br
|
||||
Most safe is the default: "any" "discard".
|
||||
.br
|
||||
|
||||
On all media types it is possible to activate a set of ISOLINUX files
|
||||
for booting within the first session. In further sessions an existing boot
|
||||
image can get replaced by a new one, but depending on the media type
|
||||
this may have few effect at boot time. See above.
|
||||
.br
|
||||
The ISOLINUX files have to be added to the ISO image by normal means
|
||||
(image loading, -map, -add, ...) and should reside either in ISO image
|
||||
directory /isolinux or in /boot/isolinux .
|
||||
In that case it suffices to use as bootspec the text "dir=/isolinux" or
|
||||
"dir=/boot/isolinux". E.g.:
|
||||
.br
|
||||
-boot_image isolinux dir=/boot/isolinux
|
||||
.br
|
||||
which bundles these individual settings:
|
||||
.br
|
||||
-boot_image isolinux bin_path=/boot/isolinux/isolinux.bin
|
||||
.br
|
||||
-boot_image isolinux cat_path=/boot/isolinux/boot.cat
|
||||
.br
|
||||
-boot_image isolinux load_size=2048
|
||||
.br
|
||||
bin_path depicts the binary program which is to be started by the BIOS at
|
||||
boot time. It is among the files produced by ISOLINUX.
|
||||
.br
|
||||
An El Torito boot catalog file gets inserted into the ISO image with address
|
||||
cat_path at -commit time.
|
||||
It is subject to normal -overwrite and -reassure processing if there is already
|
||||
a file with the same name.
|
||||
.br
|
||||
The setting of -boot_image will change to "isolinux" "patch" after successful
|
||||
writing of a session with -boot_image "isolinux" bootspec.
|
||||
.TP
|
||||
.B Exception processing:
|
||||
.PP
|
||||
@ -1485,10 +1558,13 @@ With occasion "file_extraction" there are three behaviors:
|
||||
.TP
|
||||
.B Dialog mode control:
|
||||
.TP
|
||||
\fB\-dialog\fR "on"|"off"
|
||||
Enable or disable to enter dialog mode after all arguments
|
||||
are processed. In dialog mode input lines get prompted via
|
||||
readline or from stdin.
|
||||
\fB\-dialog\fR "on"|"off"|"single_line"
|
||||
Enable or disable to enter dialog mode after all arguments are processed.
|
||||
In dialog mode input lines get prompted via readline or from stdin.
|
||||
.br
|
||||
Mode "on" supports input of newline characters witing quotation marks and
|
||||
line continuation by trailing backslash outside quotation marks.
|
||||
Mode "single_line" does not.
|
||||
.TP
|
||||
\fB\-page\fR length width
|
||||
Describe terminal to the text pager. See also above, paragraph Result pager.
|
||||
@ -1969,6 +2045,7 @@ Personality "\fBmkisofs\fR" accepts the options listed with:
|
||||
.br
|
||||
Among them: -R (always on), -J, -o, -M, -C, -path-list, -m, -exclude-list,
|
||||
-f, -print-size, -pad, -no-pad, -V, -v, -version, -graft-points,
|
||||
-no-emul-boot, -b, -c, -boot-info-table, -boot-load-size,
|
||||
pathspecs as with xorriso -add.
|
||||
A lot of options are not supported and lead to failure of the mkisofs
|
||||
emulation. Some are ignored, but better do not rely on this tolerance.
|
||||
@ -2206,6 +2283,8 @@ Manipulating an existing ISO image on the same media
|
||||
.br
|
||||
Copy modified ISO image from one media to another
|
||||
.br
|
||||
Bring a prepared ISOLINUX tree onto media and make it bootable
|
||||
.br
|
||||
Operate on storage facilities other than optical drives
|
||||
.br
|
||||
Perform multi-session runs as of cdrtools traditions
|
||||
@ -2219,6 +2298,8 @@ Examples of input timestrings
|
||||
Incremental backup of a few directory trees
|
||||
.br
|
||||
Restore directory trees from a particular ISO session to disk
|
||||
.br
|
||||
Try to retrieve as many blocks as possible from a damaged media
|
||||
.SS
|
||||
.B As superuser learn about available drives
|
||||
Consider to give rw permissions to those users or groups
|
||||
@ -2358,6 +2439,17 @@ first and only session to the output drive.
|
||||
.br
|
||||
-commit -eject all
|
||||
.SS
|
||||
.B Bring a prepared ISOLINUX tree onto media and make it bootable
|
||||
The user has already created a suitable file tree on disk and copied the
|
||||
ISOLINUX files into subdirectory ./boot/isolinux of that tree.
|
||||
Now xorriso can burn an El Torito bootable media:
|
||||
.br
|
||||
\fB$\fR xorriso -outdev /dev/sr0 -blank as_needed \\
|
||||
.br
|
||||
-map /home/me/ISOLINUX_prepared_tree / \\
|
||||
.br
|
||||
-boot_image isolinux dir=/boot/isolinux
|
||||
.SS
|
||||
.B Operate on storage facilities other than optical drives
|
||||
Full read-write operation is possible with regular files and block devices:
|
||||
.br
|
||||
@ -2494,19 +2586,16 @@ the two disk trees to the media is desired. Begin with blank media and start
|
||||
a new blank media when the run fails due to lack of remaining space on
|
||||
the old one.
|
||||
.br
|
||||
This makes most sense with backups on non-erasable media like CD-R,
|
||||
DVD-R, DVD+R if the full backup leaves substantial remaining capacity
|
||||
This makes sense if the full backup leaves substantial remaining capacity
|
||||
on media and if the expected changes are much smaller than the full backup.
|
||||
An update run will probably save no time but last longer than a full backup.
|
||||
Other good reasons may be given if read speed is much higher than write speed
|
||||
or if file size changes happen too often within the write time of a full backup.
|
||||
.br
|
||||
With \fBmount\fR option \fB"sbsector="\fR it is possible to access the session
|
||||
trees which represent the older backup versions. With CD media, Linux mount
|
||||
accepts session numbers directly by its option "session=".
|
||||
.br
|
||||
Multi-session media and most overwriteable media written by xorriso can tell
|
||||
the sbsector of a session by xorriso option -toc.
|
||||
the sbsectors of their sessions by xorriso option -toc.
|
||||
.br
|
||||
Sessions on multi-session media are separated by several MB of unused blocks.
|
||||
So with small sessions the payload capacity can become substantially lower
|
||||
@ -2578,7 +2667,7 @@ to read and execute lines from the following files:
|
||||
.br
|
||||
The files are read in the sequence given above, but none of them is required
|
||||
for xorriso to function properly.
|
||||
.TP
|
||||
.SS
|
||||
.B Runtime control files:
|
||||
.br
|
||||
The default setting of -check_media abort_file= is:
|
||||
|
@ -520,6 +520,7 @@ int Sfile_make_argv(char *progname, char *line, int *argc, char ***argv,
|
||||
bit1= just release argument list argv and return
|
||||
bit2= abort with return(0) if incomplete quotes are found
|
||||
bit3= eventually prepend missing '-' to first argument read from line
|
||||
bit4= like bit2 but only check quote completeness, do not allocate memory
|
||||
*/
|
||||
{
|
||||
int i,pass,maxl=0,l,argzaehl=0,bufl,line_start_argc;
|
||||
@ -529,6 +530,9 @@ int Sfile_make_argv(char *progname, char *line, int *argc, char ***argv,
|
||||
Sfile_destroy_argv(argc,argv,0);
|
||||
if(flag&2) return(1);
|
||||
|
||||
if(flag & 16)
|
||||
flag|= 4;
|
||||
|
||||
for(pass=0;pass<2;pass++) {
|
||||
cpt= line-1;
|
||||
if(!(flag&1)){
|
||||
@ -592,6 +596,8 @@ int Sfile_make_argv(char *progname, char *line, int *argc, char ***argv,
|
||||
if(*cpt==0) break;
|
||||
}
|
||||
if(pass==0){
|
||||
if(flag & 16)
|
||||
return(1);
|
||||
*argc= argzaehl;
|
||||
if(argzaehl>0) {
|
||||
*argv= (char **) Smem_malloC(argzaehl*sizeof(char *));
|
||||
@ -2011,7 +2017,7 @@ int Findjob_set_name_expr(struct FindjoB *o, char *name_expr, int flag)
|
||||
|
||||
int Findjob_set_file_type(struct FindjoB *o, char file_type, int flag)
|
||||
{
|
||||
static char known[]= {"bcdpf-lsmX"};
|
||||
static char known[]= {"bcdpf-lsmeX"};
|
||||
|
||||
if(file_type!=0)
|
||||
if(strchr(known, file_type)==NULL)
|
||||
@ -2070,7 +2076,8 @@ int Findjob_get_commit_filter(struct FindjoB *o, int *commit_filter, int flag)
|
||||
}
|
||||
|
||||
|
||||
/* @return 0=no match , 1=match , <0 = error
|
||||
/* @flag bit0=recognize type "e" = El-Torito
|
||||
@return 0=no match , 1=match , <0 = error
|
||||
*/
|
||||
int Findjob_test(struct FindjoB *o, char *name,
|
||||
struct stat *boss_stbuf, struct stat *stbuf,
|
||||
@ -2111,6 +2118,9 @@ int Findjob_test(struct FindjoB *o, char *name,
|
||||
} else if(((stbuf->st_mode)&S_IFMT)==S_IFSOCK) {
|
||||
if(o->file_type!='s')
|
||||
return(0);
|
||||
} else if((flag & 1) && ((stbuf->st_mode) & S_IFMT) == Xorriso_IFBOOT) {
|
||||
if(o->file_type!='e')
|
||||
return(0);
|
||||
} else {
|
||||
if(o->file_type!='X')
|
||||
return(0);
|
||||
@ -3386,6 +3396,10 @@ int Xorriso_new(struct XorrisO ** xorriso,char *progname, int flag)
|
||||
m->do_stream_recording= 0;
|
||||
m->keep_boot_image= 0;
|
||||
m->patch_isolinux_image= 0;
|
||||
m->boot_image_bin_path[0]= 0;
|
||||
m->boot_image_emul= 0;
|
||||
m->boot_image_cat_path[0]= 0;
|
||||
m->boot_image_load_size= 4 * 512; /* hearsay out of libisofs/demo/iso.c */
|
||||
m->allow_graft_points= 0;
|
||||
m->allow_restore= 0;
|
||||
m->do_concat_split= 1;
|
||||
@ -3546,10 +3560,9 @@ int Xorriso_dialog_input(struct XorrisO *xorriso, char line[], int linesize,
|
||||
bit2= do not write to history line which begin with "-history:" or "-history "
|
||||
*/
|
||||
{
|
||||
char *cpt= NULL;
|
||||
int ret;
|
||||
char *cpt= NULL, **argv= NULL, *linept, *why_append= "";
|
||||
int ret, argc= 0, base_length= 0, l, append_line;
|
||||
#ifdef Xorriso_with_readlinE
|
||||
int l;
|
||||
static char last_input[SfileadrL]= {""};
|
||||
#endif /* ! Xorriso_with_readlinE */
|
||||
double tdiff;
|
||||
@ -3560,18 +3573,20 @@ int Xorriso_dialog_input(struct XorrisO *xorriso, char line[], int linesize,
|
||||
tdiff= tv.tv_sec+(1.e-6*(double) tv.tv_usec);
|
||||
|
||||
fflush(stdout);
|
||||
linept= line;
|
||||
|
||||
get_single:;
|
||||
#ifdef Xorriso_with_readlinE
|
||||
|
||||
if(xorriso->use_stdin || xorriso->dev_fd_1>=0) {
|
||||
if(flag&2)
|
||||
{ret= 1; goto ex;}
|
||||
if(Sfile_fgets(line,linesize-1,stdin)==NULL) {
|
||||
if(Sfile_fgets(linept,linesize - base_length - 1,stdin) == NULL) {
|
||||
/* need a very dramatic end */
|
||||
kill(getpid(),SIGHUP);
|
||||
{ret= -1; goto ex;}
|
||||
}
|
||||
{ret= 1; goto ex;}
|
||||
goto process_single;
|
||||
}
|
||||
if(flag&2) {
|
||||
cpt= NULL;
|
||||
@ -3583,12 +3598,82 @@ int Xorriso_dialog_input(struct XorrisO *xorriso, char line[], int linesize,
|
||||
{ret= -1; goto ex;}
|
||||
}
|
||||
l= strlen(cpt);
|
||||
if(l>=linesize) {
|
||||
strncpy(line,cpt,linesize-1);
|
||||
if(l >= linesize - base_length - 1) {
|
||||
strncpy(linept, cpt, linesize - 1);
|
||||
line[sizeof(line)-1]= 0;
|
||||
sprintf(xorriso->info_text,"Input line too long !");
|
||||
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "SORRY", 0);
|
||||
goto new_empty;
|
||||
} else
|
||||
strcpy(line,cpt);
|
||||
strcpy(linept, cpt);
|
||||
}
|
||||
|
||||
#else /* Xorriso_with_readlinE */
|
||||
|
||||
if(flag&2)
|
||||
{ret= 1; goto ex;}
|
||||
if(Sfile_fgets(linept, linesize - base_length - 1, stdin) == NULL) {
|
||||
/* need a very dramatic end */
|
||||
kill(getpid(),SIGHUP);
|
||||
{ret= -1; goto ex;}
|
||||
}
|
||||
|
||||
#endif /* ! Xorriso_with_readlinE */
|
||||
|
||||
process_single:;
|
||||
if(xorriso->dialog == 2) {
|
||||
append_line= 0;
|
||||
if(linept != line && strcmp(linept, "@@@") == 0) {
|
||||
sprintf(xorriso->info_text, "Incomplete input line cleared by %s",
|
||||
linept);
|
||||
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "NOTE",0);
|
||||
new_empty:;
|
||||
line[0]= 0;
|
||||
linept= line;
|
||||
sprintf(xorriso->info_text, "-------------------------------------\n");
|
||||
Xorriso_info(xorriso,0);
|
||||
sprintf(xorriso->info_text, "Enter new text for empty input line :\n");
|
||||
Xorriso_info(xorriso,0);
|
||||
goto get_single;
|
||||
}
|
||||
ret= Sfile_make_argv("", line, &argc, &argv, 16);
|
||||
if(ret < 0)
|
||||
goto ex;
|
||||
|
||||
l= strlen(line);
|
||||
if(l > 0)
|
||||
if(line[l - 1] == '\\') {
|
||||
line[l - 1]= 0;
|
||||
append_line= 1;
|
||||
why_append= "Trailing backslash ";
|
||||
}
|
||||
if(ret == 0 && strlen(line) < linesize - 1 && !append_line) {
|
||||
/* append a newline character */
|
||||
if(l >= linesize - 1) {
|
||||
sprintf(xorriso->info_text,"Input line too long !");
|
||||
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "SORRY", 0);
|
||||
goto new_empty;
|
||||
}
|
||||
line[l]= '\n';
|
||||
line[l + 1]= 0;
|
||||
append_line= 1;
|
||||
why_append= "Quoted newline char";
|
||||
}
|
||||
if(append_line) {
|
||||
base_length= strlen(line);
|
||||
linept= line + base_length;
|
||||
sprintf(xorriso->info_text,
|
||||
"---------------------------------------------------------------\n");
|
||||
Xorriso_info(xorriso,0);
|
||||
sprintf(xorriso->info_text,
|
||||
"%s : Enter rest of line (or @@@ to clear it) :\n", why_append);
|
||||
Xorriso_info(xorriso,0);
|
||||
goto get_single;
|
||||
}
|
||||
}
|
||||
|
||||
#ifdef Xorriso_with_readlinE
|
||||
|
||||
if(line[0]!=0 && strcmp(last_input,line)!=0 && !(flag&1))
|
||||
if(!((flag&4) &&
|
||||
(strncmp(line,"-history:",9)==0 || strncmp(line,"-history ",9)==0))) {
|
||||
@ -3597,16 +3682,6 @@ int Xorriso_dialog_input(struct XorrisO *xorriso, char line[], int linesize,
|
||||
last_input[sizeof(last_input)-1]= 0;
|
||||
}
|
||||
|
||||
#else /* Xorriso_with_readlinE */
|
||||
|
||||
if(flag&2)
|
||||
{ret= 1; goto ex;}
|
||||
if(Sfile_fgets(line,linesize-1,stdin)==NULL) {
|
||||
/* need a very dramatic end */
|
||||
kill(getpid(),SIGHUP);
|
||||
{ret= -1; goto ex;}
|
||||
}
|
||||
|
||||
#endif /* ! Xorriso_with_readlinE */
|
||||
|
||||
ret= 1;
|
||||
@ -4865,8 +4940,8 @@ int Xorriso_status(struct XorrisO *xorriso, char *filter, FILE *fp, int flag)
|
||||
-options_from_file:${resume_state_file}_pos
|
||||
*/
|
||||
{
|
||||
int is_default, no_defaults, i, ret, adr_mode;
|
||||
char *line, sfe[5*SfileadrL], mode[80], *form, *treatment;
|
||||
int is_default, no_defaults, i, ret, adr_mode, bin_path_in_use= 0;
|
||||
char *line, sfe[5 * SfileadrL + 80], mode[80], *form, *treatment;
|
||||
static char channel_prefixes[4][4]= {".","R","I","M"};
|
||||
static char load_names[][20]= {"auto", "session", "track", "lba", "volid"};
|
||||
static int max_load_mode= 4;
|
||||
@ -4886,8 +4961,10 @@ int Xorriso_status(struct XorrisO *xorriso, char *filter, FILE *fp, int flag)
|
||||
Xorriso_status_result(xorriso,filter,fp,flag&2);
|
||||
|
||||
is_default= 0;
|
||||
if(xorriso->dialog)
|
||||
if(xorriso->dialog == 2)
|
||||
sprintf(line,"-dialog on\n");
|
||||
else if(xorriso->dialog == 1)
|
||||
sprintf(line,"-dialog single_line\n");
|
||||
else {
|
||||
sprintf(line,"-dialog off\n");
|
||||
is_default= 1;
|
||||
@ -4992,10 +5069,31 @@ int Xorriso_status(struct XorrisO *xorriso, char *filter, FILE *fp, int flag)
|
||||
if(!(is_default && no_defaults))
|
||||
Xorriso_status_result(xorriso,filter,fp,flag&2);
|
||||
|
||||
is_default= (xorriso->keep_boot_image==0 && xorriso->patch_isolinux_image==0);
|
||||
is_default= (xorriso->keep_boot_image == 0
|
||||
&& xorriso->patch_isolinux_image == 0
|
||||
&& xorriso->boot_image_bin_path[0] == 0);
|
||||
form= "any";
|
||||
treatment= "discard";
|
||||
if(xorriso->patch_isolinux_image) {
|
||||
if(xorriso->boot_image_bin_path[0]) {
|
||||
form= "isolinux";
|
||||
if(strcmp(xorriso->boot_image_bin_path, "/isolinux.bin") == 0 &&
|
||||
strcmp(xorriso->boot_image_cat_path, "/boot.cat") == 0)
|
||||
strcpy(sfe, "dir=/");
|
||||
else if(strcmp(xorriso->boot_image_bin_path, "/isolinux/isolinux.bin") == 0
|
||||
&& strcmp(xorriso->boot_image_cat_path, "/isolinux/boot.cat") == 0)
|
||||
strcpy(sfe, "dir=/isolinux");
|
||||
else if(strcmp(xorriso->boot_image_bin_path,
|
||||
"/boot/isolinux/isolinux.bin") == 0
|
||||
&& strcmp(xorriso->boot_image_cat_path,
|
||||
"/boot/isolinux/boot.cat") == 0)
|
||||
strcpy(sfe, "dir=/boot/isolinux");
|
||||
else {
|
||||
strcpy(sfe, "bin_path=");
|
||||
Text_shellsafe(xorriso->boot_image_bin_path, sfe + strlen(sfe), 0);
|
||||
bin_path_in_use= 1;
|
||||
}
|
||||
treatment= sfe;
|
||||
} else if(xorriso->patch_isolinux_image) {
|
||||
form= "isolinux";
|
||||
treatment= "patch";
|
||||
} else if(xorriso->keep_boot_image) {
|
||||
@ -5004,6 +5102,18 @@ int Xorriso_status(struct XorrisO *xorriso, char *filter, FILE *fp, int flag)
|
||||
sprintf(line,"-boot_image %s %s\n", form, treatment);
|
||||
if(!(is_default && no_defaults))
|
||||
Xorriso_status_result(xorriso,filter,fp,flag&2);
|
||||
if(xorriso->boot_image_bin_path[0] && bin_path_in_use) {
|
||||
is_default= 0;
|
||||
sprintf(line,"-boot_image isolinux cat_path=%s\n",
|
||||
Text_shellsafe(xorriso->boot_image_cat_path, sfe, 0));
|
||||
if(!(is_default && no_defaults))
|
||||
Xorriso_status_result(xorriso,filter,fp,flag&2);
|
||||
is_default= xorriso->boot_image_load_size == 4 * 512;
|
||||
sprintf(line,"-boot_image isolinux load_size=%.f\n",
|
||||
(double) xorriso->boot_image_load_size);
|
||||
if(!(is_default && no_defaults))
|
||||
Xorriso_status_result(xorriso,filter,fp,flag&2);
|
||||
}
|
||||
|
||||
sprintf(line,"-cd %s\n",
|
||||
(xorriso->wdi[0] ? Text_shellsafe(xorriso->wdi,sfe,0) : "'/'"));
|
||||
@ -5240,11 +5350,12 @@ int Xorriso_status(struct XorrisO *xorriso, char *filter, FILE *fp, int flag)
|
||||
|
||||
#endif /* Xorriso_with_readlinE */
|
||||
|
||||
is_default= !(xorriso->toc_emulation_flag&1);
|
||||
sprintf(line,"-rom_toc_scan %s\n",
|
||||
xorriso->toc_emulation_flag&1 ? "on" : "off");
|
||||
is_default= (xorriso->toc_emulation_flag == 0);
|
||||
sprintf(line,"-rom_toc_scan %s%s\n",
|
||||
xorriso->toc_emulation_flag & 1 ? "on" : "off",
|
||||
xorriso->toc_emulation_flag & 2 ? ":emul_off" : "");
|
||||
if(!(is_default && no_defaults))
|
||||
Xorriso_status_result(xorriso,filter,fp,flag&2);
|
||||
Xorriso_status_result(xorriso, filter, fp, flag & 2);
|
||||
|
||||
adr_mode= xorriso->image_start_mode & 0xffff;
|
||||
if(adr_mode>=0 && adr_mode<=max_load_mode) {
|
||||
@ -7213,6 +7324,8 @@ int Xorriso__mode_to_perms(mode_t st_mode, char perms[10], int flag)
|
||||
}
|
||||
|
||||
|
||||
/* @param flag bit0= recognize Xorriso_IFBOOT as file type
|
||||
*/
|
||||
int Xorriso_format_ls_l(struct XorrisO *xorriso, struct stat *stbuf, int flag)
|
||||
{
|
||||
int show_major_minor= 0;
|
||||
@ -7240,6 +7353,8 @@ int Xorriso_format_ls_l(struct XorrisO *xorriso, struct stat *stbuf, int flag)
|
||||
strcat(rpt, "p");
|
||||
else if(S_ISSOCK(st_mode))
|
||||
strcat(rpt, "s");
|
||||
else if((flag & 1) && (st_mode & S_IFMT) == Xorriso_IFBOOT)
|
||||
strcat(rpt, "e");
|
||||
else
|
||||
strcat(rpt, "?");
|
||||
|
||||
@ -8177,6 +8292,7 @@ static char blank_help[][80]= {
|
||||
"\tdisk\t\tblank the entire disk",
|
||||
"\tfast\t\tminimally blank the entire disk",
|
||||
"\tminimal\t\tminimally blank the entire disk",
|
||||
"\tas_needed\tblank or format media to make it ready for (re-)use",
|
||||
"\tdeformat\t\tblank a formatted DVD-RW",
|
||||
"\tdeformat_quickest\tminimally blank a formatted DVD-RW to DAO only",
|
||||
"\tformat_overwrite\tformat a DVD-RW to \"Restricted Overwrite\"",
|
||||
@ -8247,6 +8363,8 @@ no_volunteer:;
|
||||
strcpy(blank_mode, cpt);
|
||||
} else if(strcmp(cpt,"format_overwrite")==0) {
|
||||
strcpy(blank_mode, "format_overwrite");
|
||||
} else if(strcmp(cpt,"as_needed")==0) {
|
||||
strcpy(blank_mode, "as_needed");
|
||||
} else {
|
||||
sprintf(xorriso->info_text,
|
||||
"-as %s: blank=%s not supported. See blank=help .",
|
||||
@ -8498,15 +8616,60 @@ ex:;
|
||||
}
|
||||
|
||||
|
||||
/* @param flag bit0= do not report eventual ignore decision
|
||||
*/
|
||||
int Xorriso_genisofs_ignore(struct XorrisO *xorriso, char *whom,
|
||||
char **argv, int *i, int flag)
|
||||
{
|
||||
/* mkisofs 2.01 options which are not scheduled for implementation, yet */
|
||||
static char ignored_arg0_options[][41]= {
|
||||
"-allow-leading-dots", "-ldots", "-allow-lowercase", "-allow-multidot",
|
||||
"-cache-inodes", "-no-cache-inodes", "-check-oldnames", "-d", "-D",
|
||||
"-joliet-long", "-l", "-L", "-max-iso9660-filenames", "-N", "-nobak",
|
||||
"-no-bak", "-force-rr", "-r", "-relaxed-filenames", "-T", "-U",
|
||||
"-no-iso-translate",
|
||||
""
|
||||
};
|
||||
static char ignored_arg1_options[][41]= {
|
||||
"-A", "-biblio", "-check-session", "-p", "-root",
|
||||
"-old-root", "-sysid", "-table-name",
|
||||
""
|
||||
};
|
||||
int k, idx_offset= 0;
|
||||
char sfe[5*SfileadrL];
|
||||
|
||||
for(k=0;ignored_arg0_options[k][0]!=0;k++)
|
||||
if(strcmp(argv[*i],ignored_arg0_options[k])==0)
|
||||
goto no_volunteer;
|
||||
for(k=0;ignored_arg1_options[k][0]!=0;k++)
|
||||
if(strcmp(argv[*i],ignored_arg1_options[k])==0) {
|
||||
(*i)++;
|
||||
idx_offset= -1;
|
||||
goto no_volunteer;
|
||||
}
|
||||
return(0);
|
||||
no_volunteer:;
|
||||
sprintf(xorriso->info_text, "-as %s: Ignored option %s",
|
||||
whom, Text_shellsafe(argv[(*i)+idx_offset], sfe, 0));
|
||||
if(!(flag & 1))
|
||||
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "NOTE", 0);
|
||||
return(1);
|
||||
}
|
||||
|
||||
|
||||
/* micro emulation of mkisofs */
|
||||
int Xorriso_genisofs(struct XorrisO *xorriso, char *whom,
|
||||
int argc, char **argv, int flag)
|
||||
{
|
||||
int ret, i, k, was_path= 0, was_other_option= 0, mem_graft_points, mem;
|
||||
int do_print_size= 0, idx_offset= 0, fd, idx, iso_level= 0;
|
||||
int ret, i, was_path= 0, was_other_option= 0, mem_graft_points, mem;
|
||||
int do_print_size= 0, fd, idx, iso_level= 0, no_emul_boot= 0;
|
||||
int option_b= 0;
|
||||
char sfe[5*SfileadrL], adr[SfileadrL+8], ra_text[80], pathspec[2*SfileadrL];
|
||||
char *ept, *add_pt, eff_path[SfileadrL], indev[SfileadrL+8], msc[80], *cpt;
|
||||
|
||||
#ifdef Xorriso_old_genisofs_ignorE
|
||||
int idx_offset= 0, k;
|
||||
|
||||
/* mkisofs 2.01 options which are not scheduled for implementation, yet */
|
||||
static char ignored_arg0_options[][41]= {
|
||||
"-allow-leading-dots", "-ldots", "-allow-lowercase", "-allow-multidot",
|
||||
@ -8521,6 +8684,8 @@ int Xorriso_genisofs(struct XorrisO *xorriso, char *whom,
|
||||
"-old-root", "-sysid", "-table-name",
|
||||
""
|
||||
};
|
||||
#endif /* Xorriso_old_genisofs_ignorE */
|
||||
|
||||
static char helptext[][80]= {
|
||||
"Usage: xorriso -as mkisofs [options] file...",
|
||||
"Note: This is not mkisofs. See xorriso -help, xorriso -version, man xorriso",
|
||||
@ -8553,6 +8718,13 @@ int Xorriso_genisofs(struct XorrisO *xorriso, char *whom,
|
||||
|
||||
adr[0]= indev[0]= msc[0]= 0;
|
||||
for(i= 0; i<argc; i++) {
|
||||
#ifndef Xorriso_old_genisofs_ignorE
|
||||
|
||||
ret= Xorriso_genisofs_ignore(xorriso, whom, argv, &i, 1);
|
||||
if(ret == 1)
|
||||
continue;
|
||||
|
||||
#endif /* Xorriso_old_genisofs_ignorE */
|
||||
if(strcmp(argv[i], "-version")==0) {
|
||||
sprintf(xorriso->result_line,
|
||||
"mkisofs 2.01-Emulation Copyright (C) 2008 see libburnia-project.org xorriso\n"
|
||||
@ -8621,6 +8793,41 @@ int Xorriso_genisofs(struct XorrisO *xorriso, char *whom,
|
||||
((off_t) 4) * ((off_t) 1024*1024*1024) - ((off_t) 1);
|
||||
else
|
||||
xorriso->file_size_limit= 0;
|
||||
} else if(strcmp(argv[i], "-no-emul-boot")==0) {
|
||||
no_emul_boot= 1;
|
||||
} else if(strcmp(argv[i], "-boot-info-table")==0) {
|
||||
;
|
||||
} else if(strcmp(argv[i], "-b") == 0) {
|
||||
if(i+1>=argc)
|
||||
goto not_enough_args;
|
||||
i++;
|
||||
xorriso->boot_image_bin_path[0]= 0;
|
||||
if(argv[i][0] != '/')
|
||||
strcat(xorriso->boot_image_bin_path, "/");
|
||||
ret= Sfile_str(xorriso->boot_image_bin_path
|
||||
+ strlen(xorriso->boot_image_bin_path), argv[i], 0);
|
||||
if(ret <= 0)
|
||||
goto ex;
|
||||
option_b= 1;
|
||||
xorriso->keep_boot_image= 0;
|
||||
xorriso->patch_isolinux_image= 0;
|
||||
} else if(strcmp(argv[i], "-c") == 0) {
|
||||
if(i+1>=argc)
|
||||
goto not_enough_args;
|
||||
i++;
|
||||
xorriso->boot_image_cat_path[0]= 0;
|
||||
if(argv[i][0] != '/')
|
||||
strcat(xorriso->boot_image_cat_path, "/");
|
||||
ret= Sfile_str(xorriso->boot_image_cat_path
|
||||
+ strlen(xorriso->boot_image_cat_path), argv[i], 0);
|
||||
if(ret <= 0)
|
||||
goto ex;
|
||||
} else if(strcmp(argv[i], "-boot-load-size") == 0) {
|
||||
if(i+1>=argc)
|
||||
goto not_enough_args;
|
||||
i++;
|
||||
sscanf(argv[i], "%d", &ret);
|
||||
xorriso->boot_image_load_size= ret * 512;
|
||||
} else
|
||||
was_other_option= 1;
|
||||
}
|
||||
@ -8636,6 +8843,7 @@ int Xorriso_genisofs(struct XorrisO *xorriso, char *whom,
|
||||
whom, (ret==3 ? "symbolic link" : "directory"),
|
||||
Text_shellsafe(adr+6, sfe, 0));
|
||||
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "FAILURE", 0);
|
||||
ret= 0; goto ex;
|
||||
}
|
||||
}
|
||||
/* Regard overwriteable as blank, truncate regular files on write start */
|
||||
@ -8643,6 +8851,14 @@ int Xorriso_genisofs(struct XorrisO *xorriso, char *whom,
|
||||
if(ret<=0)
|
||||
goto ex;
|
||||
}
|
||||
if(option_b && !no_emul_boot) {
|
||||
xorriso->boot_image_bin_path[0]= 0;
|
||||
sprintf(xorriso->info_text,
|
||||
"-as %s: Option -b is supported only if option -no-emul-boot is given",
|
||||
whom);
|
||||
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "FAILURE", 0);
|
||||
ret= 0; goto ex;
|
||||
}
|
||||
if(was_other_option && xorriso->out_drive_handle==NULL) {
|
||||
ret= Xorriso_option_dev(xorriso, "-", 2|4); /* set outdev to stdout */
|
||||
if(ret<=0)
|
||||
@ -8693,6 +8909,8 @@ illegal_c:;
|
||||
sprintf(xorriso->info_text, "-as %s: %s",
|
||||
whom, Text_shellsafe(argv[i], sfe, 0));
|
||||
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "DEBUG", 0);
|
||||
|
||||
#ifdef Xorriso_old_genisofs_ignorE
|
||||
idx_offset= 0;
|
||||
for(k=0;ignored_arg0_options[k][0]!=0;k++)
|
||||
if(strcmp(argv[i],ignored_arg0_options[k])==0)
|
||||
@ -8711,6 +8929,14 @@ no_volunteer:;
|
||||
continue;
|
||||
}
|
||||
|
||||
#else /* Xorriso_old_genisofs_ignorE */
|
||||
|
||||
ret= Xorriso_genisofs_ignore(xorriso, whom, argv, &i, 0);
|
||||
if(ret == 1)
|
||||
continue;
|
||||
|
||||
#endif /* ! Xorriso_old_genisofs_ignorE */
|
||||
|
||||
if(strcmp(argv[i], "-version")==0) {
|
||||
/* was already handled in first argument scan */;
|
||||
|
||||
@ -8793,14 +9019,26 @@ not_enough_args:;
|
||||
} else if(strcmp(argv[i], "-v")==0 || strcmp(argv[i], "-quiet")==0) {
|
||||
/* was already handled in first argument scan */;
|
||||
|
||||
} else if(strcmp(argv[i], "-iso-level")==0) {
|
||||
i++;
|
||||
/* was already handled in first argument scan */;
|
||||
} else if(strcmp(argv[i], "-no-emul-boot")==0) {
|
||||
/* was already handled in first argument scan */;
|
||||
} else if(strcmp(argv[i], "-b") == 0) {
|
||||
i++;
|
||||
/* was already handled in first argument scan */;
|
||||
} else if(strcmp(argv[i], "-c") == 0) {
|
||||
i++;
|
||||
/* was already handled in first argument scan */;
|
||||
} else if(strcmp(argv[i], "-boot-load-size") == 0) {
|
||||
i++;
|
||||
/* was already handled in first argument scan */;
|
||||
} else if(strcmp(argv[i], "-boot-info-table")==0) {
|
||||
;
|
||||
} else if(argv[i][0]=='-' && argv[i][1]!=0) {
|
||||
sprintf(xorriso->info_text, "-as %s: Unknown option %s",
|
||||
whom, Text_shellsafe(argv[i], sfe, 0));
|
||||
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "FAILURE", 0);
|
||||
} else if(strcmp(argv[i], "-iso-level")==0) {
|
||||
i++;
|
||||
/* was already handled in first argument scan */;
|
||||
|
||||
} else {
|
||||
int zero= 0;
|
||||
|
||||
@ -9510,7 +9748,7 @@ int Xorriso_option_add(struct XorrisO *xorriso, int argc, char **argv,
|
||||
if(ret<=0 || xorriso->request_to_abort)
|
||||
goto problem_handler;
|
||||
sprintf(xorriso->info_text, "Added to ISO image: %s '%s'='%s'\n",
|
||||
(ret>1 ? "directory" : "file"), target, source);
|
||||
(ret>1 ? "directory" : "file"), (target[0] ? target : "/"), source);
|
||||
if(!(flag&1))
|
||||
Xorriso_info(xorriso, 0);
|
||||
|
||||
@ -9768,8 +10006,9 @@ unusable_index:;
|
||||
int Xorriso_option_boot_image(struct XorrisO *xorriso, char *form,
|
||||
char *treatment, int flag)
|
||||
{
|
||||
int was_ok= 1;
|
||||
int was_ok= 1, ret;
|
||||
char *formpt, *treatpt;
|
||||
double num;
|
||||
|
||||
formpt= form;
|
||||
if(formpt[0]=='-')
|
||||
@ -9781,25 +10020,85 @@ int Xorriso_option_boot_image(struct XorrisO *xorriso, char *form,
|
||||
if(strcmp(treatpt, "keep")==0) {
|
||||
xorriso->keep_boot_image= 1;
|
||||
xorriso->patch_isolinux_image= 0;
|
||||
xorriso->boot_image_bin_path[0]= 0;
|
||||
} else if(strcmp(treatpt, "discard")==0) {
|
||||
xorriso->keep_boot_image= 0;
|
||||
xorriso->patch_isolinux_image= 0;
|
||||
xorriso->boot_image_bin_path[0]= 0;
|
||||
} else
|
||||
was_ok= 0;
|
||||
} else if(strcmp(formpt, "isolinux")==0) {
|
||||
if(strcmp(treatpt, "patch")==0) {
|
||||
if(strcmp(treatpt, "patch")==0 ||
|
||||
strcmp(treatpt, "keep")==0) { /* no real "keep" with ISOLINUX */
|
||||
xorriso->keep_boot_image= 1;
|
||||
xorriso->patch_isolinux_image= 1;
|
||||
} else if(strcmp(treatpt, "keep")==0) {
|
||||
xorriso->keep_boot_image= 1;
|
||||
xorriso->patch_isolinux_image= 0;
|
||||
xorriso->boot_image_bin_path[0]= 0;
|
||||
} else if(strcmp(treatpt, "discard")==0) {
|
||||
xorriso->keep_boot_image= 0;
|
||||
xorriso->patch_isolinux_image= 0;
|
||||
xorriso->boot_image_bin_path[0]= 0;
|
||||
} else if(strncmp(treatpt, "dir=", 4) == 0) {
|
||||
/* The three locations mentioned in http://syslinux.zytor.com/iso.php */
|
||||
if(strcmp(treatpt + 4, "/") == 0)
|
||||
strcpy(xorriso->boot_image_bin_path, "/");
|
||||
else if(strcmp(treatpt + 4, "isolinux") == 0
|
||||
|| strcmp(treatpt + 4, "/isolinux") == 0)
|
||||
strcpy(xorriso->boot_image_bin_path, "/isolinux/");
|
||||
else if(strcmp(treatpt + 4, "boot/isolinux") == 0
|
||||
|| strcmp(treatpt + 4, "/boot/isolinux") == 0
|
||||
|| strcmp(treatpt + 4, "boot") == 0
|
||||
|| strcmp(treatpt + 4, "/boot") == 0)
|
||||
strcpy(xorriso->boot_image_bin_path, "/boot/isolinux/");
|
||||
else {
|
||||
sprintf(xorriso->info_text,
|
||||
"Unrecognized keyword with -boot_image %s %s",
|
||||
form, treatment);
|
||||
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "FAILURE", 0);
|
||||
sprintf(xorriso->info_text,
|
||||
"Allowed with dir= are / , /isolinux . /boot/isolinux");
|
||||
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "HINT", 0);
|
||||
return(0);
|
||||
}
|
||||
strcpy(xorriso->boot_image_cat_path, xorriso->boot_image_bin_path);
|
||||
strcat(xorriso->boot_image_bin_path, "isolinux.bin");
|
||||
strcat(xorriso->boot_image_cat_path, "boot.cat");
|
||||
xorriso->boot_image_load_size= 4 * 512;
|
||||
xorriso->keep_boot_image= 0;
|
||||
xorriso->patch_isolinux_image= 0;
|
||||
} else if(strncmp(treatpt, "bin_path=", 9) == 0) {
|
||||
ret= Xorriso_normalize_img_path(xorriso, xorriso->wdi, treatpt + 9,
|
||||
xorriso->boot_image_bin_path, 2);
|
||||
if(ret <= 0)
|
||||
return(ret);
|
||||
xorriso->keep_boot_image= 0;
|
||||
xorriso->patch_isolinux_image= 0;
|
||||
if(xorriso->boot_image_bin_path[0])
|
||||
xorriso->boot_image_load_size= 4 * 512;
|
||||
} else if(strncmp(treatpt, "cat_path=", 9) == 0) {
|
||||
ret= Xorriso_normalize_img_path(xorriso, xorriso->wdi, treatpt + 9,
|
||||
xorriso->boot_image_cat_path, 2);
|
||||
if(ret <= 0)
|
||||
return(ret);
|
||||
} else if(strncmp(treatpt, "load_size=", 10) == 0) {
|
||||
num= Scanf_io_size(treatpt + 10, 0);
|
||||
if(num < 512) {
|
||||
sprintf(xorriso->info_text,
|
||||
"-boot_image isolinux : load_size too small (%s < 512)",
|
||||
treatpt + 10);
|
||||
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "FAILURE", 0);
|
||||
return(0);
|
||||
}
|
||||
xorriso->boot_image_load_size= num;
|
||||
} else
|
||||
was_ok= 0;
|
||||
} else
|
||||
was_ok= 0;
|
||||
|
||||
/* >>> BOOT : check whether directories and/or files exist:
|
||||
bin_path , dirname(cat_path),
|
||||
isolinux.cfg in / , /isolinux , or /boot/isolinux
|
||||
*/
|
||||
|
||||
if(!was_ok) {
|
||||
sprintf(xorriso->info_text, "Unrecognized options with -boot_image: %s %s",
|
||||
form, treatment);
|
||||
@ -10437,7 +10736,8 @@ int Xorriso_option_cpri(struct XorrisO *xorriso, int argc, char **argv,
|
||||
if(ret<=0 || xorriso->request_to_abort)
|
||||
goto problem_handler;
|
||||
sprintf(xorriso->info_text, "Added to ISO image: %s '%s'='%s'\n",
|
||||
(ret>1 ? "directory" : "file"), eff_dest, eff_origin);
|
||||
(ret>1 ? "directory" : "file"), (eff_dest[0] ? eff_dest : "/"),
|
||||
eff_origin);
|
||||
if(!(flag&1))
|
||||
Xorriso_info(xorriso, 0);
|
||||
continue; /* regular bottom of loop */
|
||||
@ -10710,10 +11010,20 @@ int Xorriso_option_devices(struct XorrisO *xorriso, int flag)
|
||||
}
|
||||
|
||||
|
||||
/* Option -dialog "on"|"off" */
|
||||
/* Option -dialog "on"|"single_line"|"off" */
|
||||
int Xorriso_option_dialog(struct XorrisO *xorriso, char *mode, int flag)
|
||||
{
|
||||
xorriso->dialog= !!strcmp(mode, "off");
|
||||
if(strcmp(mode, "on") == 0 || strcmp(mode, "multi_line") == 0)
|
||||
xorriso->dialog= 2;
|
||||
else if(strcmp(mode, "single_line") == 0)
|
||||
xorriso->dialog= 2;
|
||||
else if(strcmp(mode, "off") == 0)
|
||||
xorriso->dialog= 0;
|
||||
else {
|
||||
sprintf(xorriso->info_text, "-dialog: unknown mode '%s'", mode);
|
||||
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "SORRY", 0);
|
||||
return(0);
|
||||
}
|
||||
return(1);
|
||||
}
|
||||
|
||||
@ -11419,8 +11729,9 @@ int Xorriso_option_help(struct XorrisO *xorriso, int flag)
|
||||
" -load \"session\"|\"track\"|\"lba\"|\"sbsector\"|\"volid\"|\"auto\" id",
|
||||
" Load a particular (outdated) ISO image from a -dev or",
|
||||
" -indev which hosts more than one session.",
|
||||
" -rom_toc_scan \"on\"|\"off\"",
|
||||
" Enable scanning for ISO sessions on read-only drives/media.",
|
||||
" -rom_toc_scan \"on\"|\"off\"[:\"emul_on\"|\"emul_off\"]",
|
||||
" Enable scanning for ISO sessions on read-only drives/media",
|
||||
" resp. on overwriteable media with emulated TOC.",
|
||||
" -ban_stdio_write",
|
||||
" Allow for writing only the usage of optical drives.",
|
||||
" -blank \"fast\"|\"all\"|\"deformat\"|\"deformat_quickest\"",
|
||||
@ -11433,8 +11744,13 @@ int Xorriso_option_help(struct XorrisO *xorriso, int flag)
|
||||
" Specifies the publisher name. (128 chars)",
|
||||
" -joliet \"on\"|\"off\"",
|
||||
" Generate Joliet info additional to Rock Ridge info.",
|
||||
" -bootimage \"any\"|\"isolinux\" \"discard\"|\"keep\"|\"patch\"",
|
||||
" Whether to discard or keep an exiting El-Torito boot image.",
|
||||
" -boot_image \"any\"|\"isolinux\" \"discard\"|\"keep\"|\"patch\"|\"dir=\"",
|
||||
" \"bin_path=\"|\"cat_path=\"|\"load_size=\"",
|
||||
" Whether to discard or keep an exiting El Torito boot image.",
|
||||
" ISOLINUX can be made bootable by dir=/ or dir=/isolinux",
|
||||
" or dir=/boot/isolinux or by bin_path=... and cat_path=...",
|
||||
" The ISOLINUX files need to be added to the ISO image by",
|
||||
" help of the usual commands like -map or -add.",
|
||||
"",
|
||||
" -uid uid User id to be used for the whole multi-session ISO image.",
|
||||
" -gid gid Group id for the same purpose.",
|
||||
@ -11690,7 +12006,8 @@ int Xorriso_option_help(struct XorrisO *xorriso, int flag)
|
||||
"",
|
||||
"Compatibility emulation (argument list may be ended by list delimiter --):",
|
||||
" -as mkisofs [-help|-version|-o|-R|-J|-V|-P|-f|-m|-exclude-list|-no-pad|",
|
||||
" -M|-C|-graft-points|-path-list|pathspecs]",
|
||||
" -M|-C|-graft-points|-path-list|pathspecs|",
|
||||
" -no-emul-boot|-b|-c|-boot-info-table|-boot-load-size]",
|
||||
" Perform some mkisofs gestures, understand pathspecs as mkisofs",
|
||||
" does. Commit happens outside emulation at usual occasions.",
|
||||
" -as cdrecord [-help|-v|dev=|speed=|blank=|fs=|-eject|-atip|padsize=|path|-]",
|
||||
@ -11711,10 +12028,10 @@ int Xorriso_option_help(struct XorrisO *xorriso, int flag)
|
||||
" -error_behavior \"image_loading\"|\"file_extraction\" behavior",
|
||||
" Behavior \"best_effort\" is most endurant but may produce",
|
||||
" results which are correct only on the first glimpse.",
|
||||
" -dialog After all arguments are processed, enter dialog mode.",
|
||||
" In this mode you may enter searchtexts or any of the options",
|
||||
" described here. One per line.",
|
||||
" -dialog_reset Revoke -dialog (works only if given as argument)",
|
||||
" -dialog \"on\"|\"off\"|\"single_line\"",
|
||||
" After all arguments are processed, enter dialog mode.",
|
||||
" \"single_line\" does not support newline characters within",
|
||||
" open quotation marks and no line continuation by trailing \\.",
|
||||
" -page len width Prompt user after len output lines (0=no prompt).",
|
||||
" width (default 80) can adjust line number computation",
|
||||
" to the output terminal's line width.",
|
||||
@ -12211,7 +12528,8 @@ int Xorriso_option_map(struct XorrisO *xorriso, char *disk_path,
|
||||
|
||||
if(!(flag&1)) {
|
||||
sprintf(xorriso->info_text, "Added to ISO image: %s '%s'='%s'\n",
|
||||
(ret>1 ? "directory" : "file"), eff_dest, eff_origin);
|
||||
(ret>1 ? "directory" : "file"), (eff_dest[0] ? eff_dest : "/"),
|
||||
eff_origin);
|
||||
Xorriso_info(xorriso,0);
|
||||
}
|
||||
return(1);
|
||||
@ -13263,14 +13581,33 @@ int Xorriso_option_rollback(struct XorrisO *xorriso, int flag)
|
||||
/* Option -rom_toc_scan */
|
||||
int Xorriso_option_rom_toc_scan(struct XorrisO *xorriso, char *mode, int flag)
|
||||
{
|
||||
if(strcmp(mode, "off")==0)
|
||||
xorriso->toc_emulation_flag= 0;
|
||||
else if(strcmp(mode, "on")==0)
|
||||
xorriso->toc_emulation_flag= 1;
|
||||
else {
|
||||
sprintf(xorriso->info_text, "-rom_toc_scan: unknown mode '%s'", mode);
|
||||
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "FAILURE", 0);
|
||||
return(0);
|
||||
int l;
|
||||
char *cpt, *npt;
|
||||
|
||||
xorriso->toc_emulation_flag= 0;
|
||||
npt= cpt= mode;
|
||||
for(cpt= mode; npt != NULL; cpt= npt + 1) {
|
||||
npt= strchr(cpt,':');
|
||||
if(npt==NULL)
|
||||
l= strlen(cpt);
|
||||
else
|
||||
l= npt-cpt;
|
||||
if(l==0)
|
||||
goto unknown_mode;
|
||||
if(strncmp(cpt, "off", l) == 0)
|
||||
xorriso->toc_emulation_flag&= ~1;
|
||||
else if(strncmp(cpt, "on", l) == 0)
|
||||
xorriso->toc_emulation_flag|= 1;
|
||||
else if(strncmp(cpt, "emul_off", l) == 0)
|
||||
xorriso->toc_emulation_flag|= 2;
|
||||
else if(strncmp(cpt, "emul_on", l) == 0)
|
||||
xorriso->toc_emulation_flag&= ~2;
|
||||
else {
|
||||
unknown_mode:;
|
||||
sprintf(xorriso->info_text, "-rom_toc_scan: unknown mode in '%s'", mode);
|
||||
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "FAILURE", 0);
|
||||
return(0);
|
||||
}
|
||||
}
|
||||
return(1);
|
||||
}
|
||||
@ -14464,8 +14801,17 @@ int Xorriso_execute_option(struct XorrisO *xorriso, char *line, int flag)
|
||||
|
||||
/* parse line into args */
|
||||
ret= Sfile_make_argv(xorriso->progname, line, &argc, &argv, 4);
|
||||
if(ret<=0)
|
||||
if(ret < 0) {
|
||||
Xorriso_msgs_submit(xorriso, 0,
|
||||
"Severe lack of resources during command line parsing", 0, "FATAL", 0);
|
||||
goto ex;
|
||||
}
|
||||
if(ret == 0) {
|
||||
sprintf(xorriso->info_text, "Incomplete quotation in command line: %s",
|
||||
line);
|
||||
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "FAILURE", 0);
|
||||
goto ex;
|
||||
}
|
||||
if(argc<2)
|
||||
{ret= 1; goto ex;}
|
||||
if(argv[1][0]=='#')
|
||||
|
@ -19,7 +19,7 @@
|
||||
|
||||
<P>
|
||||
<H2>Purpose:</H2>
|
||||
xorriso maps file objects from POSIX compliant filesystems
|
||||
xorriso copies file objects from POSIX compliant filesystems
|
||||
into Rock Ridge enhanced ISO 9660 filesystems and allows
|
||||
session-wise manipulation of such filesystems. It can load the management
|
||||
information of existing ISO images and it writes the session results to
|
||||
@ -60,15 +60,15 @@ and to MMC-5 for DVD or BD).
|
||||
GPL software included:<BR>
|
||||
</H2>
|
||||
<DL>
|
||||
<DT>libburn-0.5.3</DT>
|
||||
<DT>libburn-0.5.5</DT>
|
||||
<DD>reads and writes data from and to CD, DVD, BD-RE.</DD>
|
||||
<DD>(founded by Derek Foreman and Ben Jansens,
|
||||
furthered since August 2006 by
|
||||
developed and maintained since August 2006 by
|
||||
Thomas Schmitt from team of libburnia-project.org)</DD>
|
||||
<DT>libisofs-0.6.7</DT>
|
||||
<DT>libisofs-0.6.10</DT>
|
||||
<DD>operates on ISO 9660 filesystem images.</DD>
|
||||
<DD>(By Vreixo Formoso and Mario Danic from team of libburnia-project.org)</DD>
|
||||
<DT>libisoburn-0.2.4</DT>
|
||||
<DT>libisoburn-0.2.8</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>
|
||||
@ -108,6 +108,9 @@ Writes result as completely new image or as add-on session
|
||||
to optical media or filesystem objects.
|
||||
</LI>
|
||||
<LI>
|
||||
Can activate ISOLINUX boot images by El Torito boot record.
|
||||
</LI>
|
||||
<LI>
|
||||
Can perform multi-session tasks as emulation of mkisofs and cdrecord.
|
||||
</LI>
|
||||
<LI>
|
||||
@ -129,9 +132,6 @@ Reads its instructions from command line arguments, dialog, and batch files.
|
||||
<LI>
|
||||
Provides navigation commands for interactive ISO image manipulation.
|
||||
</LI>
|
||||
<LI>
|
||||
Adjustable thresholds for abort, exit value, and problem reporting.
|
||||
</LI>
|
||||
|
||||
</UL>
|
||||
</P>
|
||||
@ -174,7 +174,7 @@ eventually prepare yet unused BD-RE:</DT>
|
||||
<DD>$<KBD> xorriso -dev /dev/sr0 -add /home/me/sounds /home/me/pictures
|
||||
</KBD></DD>
|
||||
|
||||
<DT>Check the result:</DT>
|
||||
<DT>Have a look at the result:</DT>
|
||||
<DD>$<KBD> xorriso -indev /dev/sr0 -du / -- -toc 2>&1 | less</KBD></DD>
|
||||
|
||||
<DT>
|
||||
@ -278,6 +278,20 @@ with ".o" or ".swp" which are excluded by options -not_leaf.
|
||||
<DT>
|
||||
<HR>
|
||||
</DT>
|
||||
|
||||
<DT>
|
||||
After the user has already created a suitable file tree on disk
|
||||
and copied the ISOLINUX files into subdirectory ./boot/isolinux of
|
||||
that tree, xorriso can burn an El Torito bootable media:
|
||||
</DT>
|
||||
<DD>$<KBD> xorriso -outdev /dev/sr0 -blank as_needed \</KBD></DD>
|
||||
<DD><KBD> -map /home/me/ISOLINUX_prepared_tree / \</KBD></DD>
|
||||
<DD><KBD> -boot_image isolinux dir=/boot/isolinux</KBD></DD>
|
||||
|
||||
<DT>
|
||||
<HR>
|
||||
</DT>
|
||||
|
||||
<DT>ISO images may not only be stored on optical media but also in
|
||||
regular disk files or block devices for full multi-session operation.
|
||||
The prefix "stdio:" indicates that normal file operations are
|
||||
@ -315,14 +329,17 @@ One may switch from mkisofs emulation to xorriso's own command mode:
|
||||
<HR>
|
||||
</DT>
|
||||
|
||||
<DT>Enable reverse operation of xorriso and copy some files and a tree to disk:
|
||||
<DT>If for any reason the reading operating system mishandles the ISO image
|
||||
or some files in it, one may enable reverse operation of xorriso and copy
|
||||
files or trees to disk:
|
||||
<DD>$<KBD> xorriso -indev /dev/sr0 \</KBD></DD>
|
||||
<DD><KBD> -osirrox on \</KBD></DD>
|
||||
<DD><KBD> -cpx /pictures/private/horses*/*buttercup* \</KBD></DD>
|
||||
<DD><KBD> -cpx '/pictures/private/horses*/*buttercup*' \</KBD></DD>
|
||||
<DD><KBD> /home/her/buttercup_dir -- \</KBD>
|
||||
<DD><KBD> -extract /sounds /home/her/sounds_from_me</KBD></DD>
|
||||
</DD>
|
||||
|
||||
<DT>Consider to enter dialog mode and use commands like
|
||||
<KBD>-cd , -du , -lsl , -find<KBD>.
|
||||
<DT>
|
||||
<HR>
|
||||
</DT>
|
||||
@ -346,8 +363,8 @@ are interested in using BD-R media.
|
||||
<P>
|
||||
<DL>
|
||||
<DT><H3>Download as source code (see README):</H3></DT>
|
||||
<DD><A HREF="xorriso-0.2.4.pl00.tar.gz">xorriso-0.2.4.pl00.tar.gz</A>
|
||||
(1040 KB).
|
||||
<DD><A HREF="xorriso-0.2.8.pl00.tar.gz">xorriso-0.2.8.pl00.tar.gz</A>
|
||||
(1050 KB).
|
||||
</DD>
|
||||
</DL>
|
||||
</DD>
|
||||
@ -371,29 +388,26 @@ an <A HREF="http://www.opensource.org/">Open Source</A> approved license</DD>
|
||||
</P>
|
||||
|
||||
<HR>
|
||||
<P>
|
||||
Bug fixes towards xorriso-0.2.2.pl01:
|
||||
<UL>
|
||||
|
||||
<P>
|
||||
Bug fixes towards xorriso-0.2.6.pl00:
|
||||
<UL>
|
||||
<LI>A potential buffer overflow has been fixed</LI>
|
||||
<LI>-follow "link" attributed random target filenames to looping links</LI>
|
||||
<LI>-as mkisofs -iso-level was accused to be an unknown option</LI>
|
||||
<!--
|
||||
<LI>- none -</LI>
|
||||
-->
|
||||
|
||||
</UL>
|
||||
</P>
|
||||
|
||||
<P>
|
||||
Enhancements towards previous stable version xorriso-0.2.2.pl01:
|
||||
Enhancements towards previous stable version xorriso-0.2.4.pl00:
|
||||
<UL>
|
||||
|
||||
<LI>
|
||||
Included libburn has enhanced Linux drive access and listing code
|
||||
</LI>
|
||||
<LI>
|
||||
New option -check_media
|
||||
</LI>
|
||||
<LI>
|
||||
New -find test -damaged, new -find actions "report_damage", "report_lba"
|
||||
</LI>
|
||||
<LI>
|
||||
New -error_behavior occasion "file_extraction"
|
||||
<LI>Ability to write and maintain bootable ISO images based on ISOLINUX</LI>
|
||||
<LI>New ./configure option --disable-libreadline to make binary more portable
|
||||
</LI>
|
||||
|
||||
</UL>
|
||||
@ -403,32 +417,25 @@ New -error_behavior occasion "file_extraction"
|
||||
|
||||
<P>
|
||||
<DL>
|
||||
<DT><H3>Development snapshot, version 0.2.5 :</H3></DT>
|
||||
<DD>Bug fixes towards xorriso-0.2.4.pl00:
|
||||
<DT><H3>Development snapshot, version 0.2.9 :</H3></DT>
|
||||
<DD>Bug fixes towards xorriso-0.2.8.pl00:
|
||||
<UL>
|
||||
<LI>-format full did not re-format already formatted DVD+RW</LI>
|
||||
<!--
|
||||
<LI>- none yet -</LI>
|
||||
<!--
|
||||
-->
|
||||
</UL>
|
||||
</DD>
|
||||
<DD>Enhancements towards stable version 0.2.4.pl00:
|
||||
<DD>Enhancements towards stable version 0.2.8.pl00:
|
||||
<UL>
|
||||
<LI>Capability to insert and extract files far larger than 4 GB</LI>
|
||||
<LI>New option -file_size_limit, -as mkisofs now supports -iso-level 1 to 3
|
||||
</LI>
|
||||
<LI>New option -extract_cut to retrieve data from oversized files</LI>
|
||||
<LI>New option -check_media_defaults</LI>
|
||||
<LI>New option -list_delimiter</LI>
|
||||
<!--
|
||||
<LI>- none yet -</LI>
|
||||
<!--
|
||||
-->
|
||||
</UL>
|
||||
</DD>
|
||||
<DD> </DD>
|
||||
<DD><A HREF="README_xorriso_devel">README 0.2.5</A>
|
||||
<DD><A HREF="xorriso_help_devel">xorriso_0.2.5 -help</A></DD>
|
||||
<DD><A HREF="man_1_xorriso_devel.html">man xorriso (as of 0.2.5)</A></DD>
|
||||
<DD><A HREF="README_xorriso_devel">README 0.2.9</A>
|
||||
<DD><A HREF="xorriso_help_devel">xorriso_0.2.9 -help</A></DD>
|
||||
<DD><A HREF="man_1_xorriso_devel.html">man xorriso (as of 0.2.9)</A></DD>
|
||||
<DD> </DD>
|
||||
<DT>If you want to distribute development versions of xorriso, then use
|
||||
this tarball which produces static linking between xorriso and the
|
||||
@ -438,7 +445,7 @@ libburnia libraries.
|
||||
installation see README)
|
||||
</DD>
|
||||
<DD>
|
||||
<A HREF="xorriso-0.2.5.tar.gz">xorriso-0.2.5.tar.gz</A>
|
||||
<A HREF="xorriso-0.2.9.tar.gz">xorriso-0.2.9.tar.gz</A>
|
||||
(1050 KB).
|
||||
</DD>
|
||||
<DT>A dynamically linked development version of xorriso can be obtained
|
||||
|
@ -18,7 +18,7 @@
|
||||
#ifndef Xorriso_private_includeD
|
||||
#define Xorriso_private_includeD yes
|
||||
|
||||
#define Xorriso_program_versioN "0.2.5"
|
||||
#define Xorriso_program_versioN "0.2.8"
|
||||
|
||||
/** The source code release timestamp */
|
||||
#include "xorriso_timestamp.h"
|
||||
@ -134,6 +134,8 @@ struct XorrisO { /* the global context of xorriso */
|
||||
|
||||
int toc_emulation_flag; /* bit0= bit3 for isoburn_drive_aquire()
|
||||
scan -ROM profiles for ISO sessions
|
||||
bit1= bit4 for isoburn_drive_aquire()
|
||||
do not emulate TOC on overwriteable media
|
||||
*/
|
||||
|
||||
int image_start_mode; /* From what address to load the ISO image
|
||||
@ -185,6 +187,13 @@ struct XorrisO { /* the global context of xorriso */
|
||||
|
||||
int keep_boot_image;
|
||||
int patch_isolinux_image;
|
||||
char boot_image_bin_path[SfileadrL];
|
||||
int boot_image_emul; /* 0=no emulation
|
||||
(1=emulation as hard disk)
|
||||
(2=emulation as floppy)
|
||||
*/
|
||||
char boot_image_cat_path[SfileadrL];
|
||||
off_t boot_image_load_size;
|
||||
|
||||
|
||||
/* XORRISO options */
|
||||
@ -198,7 +207,7 @@ struct XorrisO { /* the global context of xorriso */
|
||||
of self-owned directories during restore
|
||||
*/
|
||||
|
||||
int dialog;
|
||||
int dialog; /* 0=off , 1=single-line , 2=multi-line */
|
||||
|
||||
|
||||
/* Pattern matching facility. It still carries legacy from scdbackup/askme.c
|
||||
|
@ -1 +1 @@
|
||||
#define Xorriso_timestamP "2008.09.19.122656"
|
||||
#define Xorriso_timestamP "2008.10.12.120001"
|
||||
|
@ -81,6 +81,8 @@ int Xorriso_read_file_data(struct XorrisO *xorriso, IsoNode *node,
|
||||
off_t img_offset, off_t disk_offset,
|
||||
off_t bytes, int flag);
|
||||
|
||||
int Xorriso_node_from_path(struct XorrisO *xorriso, IsoImage *volume,
|
||||
char *path, IsoNode **node, int flag);
|
||||
|
||||
#define LIBISO_ISDIR(node) (iso_node_get_type(node) == LIBISO_DIR)
|
||||
#define LIBISO_ISREG(node) (iso_node_get_type(node) == LIBISO_FILE)
|
||||
@ -93,6 +95,8 @@ int Xorriso_read_file_data(struct XorrisO *xorriso, IsoNode *node,
|
||||
S_ISFIFO(iso_node_get_mode(node)))
|
||||
#define LIBISO_ISSOCK(node) (iso_node_get_type(node) == LIBISO_SPECIAL && \
|
||||
S_ISSOCK(iso_node_get_mode(node)))
|
||||
#define LIBISO_ISBOOT(node) (iso_node_get_type(node) == LIBISO_BOOT)
|
||||
|
||||
|
||||
/* CD specs say one shall not write tracks < 600 kiB */
|
||||
#define Xorriso_cd_min_track_sizE 300
|
||||
@ -435,6 +439,8 @@ int Xorriso_aquire_drive(struct XorrisO *xorriso, char *adr, int flag)
|
||||
struct isoburn_read_opts *ropts= NULL;
|
||||
char adr_data[SfileadrL], *libburn_adr, *boot_fate, *sev;
|
||||
|
||||
static int no_rr_or_joliet= 0;
|
||||
|
||||
if((flag&3)==0) {
|
||||
sprintf(xorriso->info_text,
|
||||
"XORRISOBURN program error : Xorriso_aquire_drive bit0+bit1 not set");
|
||||
@ -479,7 +485,7 @@ int Xorriso_aquire_drive(struct XorrisO *xorriso, char *adr, int flag)
|
||||
if(dinfo==NULL) {
|
||||
isoburn_set_msgs_submit(Xorriso_msgs_submit_void, (void *) xorriso,
|
||||
(3<<2) | 128 , 0);
|
||||
aquire_flag= 1 | ((flag&(8|4))>>1) | ((xorriso->toc_emulation_flag&1)<<3);
|
||||
aquire_flag= 1 | ((flag&(8|4))>>1) | ((xorriso->toc_emulation_flag & 3)<<3);
|
||||
ret= isoburn_drive_aquire(&dinfo, libburn_adr, aquire_flag);
|
||||
Xorriso_process_msg_queues(xorriso,0);
|
||||
if(ret<=0) {
|
||||
@ -591,6 +597,13 @@ int Xorriso_aquire_drive(struct XorrisO *xorriso, char *adr, int flag)
|
||||
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "NOTE", 0);
|
||||
}
|
||||
}
|
||||
|
||||
/* <<< */
|
||||
if(no_rr_or_joliet) {
|
||||
isoburn_ropt_set_extensions(ropts,
|
||||
isoburn_ropt_noiso1999 | isoburn_ropt_norock | isoburn_ropt_nojoliet);
|
||||
}
|
||||
|
||||
ret= isoburn_read_image(drive, ropts, &volset);
|
||||
|
||||
/* <<< Resetting to normal thresholds */
|
||||
@ -630,7 +643,9 @@ int Xorriso_aquire_drive(struct XorrisO *xorriso, char *adr, int flag)
|
||||
Xorriso_process_msg_queues(xorriso,0);
|
||||
isoburn_ropt_get_size_what(ropts, &size, &has_what);
|
||||
if(has_what & isoburn_ropt_has_el_torito) {
|
||||
if(xorriso->patch_isolinux_image)
|
||||
if(xorriso->boot_image_bin_path[0])
|
||||
boot_fate= "replaced by an isolinux image";
|
||||
else if(xorriso->patch_isolinux_image)
|
||||
boot_fate= "patched as isolinux image";
|
||||
else if(xorriso->keep_boot_image)
|
||||
boot_fate= "kept unchanged";
|
||||
@ -838,7 +853,7 @@ int Xorriso_write_session(struct XorrisO *xorriso, int flag)
|
||||
int ret, relax= 0, i, profile, status, num_formats;
|
||||
int major, minor, micro;
|
||||
unsigned dummy;
|
||||
char xorriso_id[256], *img_id, profile_name[80], sfe[5*SfileadrL];
|
||||
char xorriso_id[256], *img_id, profile_name[80], sfe[5*SfileadrL], *cpt;
|
||||
struct isoburn_imgen_opts *sopts= NULL;
|
||||
struct burn_drive_info *dinfo, *source_dinfo;
|
||||
struct burn_drive *drive, *source_drive;
|
||||
@ -850,7 +865,9 @@ int Xorriso_write_session(struct XorrisO *xorriso, int flag)
|
||||
struct burn_track **tracks;
|
||||
enum burn_disc_status s;
|
||||
IsoImage *image= NULL;
|
||||
IsoNode *node;
|
||||
ElToritoBootImage *bootimg;
|
||||
enum eltorito_boot_media_type emul_type= ELTORITO_NO_EMUL;
|
||||
|
||||
ret= Xorriso_get_drive_handles(xorriso, &dinfo, &drive,
|
||||
"on attempt to write", 2);
|
||||
@ -916,7 +933,78 @@ int Xorriso_write_session(struct XorrisO *xorriso, int flag)
|
||||
/* >>> ??? move down to libisoburn ? */
|
||||
if(image!=NULL && !(flag&1)) {
|
||||
ret= iso_image_get_boot_image(image, &bootimg, NULL, NULL);
|
||||
if(xorriso->patch_isolinux_image) {
|
||||
|
||||
if(xorriso->boot_image_bin_path[0]) {
|
||||
/* discard old boot image, set new one */
|
||||
if(ret == 1)
|
||||
iso_image_remove_boot_image(image);
|
||||
if(xorriso->boot_image_emul == 1)
|
||||
emul_type= ELTORITO_HARD_DISC_EMUL;
|
||||
else if(xorriso->boot_image_emul == 2)
|
||||
emul_type= ELTORITO_FLOPPY_EMUL;
|
||||
if(xorriso->boot_image_cat_path[0] == 0) {
|
||||
strcpy(xorriso->boot_image_cat_path, xorriso->boot_image_bin_path);
|
||||
cpt= strrchr(xorriso->boot_image_cat_path, '/');
|
||||
if(cpt == NULL)
|
||||
cpt= xorriso->boot_image_cat_path;
|
||||
else
|
||||
cpt++;
|
||||
strcpy(cpt, "boot.cat");
|
||||
}
|
||||
|
||||
sprintf(xorriso->info_text, "Activating alleged isolinux boot image %s",
|
||||
Text_shellsafe(xorriso->boot_image_bin_path, sfe, 0));
|
||||
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "NOTE", 0);
|
||||
sprintf(xorriso->info_text, "Creating El Torito boot catalog file %s",
|
||||
Text_shellsafe(xorriso->boot_image_cat_path, sfe, 0));
|
||||
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "NOTE", 0);
|
||||
|
||||
ret= Xorriso_node_from_path(xorriso, image, xorriso->boot_image_bin_path,
|
||||
&node, 1);
|
||||
if(ret <= 0) {
|
||||
sprintf(xorriso->info_text,
|
||||
"Cannot find in ISO image: -boot_image ... bin_path=%s",
|
||||
Text_shellsafe(xorriso->boot_image_bin_path, sfe, 0));
|
||||
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "FAILURE", 0);
|
||||
{ret= 0; goto ex;}
|
||||
}
|
||||
ret= Xorriso_node_from_path(xorriso, image, xorriso->boot_image_cat_path,
|
||||
&node, 1);
|
||||
if(ret > 0) {
|
||||
if(!xorriso->do_overwrite) {
|
||||
sprintf(xorriso->info_text,
|
||||
"May not overwite existing -boot_image ... cat_path=%s",
|
||||
Text_shellsafe(xorriso->boot_image_cat_path, sfe, 0));
|
||||
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "FAILURE", 0);
|
||||
{ret= 0; goto ex;}
|
||||
}
|
||||
ret= Xorriso_rmi(xorriso, NULL, (off_t) 0, xorriso->boot_image_cat_path,
|
||||
8 | (xorriso->do_overwrite == 1));
|
||||
if(ret != 1) {
|
||||
sprintf(xorriso->info_text,
|
||||
"Could not remove existing -boot_image cat_path=%s",
|
||||
Text_shellsafe(xorriso->boot_image_cat_path, sfe, 0));
|
||||
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "FAILURE", 0);
|
||||
{ret= 0; goto ex;}
|
||||
}
|
||||
}
|
||||
|
||||
ret= iso_image_set_boot_image(image, xorriso->boot_image_bin_path,
|
||||
emul_type, xorriso->boot_image_cat_path,
|
||||
&bootimg);
|
||||
if(ret < 0) {
|
||||
Xorriso_process_msg_queues(xorriso,0);
|
||||
Xorriso_report_iso_error(xorriso, "", ret,
|
||||
"Error when attaching El-Torito boot image to ISO 9660 image",
|
||||
0, "FAILURE", 1);
|
||||
sprintf(xorriso->info_text,
|
||||
"Could not attach El-Torito boot image to ISO 9660 image");
|
||||
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "FAILURE", 0);
|
||||
{ret= 0; goto ex;}
|
||||
}
|
||||
el_torito_set_load_size(bootimg, xorriso->boot_image_load_size / 512);
|
||||
el_torito_patch_isolinux_image(bootimg);
|
||||
} else if(xorriso->patch_isolinux_image) {
|
||||
if(ret==1) {
|
||||
relax|= isoburn_igopt_allow_full_ascii;
|
||||
sprintf(xorriso->info_text, "Patching alleged isolinux boot image");
|
||||
@ -1014,7 +1102,6 @@ int Xorriso_write_session(struct XorrisO *xorriso, int flag)
|
||||
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "FAILURE", 0);
|
||||
{ret= 0; goto ex;}
|
||||
}
|
||||
|
||||
isoburn_igopt_get_effective_lba(sopts, &(xorriso->session_lba));
|
||||
|
||||
ret= Xorriso_make_write_options(xorriso, drive, &burn_options, 0);
|
||||
@ -1087,8 +1174,13 @@ ex:;
|
||||
|
||||
if(ret<=0) {
|
||||
/* >>> ??? revive discarded boot image */;
|
||||
} else if(xorriso->boot_image_bin_path[0]) {
|
||||
xorriso->keep_boot_image= 1;
|
||||
xorriso->patch_isolinux_image= 1;
|
||||
xorriso->boot_image_bin_path[0]= 0;
|
||||
sprintf(xorriso->info_text, "Switched to -boot_image isolinux patch");
|
||||
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "NOTE", 0);
|
||||
}
|
||||
|
||||
if(disc!=NULL)
|
||||
burn_disc_free(disc);
|
||||
isoburn_igopt_destroy(&sopts, 0);
|
||||
@ -1144,7 +1236,7 @@ int Xorriso_pacifier_loop(struct XorrisO *xorriso, struct burn_drive *drive,
|
||||
enum burn_drive_status drive_status;
|
||||
double start_time, current_time, last_time, base_time= 0.0, base_count= 0.0;
|
||||
double next_base_time= 0.0, next_base_count= 0.0, first_base_time= 0.0;
|
||||
double first_base_count= 0.0, norm= 0.0;
|
||||
double first_base_count= 0.0, norm= 0.0, now_time, fract_offset= 0.0;
|
||||
double measured_speed, speed_factor= 1385000, quot;
|
||||
time_t time_prediction;
|
||||
|
||||
@ -1153,6 +1245,7 @@ int Xorriso_pacifier_loop(struct XorrisO *xorriso, struct burn_drive *drive,
|
||||
usleep(100002);
|
||||
|
||||
emul= flag&15;
|
||||
fract_offset= 0.2 * (double) emul - ((int) (0.2 * (double) emul));
|
||||
if(emul==0)
|
||||
emul= xorriso->pacifier_style;
|
||||
if(flag&16)
|
||||
@ -1272,12 +1365,14 @@ int Xorriso_pacifier_loop(struct XorrisO *xorriso, struct burn_drive *drive,
|
||||
current_time-start_time);
|
||||
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "UPDATE", 0);
|
||||
|
||||
for(i= 0; i<10; i++) {
|
||||
for(i= 0; i<12; i++) { /* 2 usleeps more than supposed to be needed */
|
||||
Xorriso_process_msg_queues(xorriso, 0);
|
||||
if(aborting<=0)
|
||||
aborting= Xorriso_check_burn_abort(xorriso, 0);
|
||||
usleep(100000);
|
||||
if(((time_t) Sfile_microtime(0)) - ((time_t) current_time) >= 1)
|
||||
now_time= Sfile_microtime(0);
|
||||
if(((time_t) now_time) - ((time_t) current_time) >= 1 &&
|
||||
now_time - ((time_t) now_time) >= fract_offset)
|
||||
break;
|
||||
}
|
||||
}
|
||||
@ -1552,9 +1647,8 @@ int Xorriso_fake_stbuf(struct XorrisO *xorriso, char *path, struct stat *stbuf,
|
||||
stbuf->st_mode|= S_IFIFO;
|
||||
else if(LIBISO_ISSOCK(*node))
|
||||
stbuf->st_mode|= S_IFSOCK;
|
||||
|
||||
/* >>> NG How to represent LIBISO_BOOT ? */
|
||||
|
||||
else if(LIBISO_ISBOOT(*node))
|
||||
stbuf->st_mode|= Xorriso_IFBOOT;
|
||||
|
||||
/* >>> With directories this should be : number of subdirs + 2 */
|
||||
/* >>> ??? How to obtain RR hardlink number for other types ? */
|
||||
@ -1765,7 +1859,7 @@ int Xorriso_add_tree(struct XorrisO *xorriso, IsoDir *dir,
|
||||
sfe2= malloc(5*SfileadrL);
|
||||
disk_path= malloc(2*SfileadrL);
|
||||
img_path= malloc(2*SfileadrL);
|
||||
link_target= malloc(SfileadrL);
|
||||
link_target= calloc(SfileadrL, 1);
|
||||
if(sfe==NULL || sfe2==NULL || disk_path==NULL || img_path==NULL ||
|
||||
link_target==NULL) {
|
||||
Xorriso_no_malloc_memory(xorriso, &sfe, 0);
|
||||
@ -1874,6 +1968,9 @@ cannot_lstat:;
|
||||
} else {
|
||||
if(Xorriso_eval_problem_status(xorriso, 0, 1|2)<0)
|
||||
{ret= 0; goto was_problem;}
|
||||
ret= Xorriso_resolve_link(xorriso, srcpt, link_target, 1);
|
||||
if(ret<=0)
|
||||
goto was_problem;
|
||||
}
|
||||
} else if (S_ISLNK(stbuf.st_mode)) {
|
||||
ret= Xorriso_resolve_link(xorriso, srcpt, link_target, 1);
|
||||
@ -4970,7 +5067,7 @@ int Xorriso_ls_filev(struct XorrisO *xorriso, char *wd,
|
||||
continue;
|
||||
link_target[0]= 0;
|
||||
if((flag&5)==1) { /* -ls_l */
|
||||
ret= Xorriso_format_ls_l(xorriso, &stbuf, 0);
|
||||
ret= Xorriso_format_ls_l(xorriso, &stbuf, 1);
|
||||
if(ret<=0)
|
||||
continue;
|
||||
if(LIBISO_ISLNK(node)) {
|
||||
@ -5106,7 +5203,7 @@ cannot_create_iter:;
|
||||
ret= Xorriso_fake_stbuf(xorriso, "", &stbuf, &node, 1);
|
||||
if(ret<=0)
|
||||
continue;
|
||||
ret= Xorriso_format_ls_l(xorriso, &stbuf, 0);
|
||||
ret= Xorriso_format_ls_l(xorriso, &stbuf, 1);
|
||||
if(ret<=0)
|
||||
continue;
|
||||
}
|
||||
@ -5887,7 +5984,7 @@ int Xorriso_findi_test(struct XorrisO *xorriso, struct FindjoB *job,
|
||||
off_t damage_start, damage_end, size;
|
||||
int lba_count, *file_end_lbas= NULL, *file_start_lbas= NULL, i;
|
||||
|
||||
ret= Findjob_test(job, name, boss_stbuf, stbuf, depth, 0);
|
||||
ret= Findjob_test(job, name, boss_stbuf, stbuf, depth, 1);
|
||||
if(ret<=0)
|
||||
return(ret);
|
||||
|
||||
@ -6684,48 +6781,12 @@ int Xorriso_burn_track(struct XorrisO *xorriso, off_t write_start_address,
|
||||
ret= 0; goto ex;
|
||||
}
|
||||
|
||||
#ifndef NIX
|
||||
|
||||
if(flag & 1) {
|
||||
ret= Xorriso_update_iso_lba0(xorriso, nwa, isosize, head_buffer, NULL,
|
||||
flag & 2);
|
||||
if(ret <= 0)
|
||||
goto ex;
|
||||
}
|
||||
|
||||
#else
|
||||
|
||||
/* Update ISO header at lba 0 */
|
||||
if((flag&1) && nwa >= 32) {
|
||||
if(!do_isosize) {
|
||||
/* head_buffer was not filled yet. Read it from output media. */
|
||||
ret= isoburn_read_iso_head(drive, nwa, &isosize, head_buffer, 2);
|
||||
if(ret<=0) {
|
||||
Xorriso_process_msg_queues(xorriso,0);
|
||||
sprintf(xorriso->info_text,
|
||||
"Cannot read freshly written ISO image head");
|
||||
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "FAILURE", 0);
|
||||
ret= 0; goto ex;
|
||||
}
|
||||
}
|
||||
/* patch ISO header */
|
||||
full_size= nwa + isosize;
|
||||
headpt= head_buffer + 32*1024;
|
||||
for(i=0;i<4;i++)
|
||||
headpt[87-i]= headpt[80+i]= (full_size >> (8*i)) & 0xff;
|
||||
ret= burn_random_access_write(drive, (off_t) 0, head_buffer,
|
||||
(off_t) (64*1024), 1);
|
||||
if(ret<=0) {
|
||||
Xorriso_process_msg_queues(xorriso,0);
|
||||
sprintf(xorriso->info_text,
|
||||
"Cannot write new ISO image head to LBA 0");
|
||||
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "FAILURE", 0);
|
||||
ret= 0; goto ex;
|
||||
}
|
||||
}
|
||||
|
||||
#endif /* NIX */
|
||||
|
||||
sprintf(xorriso->info_text, "Writing to %s completed sucessfully.\n\n",
|
||||
Text_shellsafe(xorriso->outdev,sfe,0));
|
||||
Xorriso_info(xorriso, 0);
|
||||
|
@ -19,7 +19,7 @@
|
||||
*/
|
||||
#define xorriso_libisoburn_req_major 0
|
||||
#define xorriso_libisoburn_req_minor 2
|
||||
#define xorriso_libisoburn_req_micro 5
|
||||
#define xorriso_libisoburn_req_micro 8
|
||||
|
||||
int Xorriso_startup_libraries(struct XorrisO *xorriso, int flag);
|
||||
|
||||
@ -338,5 +338,12 @@ int Xorriso_extract_cut(struct XorrisO *xorriso,
|
||||
char *img_path, char *disk_path,
|
||||
off_t img_offset, off_t bytes, int flag);
|
||||
|
||||
|
||||
/* A pseudo file type for El-Torito bootsectors as in man 2 stat :
|
||||
For now take the highest possible value.
|
||||
*/
|
||||
#define Xorriso_IFBOOT S_IFMT
|
||||
|
||||
|
||||
#endif /* Xorrisoburn_includeD */
|
||||
|
||||
|
Reference in New Issue
Block a user