Compare commits
5 Commits
ZeroTwoSix
...
ZeroTwoFou
Author | SHA1 | Date | |
---|---|---|---|
deb42c7cdc | |||
19daa2a6f7 | |||
36ce98a648 | |||
11ccd67979 | |||
1cb6906b1b |
14
README
14
README
@ -4,13 +4,13 @@
|
|||||||
libisoburn. By Vreixo Formoso <metalpain2002@yahoo.es>
|
libisoburn. By Vreixo Formoso <metalpain2002@yahoo.es>
|
||||||
and Thomas Schmitt <scdbackup@gmx.net>
|
and Thomas Schmitt <scdbackup@gmx.net>
|
||||||
Integrated sub project of libburnia-project.org.
|
Integrated sub project of libburnia-project.org.
|
||||||
http://files.libburnia-project.org/releases/libisoburn-0.2.6.pl00.tar.gz
|
http://files.libburnia-project.org/releases/libisoburn-0.2.4.pl00.tar.gz
|
||||||
Copyright (C) 2006-2008 Vreixo Formoso, Thomas Schmitt.
|
Copyright (C) 2006-2008 Vreixo Formoso, Thomas Schmitt.
|
||||||
Provided under GPL version 2.
|
Provided under GPL version 2.
|
||||||
------------------------------------------------------------------------------
|
------------------------------------------------------------------------------
|
||||||
|
|
||||||
libisoburn is a frontend for libraries libburn and libisofs which enables
|
libisoburn is a frontend for libraries libburn and libisofs which enables
|
||||||
creation and expansion of ISO-9660 filesystems on all CD/DVD/BD media supported
|
creation and expansion of ISO-9660 filesystems on all CD/DVD media supported
|
||||||
by libburn. This includes media like DVD+RW, which do not support multi-session
|
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.
|
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
|
Compilation, First Glimpse, Installation
|
||||||
|
|
||||||
Dynamic library and compile time header requirements for libisoburn-0.2.6 :
|
Dynamic library and compile time header requirements for libisoburn-0.2.4 :
|
||||||
- libburn.so.4 , version libburn-0.5.2 or higher
|
- libburn.so.4 , version libburn-0.5.2 or higher
|
||||||
- libisofs.so.6 , version libisofs-0.6.8 or higher
|
- libisofs.so.6 , version libisofs-0.6.6 or higher
|
||||||
libisoburn and xorriso will not start with libraries which are older than their
|
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
|
headers seen at compile time. So compile in the oldest possible installation
|
||||||
setup unless you have reason to enforce a newer bug fix level.
|
setup unless you have reason to enforce a newer bug fix level.
|
||||||
|
|
||||||
Obtain libisoburn-0.2.6.pl00.tar.gz, take it to a directory of your choice
|
Obtain libisoburn-0.2.4.pl00.tar.gz, take it to a directory of your choice
|
||||||
and do:
|
and do:
|
||||||
|
|
||||||
tar xzf libisoburn-0.2.6.pl00.tar.gz
|
tar xzf libisoburn-0.2.4.pl00.tar.gz
|
||||||
cd libisoburn-0.2.6
|
cd libisoburn-0.2.4
|
||||||
|
|
||||||
Within that directory execute:
|
Within that directory execute:
|
||||||
|
|
||||||
|
16
configure.ac
16
configure.ac
@ -1,4 +1,4 @@
|
|||||||
AC_INIT([libisoburn], [0.2.6], [http://libburnia-project.org])
|
AC_INIT([libisoburn], [0.2.4], [http://libburnia-project.org])
|
||||||
AC_PREREQ([2.50])
|
AC_PREREQ([2.50])
|
||||||
dnl AC_CONFIG_HEADER([config.h])
|
dnl AC_CONFIG_HEADER([config.h])
|
||||||
|
|
||||||
@ -21,7 +21,7 @@ dnl
|
|||||||
dnl These three are only copies to provide libtool with unused LT_RELEASE
|
dnl These three are only copies to provide libtool with unused LT_RELEASE
|
||||||
ISOBURN_MAJOR_VERSION=0
|
ISOBURN_MAJOR_VERSION=0
|
||||||
ISOBURN_MINOR_VERSION=2
|
ISOBURN_MINOR_VERSION=2
|
||||||
ISOBURN_MICRO_VERSION=6
|
ISOBURN_MICRO_VERSION=4
|
||||||
dnl ISOBURN_VERSION=$ISOBURN_MAJOR_VERSION.$ISOBURN_MINOR_VERSION.$ISOBURN_MICRO_VERSION
|
dnl ISOBURN_VERSION=$ISOBURN_MAJOR_VERSION.$ISOBURN_MINOR_VERSION.$ISOBURN_MICRO_VERSION
|
||||||
|
|
||||||
AC_SUBST(ISOBURN_MAJOR_VERSION)
|
AC_SUBST(ISOBURN_MAJOR_VERSION)
|
||||||
@ -33,16 +33,16 @@ dnl Libtool versioning
|
|||||||
dnl Generate libisoburn.so.1.x.y
|
dnl Generate libisoburn.so.1.x.y
|
||||||
dnl SONAME will become LT_CURRENT - LT_AGE
|
dnl SONAME will become LT_CURRENT - LT_AGE
|
||||||
dnl
|
dnl
|
||||||
dnl ts A80919
|
dnl ts A80824
|
||||||
dnl This is the release version 0.2.6 = libisoburn.so.1.15.0
|
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 ### This is the development version after above stable release
|
||||||
dnl LT_CURRENT++, LT_AGE++ have not happened happened yet.
|
dnl LT_CURRENT++, LT_AGE++ have not happened happened yet.
|
||||||
dnl ### LT_CURRENT++, LT_AGE++ has happened meanwhile.
|
dnl ### LT_CURRENT++, LT_AGE++ has happened meanwhile.
|
||||||
dnl
|
dnl
|
||||||
dnl SONAME = 16 - 15 = 1 . Library name = libisoburn.so.1.15.0
|
dnl SONAME = 14 - 13 = 1 . Library name = libisoburn.so.1.13.0
|
||||||
LT_RELEASE=$ISOBURN_MAJOR_VERSION.$ISOBURN_MINOR_VERSION
|
LT_RELEASE=$ISOBURN_MAJOR_VERSION.$ISOBURN_MINOR_VERSION
|
||||||
LT_CURRENT=16
|
LT_CURRENT=14
|
||||||
LT_AGE=15
|
LT_AGE=13
|
||||||
LT_REVISION=0
|
LT_REVISION=0
|
||||||
LT_CURRENT_MINUS_AGE=`expr $LT_CURRENT - $LT_AGE`
|
LT_CURRENT_MINUS_AGE=`expr $LT_CURRENT - $LT_AGE`
|
||||||
|
|
||||||
@ -101,7 +101,7 @@ AC_CHECK_HEADER(libisofs/libisofs.h)
|
|||||||
|
|
||||||
dnl Check for proper library versions
|
dnl Check for proper library versions
|
||||||
LIBBURN_REQUIRED=0.5.2
|
LIBBURN_REQUIRED=0.5.2
|
||||||
LIBISOFS_REQUIRED=0.6.8
|
LIBISOFS_REQUIRED=0.6.6
|
||||||
PKG_CHECK_MODULES(LIBBURN, libburn-1 >= $LIBBURN_REQUIRED)
|
PKG_CHECK_MODULES(LIBBURN, libburn-1 >= $LIBBURN_REQUIRED)
|
||||||
PKG_CHECK_MODULES(LIBISOFS, libisofs-1 >= $LIBISOFS_REQUIRED)
|
PKG_CHECK_MODULES(LIBISOFS, libisofs-1 >= $LIBISOFS_REQUIRED)
|
||||||
|
|
||||||
|
@ -477,7 +477,7 @@ WARN_LOGFILE =
|
|||||||
# directories like "/usr/src/myproject". Separate the files or directories
|
# directories like "/usr/src/myproject". Separate the files or directories
|
||||||
# with spaces.
|
# with spaces.
|
||||||
|
|
||||||
INPUT = libisoburn \
|
INPUT = libburn \
|
||||||
doc \
|
doc \
|
||||||
test
|
test
|
||||||
|
|
||||||
@ -495,7 +495,9 @@ INPUT_ENCODING = UTF-8
|
|||||||
# *.c *.cc *.cxx *.cpp *.c++ *.java *.ii *.ixx *.ipp *.i++ *.inl *.h *.hh *.hxx
|
# *.c *.cc *.cxx *.cpp *.c++ *.java *.ii *.ixx *.ipp *.i++ *.inl *.h *.hh *.hxx
|
||||||
# *.hpp *.h++ *.idl *.odl *.cs *.php *.php3 *.inc *.m *.mm *.py
|
# *.hpp *.h++ *.idl *.odl *.cs *.php *.php3 *.inc *.m *.mm *.py
|
||||||
|
|
||||||
FILE_PATTERNS =
|
FILE_PATTERNS = libburn.h \
|
||||||
|
comments \
|
||||||
|
libburner.c
|
||||||
|
|
||||||
# The RECURSIVE tag can be used to turn specify whether or not subdirectories
|
# The RECURSIVE tag can be used to turn specify whether or not subdirectories
|
||||||
# should be searched for input files as well. Possible values are YES and NO.
|
# should be searched for input files as well. Possible values are YES and NO.
|
||||||
|
@ -147,10 +147,6 @@ int ds_read_block(IsoDataSource *src, uint32_t lba, uint8_t *buffer)
|
|||||||
return 1;
|
return 1;
|
||||||
tiles[oldest].last_error_lba = lba;
|
tiles[oldest].last_error_lba = lba;
|
||||||
|
|
||||||
#ifdef ISO_DATA_SOURCE_MISHAP
|
|
||||||
ret= ISO_DATA_SOURCE_MISHAP;
|
|
||||||
#else
|
|
||||||
/* <<< pre libisofs-0.6.7 */
|
|
||||||
/* It is not required by the specs of libisofs but implicitely assumed
|
/* It is not required by the specs of libisofs but implicitely assumed
|
||||||
...
|
...
|
||||||
But it is not possible to ignore FAILURE.
|
But it is not possible to ignore FAILURE.
|
||||||
@ -163,8 +159,6 @@ int ds_read_block(IsoDataSource *src, uint32_t lba, uint8_t *buffer)
|
|||||||
enough to make it appear plausible.
|
enough to make it appear plausible.
|
||||||
*/
|
*/
|
||||||
ret= ISO_FILE_CANT_WRITE;
|
ret= ISO_FILE_CANT_WRITE;
|
||||||
#endif
|
|
||||||
|
|
||||||
if(ret >= 0)
|
if(ret >= 0)
|
||||||
ret = -1;
|
ret = -1;
|
||||||
sprintf(msg, "ds_read_block(%lu) returns %d", (unsigned long) lba, ret);
|
sprintf(msg, "ds_read_block(%lu) returns %d", (unsigned long) lba, ret);
|
||||||
|
@ -200,7 +200,7 @@ void isoburn_version(int *major, int *minor, int *micro);
|
|||||||
*/
|
*/
|
||||||
#define isoburn_libisofs_req_major 0
|
#define isoburn_libisofs_req_major 0
|
||||||
#define isoburn_libisofs_req_minor 6
|
#define isoburn_libisofs_req_minor 6
|
||||||
#define isoburn_libisofs_req_micro 8
|
#define isoburn_libisofs_req_micro 6
|
||||||
|
|
||||||
/** The minimum version of libburn to be used with this version of libisoburn
|
/** The minimum version of libburn to be used with this version of libisoburn
|
||||||
at compile time.
|
at compile time.
|
||||||
@ -244,7 +244,7 @@ int isoburn_libburn_req(int *major, int *minor, int *micro);
|
|||||||
*/
|
*/
|
||||||
#define isoburn_header_version_major 0
|
#define isoburn_header_version_major 0
|
||||||
#define isoburn_header_version_minor 2
|
#define isoburn_header_version_minor 2
|
||||||
#define isoburn_header_version_micro 6
|
#define isoburn_header_version_micro 4
|
||||||
/** Note:
|
/** Note:
|
||||||
Above version numbers are also recorded in configure.ac because libtool
|
Above version numbers are also recorded in configure.ac because libtool
|
||||||
wants them as parameters at build time.
|
wants them as parameters at build time.
|
||||||
|
@ -4,7 +4,7 @@
|
|||||||
xorriso. By Thomas Schmitt <scdbackup@gmx.net>
|
xorriso. By Thomas Schmitt <scdbackup@gmx.net>
|
||||||
Integrated sub project of libburnia-project.org but also published via:
|
Integrated sub project of libburnia-project.org but also published via:
|
||||||
http://scdbackup.sourceforge.net/xorriso_eng.html
|
http://scdbackup.sourceforge.net/xorriso_eng.html
|
||||||
http://scdbackup.sourceforge.net/xorriso-0.2.6.pl00.tar.gz
|
http://scdbackup.sourceforge.net/xorriso-0.2.4.pl00.tar.gz
|
||||||
Copyright (C) 2006-2008 Thomas Schmitt, provided under GPL version 2.
|
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,
|
libreadline and the readline-dev headers will make dialog mode more convenient,
|
||||||
but are not mandatory.
|
but are not mandatory.
|
||||||
|
|
||||||
Obtain xorriso-0.2.6.pl00.tar.gz, take it to a directory of your choice and do:
|
Obtain xorriso-0.2.4.pl00.tar.gz, take it to a directory of your choice and do:
|
||||||
|
|
||||||
tar xzf xorriso-0.2.6.pl00.tar.gz
|
tar xzf xorriso-0.2.4.pl00.tar.gz
|
||||||
cd xorriso-0.2.6
|
cd xorriso-0.2.4
|
||||||
|
|
||||||
Within that directory execute:
|
Within that directory execute:
|
||||||
|
|
||||||
@ -186,9 +186,9 @@ and a matching dynamically linked xorriso binary.
|
|||||||
This binary is leaner but depends on properly installed libraries of suitable
|
This binary is leaner but depends on properly installed libraries of suitable
|
||||||
revision.
|
revision.
|
||||||
|
|
||||||
Dynamic library and compile time header requirements for libisoburn-0.2.6 :
|
Dynamic library and compile time header requirements for libisoburn-0.2.4 :
|
||||||
- libburn.so.4 , version libburn-0.5.2 or higher
|
- libburn.so.4 , version libburn-0.5.2 or higher
|
||||||
- libisofs.so.6 , version libisofs-0.6.8 or higher
|
- libisofs.so.6 , version libisofs-0.6.6 or higher
|
||||||
libisoburn and xorriso will not start with libraries which are older than their
|
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
|
headers seen at compile time. So compile in the oldest possible installation
|
||||||
setup unless you have reason to enforce a newer bug fix level.
|
setup unless you have reason to enforce a newer bug fix level.
|
||||||
|
@ -3520,12 +3520,12 @@ Fixed a bug with -check_media use=outdev
|
|||||||
xorriso/xorrisoburn.c
|
xorriso/xorrisoburn.c
|
||||||
Reacted on compiler warning
|
Reacted on compiler warning
|
||||||
|
|
||||||
|
|
||||||
------------------------------------ cycle - xorriso-0.2.3 - 2008.08.24.125257
|
------------------------------------ cycle - xorriso-0.2.3 - 2008.08.24.125257
|
||||||
* New -find action "report_lba"
|
* New -find action "report_lba"
|
||||||
* New -error_behavior behavior occasion "file_extraction"
|
* New -error_behavior behavior occasion "file_extraction"
|
||||||
|
|
||||||
|
2008.08.24.160001 []
|
||||||
2008.08.24.160001 [2011]
|
|
||||||
configure.ac
|
configure.ac
|
||||||
README
|
README
|
||||||
libisoburn/libisoburn.h
|
libisoburn/libisoburn.h
|
||||||
@ -3538,13 +3538,10 @@ xorriso/make_xorriso_standalone.sh
|
|||||||
xorriso/configure_ac.txt
|
xorriso/configure_ac.txt
|
||||||
Version leap to 0.2.4
|
Version leap to 0.2.4
|
||||||
|
|
||||||
24 Aug 2008 [2012]
|
[]
|
||||||
xorriso/changelog.txt
|
xorriso/changelog.txt
|
||||||
Documented changes and release timestamp
|
Documented changes and release timestamp
|
||||||
|
|
||||||
24 Aug 2008 [2013]
|
|
||||||
configure.ac
|
|
||||||
Corrected ISOBURN_MICRO_VERSION
|
|
||||||
|
|
||||||
---------------------------------- release - xorriso-0.2.4 - 2008.08.24.160001
|
---------------------------------- release - xorriso-0.2.4 - 2008.08.24.160001
|
||||||
* Included libburn has enhanced Linux drive access and listing code
|
* Included libburn has enhanced Linux drive access and listing code
|
||||||
@ -3552,223 +3549,8 @@ Corrected ISOBURN_MICRO_VERSION
|
|||||||
* New -find test -damaged, new -find actions "report_damage", "report_lba"
|
* New -find test -damaged, new -find actions "report_damage", "report_lba"
|
||||||
* New -error_behavior occasion "file_extraction"
|
* New -error_behavior occasion "file_extraction"
|
||||||
|
|
||||||
|
------------------------------------ cycle - xorriso-0.2.5 -
|
||||||
2008.08.24.173217 [2014]
|
------------------------------------ cycle - xorriso-0.2.5 -
|
||||||
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.5
|
|
||||||
|
|
||||||
24 Aug 2008 [2015]
|
|
||||||
xorriso/changelog.txt
|
|
||||||
Documented changes and release timestamp
|
|
||||||
|
|
||||||
------------------------------------ cycle - xorriso-0.2.5 - 2008.08.24.173217
|
|
||||||
|
|
||||||
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
|
|
||||||
|
|
||||||
[]
|
|
||||||
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
|
|
||||||
|
|
||||||
|
|
||||||
------------------------------------ cycle - xorriso-0.2.7 -
|
|
||||||
------------------------------------ cycle - xorriso-0.2.7 -
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
[]
|
[]
|
||||||
libisoburn/burn_wrap.c
|
libisoburn/burn_wrap.c
|
||||||
@ -3783,20 +3565,16 @@ Tested removal of drive address path conversion in isoburn_drive_aquire()
|
|||||||
|
|
||||||
------------------------------------------------- important
|
------------------------------------------------- important
|
||||||
|
|
||||||
|
|
||||||
------------------------------------------------- development
|
------------------------------------------------- development
|
||||||
|
|
||||||
- creation of bootable images
|
- option -list_delimiter
|
||||||
>>> Vreixo points to demo/iso.c
|
|
||||||
|
|
||||||
- option to disable toc emulation on overwriteables with -outdev
|
|
||||||
|
|
||||||
- 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
|
- change -check_media what=disc to libburn disc rather than libisoburn
|
||||||
(seems to need new API capabilities of libburn)
|
(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
|
??? Clarify handling of links in ISO and on disk during restore
|
||||||
|
|
||||||
> Relative addressing and pattern matching :
|
> Relative addressing and pattern matching :
|
||||||
@ -3808,7 +3586,6 @@ Tested removal of drive address path conversion in isoburn_drive_aquire()
|
|||||||
the main thread cares for user and message queues.
|
the main thread cares for user and message queues.
|
||||||
|
|
||||||
- Introduce an interrupt key for dialog
|
- Introduce an interrupt key for dialog
|
||||||
>>> but how without disturbing readline ?
|
|
||||||
|
|
||||||
- watch read latency and evaluate read quality indicator
|
- watch read latency and evaluate read quality indicator
|
||||||
|
|
||||||
@ -3834,11 +3611,31 @@ Tested removal of drive address path conversion in isoburn_drive_aquire()
|
|||||||
|
|
||||||
------ problem fixes :
|
------ 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
|
- the error handling system should be comprehensively documented
|
||||||
and eventually rectified where needed.
|
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 :
|
------ feature enhancements :
|
||||||
|
|
||||||
|
- Data files >= 4 GiB.
|
||||||
|
|
||||||
|
- API: iso_image_update_sizes() to be run immediately before -commit
|
||||||
|
|
||||||
- A repeatable shell command as origin ("disk_file")
|
- A repeatable shell command as origin ("disk_file")
|
||||||
of a regular file in the ISO image.
|
of a regular file in the ISO image.
|
||||||
|
|
||||||
@ -3849,6 +3646,9 @@ Tested removal of drive address path conversion in isoburn_drive_aquire()
|
|||||||
- Image checksum tag in the last data blocks of an image.
|
- Image checksum tag in the last data blocks of an image.
|
||||||
A data file entry should point to that block.
|
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
|
------ extended attribute stunts: Not visible for mount but for libisofs
|
||||||
|
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
AC_INIT([xorriso], [0.2.6], [http://libburnia-project.org])
|
AC_INIT([xorriso], [0.2.3], [http://libburnia-project.org])
|
||||||
AC_PREREQ([2.50])
|
AC_PREREQ([2.50])
|
||||||
dnl AC_CONFIG_HEADER([config.h])
|
dnl AC_CONFIG_HEADER([config.h])
|
||||||
|
|
||||||
@ -16,7 +16,7 @@ AC_SUBST(BURN_MICRO_VERSION)
|
|||||||
|
|
||||||
LIBISOFS_MAJOR_VERSION=0
|
LIBISOFS_MAJOR_VERSION=0
|
||||||
LIBISOFS_MINOR_VERSION=6
|
LIBISOFS_MINOR_VERSION=6
|
||||||
LIBISOFS_MICRO_VERSION=8
|
LIBISOFS_MICRO_VERSION=6
|
||||||
AC_SUBST(LIBISOFS_MAJOR_VERSION)
|
AC_SUBST(LIBISOFS_MAJOR_VERSION)
|
||||||
AC_SUBST(LIBISOFS_MINOR_VERSION)
|
AC_SUBST(LIBISOFS_MINOR_VERSION)
|
||||||
AC_SUBST(LIBISOFS_MICRO_VERSION)
|
AC_SUBST(LIBISOFS_MICRO_VERSION)
|
||||||
|
@ -70,7 +70,6 @@ then
|
|||||||
-e 's/<b>Drive and media related inquiry actions:<\/b>/\ <BR><b>Drive and media related inquiry actions:<\/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/' \
|
-e 's/<b>Navigation in ISO image/\ <BR><b>Navigation in ISO image/' \
|
||||||
-e 's/^filesystem:<\/b>/filesystem:<\/b><BR>\ <BR>/' \
|
-e 's/^filesystem:<\/b>/filesystem:<\/b><BR>\ <BR>/' \
|
||||||
-e 's/<b>Evaluation of readability and recovery:<\/b>/\ <BR><b>Evaluation of readability and recovery:<\/b><BR>\ <BR>/' \
|
|
||||||
-e 's/<b>osirrox restore options:<\/b>/\ <BR><b>osirrox restore options:<\/b><BR>\ <BR>/' \
|
-e 's/<b>osirrox restore options:<\/b>/\ <BR><b>osirrox restore options:<\/b><BR>\ <BR>/' \
|
||||||
-e 's/<b>Command compatibility emulations:<\/b>/\ <BR><b>Command compatibility emulations:<\/b><BR>\ <BR>/' \
|
-e 's/<b>Command compatibility emulations:<\/b>/\ <BR><b>Command compatibility emulations:<\/b><BR>\ <BR>/' \
|
||||||
-e 's/^<p><b>−as</<p>\ <BR><b>\−as</' \
|
-e 's/^<p><b>−as</<p>\ <BR><b>\−as</' \
|
||||||
|
@ -25,7 +25,7 @@
|
|||||||
current_dir=$(pwd)
|
current_dir=$(pwd)
|
||||||
lone_dir="$current_dir"/"xorriso-standalone"
|
lone_dir="$current_dir"/"xorriso-standalone"
|
||||||
|
|
||||||
xorriso_rev=0.2.6
|
xorriso_rev=0.2.4
|
||||||
# For unstable uploads:
|
# For unstable uploads:
|
||||||
# xorriso_pl=""
|
# xorriso_pl=""
|
||||||
# For stable releases:
|
# For stable releases:
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
.\" First parameter, NAME, should be all caps
|
.\" First parameter, NAME, should be all caps
|
||||||
.\" Second parameter, SECTION, should be 1-8, maybe w/ subsection
|
.\" Second parameter, SECTION, should be 1-8, maybe w/ subsection
|
||||||
.\" other parameters are allowed: see man(7), man(1)
|
.\" other parameters are allowed: see man(7), man(1)
|
||||||
.TH XORRISO 1 "Sep 19, 2008"
|
.TH XORRISO 1 "Aug 24, 2008"
|
||||||
.\" Please adjust this date whenever revising the manpage.
|
.\" Please adjust this date whenever revising the manpage.
|
||||||
.\"
|
.\"
|
||||||
.\" Some roff macros, for reference:
|
.\" Some roff macros, for reference:
|
||||||
@ -346,19 +346,10 @@ characters. Rock Ridge fulfills this demand.
|
|||||||
Commands are either actions or settings. They consist of a command word,
|
Commands are either actions or settings. They consist of a command word,
|
||||||
followed by zero or more parameter words. If the list of parameter words
|
followed by zero or more parameter words. If the list of parameter words
|
||||||
is of variable length (indicated by "[...]" or "[***]") then it has to be
|
is of variable length (indicated by "[...]" or "[***]") then it has to be
|
||||||
terminated by either the list delimiter, or the end of argument list, or an
|
terminated by either the word "--" or the end of argument list or an end of
|
||||||
end of an input line.
|
an input line.
|
||||||
.PP
|
It is not an error if "--" appears after the parameters of a command
|
||||||
At program start the \fBlist delimiter\fR is the word "--". This may be changed
|
with a fixed list length.
|
||||||
by option -list_delimiter in order to allow "--" as argument in a list of
|
|
||||||
variable length. It is advised to reset the delimiter to "--" immediately
|
|
||||||
afterwards.
|
|
||||||
.br
|
|
||||||
For brevity the list delimiter is referred as "--" throughout this text.
|
|
||||||
.br
|
|
||||||
The list delimiter is silently tolerated if it appears after the parameters of
|
|
||||||
a command with a fixed list length. It is handled as normal text if it
|
|
||||||
appears among the arguments of such a command.
|
|
||||||
.PP
|
.PP
|
||||||
.B Pattern expansion
|
.B Pattern expansion
|
||||||
is a property of some particular commands and not a general
|
is a property of some particular commands and not a general
|
||||||
@ -688,8 +679,7 @@ Map a byte interval of a regular disk file into a regular file in the ISO
|
|||||||
image.
|
image.
|
||||||
This may be necessary if the disk file is larger than a single media, or if
|
This may be necessary if the disk file is larger than a single media, or if
|
||||||
it exceeds the traditional limit of 2 GiB - 1 for old operating systems,
|
it exceeds the traditional limit of 2 GiB - 1 for old operating systems,
|
||||||
or the limit of 4 GiB - 1 for newer ones. Only the newest Linux kernels
|
or the limit of 4 GiB - 1 for newer ones.
|
||||||
seem to read properly files >= 4 GiB - 1.
|
|
||||||
.br
|
.br
|
||||||
A clumsy remedy for this limit is to backup file pieces and to concatenate
|
A clumsy remedy for this limit is to backup file pieces and to concatenate
|
||||||
them at restore time. A well tested chopping size is 2047m.
|
them at restore time. A well tested chopping size is 2047m.
|
||||||
@ -950,9 +940,8 @@ E.g.:
|
|||||||
.br
|
.br
|
||||||
"report_lba" prints files which are associated to image data blocks.
|
"report_lba" prints files which are associated to image data blocks.
|
||||||
It tells the logical block address, the block number, the byte size,
|
It tells the logical block address, the block number, the byte size,
|
||||||
and the path of each file. There may be reported more than one
|
and the path of each file. In future there may be reported more than one
|
||||||
line per file if the file is very large. In this case each line has a
|
line per file if the file is very large.
|
||||||
different extent number in column "xt".
|
|
||||||
.br
|
.br
|
||||||
E.g.:
|
E.g.:
|
||||||
.br
|
.br
|
||||||
@ -975,6 +964,10 @@ other file causes a FAILURE event.
|
|||||||
\fB\-rmdir\fR iso_rr_path [***]
|
\fB\-rmdir\fR iso_rr_path [***]
|
||||||
Delete empty directories.
|
Delete empty directories.
|
||||||
.TP
|
.TP
|
||||||
|
\fB\-\-\fR
|
||||||
|
.br
|
||||||
|
Mark end of particular action argument list.
|
||||||
|
.TP
|
||||||
\fB\-rollback\fR
|
\fB\-rollback\fR
|
||||||
Discard the manipulated ISO image and reload it from -indev.
|
Discard the manipulated ISO image and reload it from -indev.
|
||||||
.TP
|
.TP
|
||||||
@ -1099,22 +1092,6 @@ Smaller format size with DVD-RAM or BD-RE means more reserve space.
|
|||||||
.TP
|
.TP
|
||||||
.B Settings for data insertion:
|
.B Settings for data insertion:
|
||||||
.TP
|
.TP
|
||||||
\fB\-file_size_limit\fR value [value [...]] --
|
|
||||||
Set the maximum permissible size for a single data file. The values get
|
|
||||||
summed up for the actual limit. If the only value is "off" then the file
|
|
||||||
size is not limited by xorriso. Default is a limit of 100 extents, 4g -2k each:
|
|
||||||
.br
|
|
||||||
-file_size_limit 400g -200k --
|
|
||||||
.br
|
|
||||||
When mounting ISO 9660 filesystems, old operating systems can handle only files
|
|
||||||
up to 2g -1 --. Newer ones are good up to 4g -1 --.
|
|
||||||
You need quite a new Linux kernel to read correctly the final bytes
|
|
||||||
of a file >= 4g if its size is not aligned to 2048 byte blocks.
|
|
||||||
.br
|
|
||||||
xorriso's own data read capabilities are not affected by eventual
|
|
||||||
operating system size limits. They apply to mounting only. Nevertheless,
|
|
||||||
the target filesystem of an -extract must be able to take the file size.
|
|
||||||
.TP
|
|
||||||
\fB\-not_mgt\fR code[:code[...]]
|
\fB\-not_mgt\fR code[:code[...]]
|
||||||
Control the behavior of the exclusion lists.
|
Control the behavior of the exclusion lists.
|
||||||
.br
|
.br
|
||||||
@ -1251,15 +1228,12 @@ target file objects on disk as well, but "on" is downgraded to "nondir".
|
|||||||
\fB\-split_size\fR number["k"|"m"]
|
\fB\-split_size\fR number["k"|"m"]
|
||||||
Set the threshold for automatic splitting of regular files. Such splitting
|
Set the threshold for automatic splitting of regular files. Such splitting
|
||||||
maps a large disk file onto a ISO directory with several part files in it.
|
maps a large disk file onto a ISO directory with several part files in it.
|
||||||
This is necessary if the size of the disk file exceeds -file_size_limit.
|
This is necessary if the size of the disk file exceeds 4 GiB - 1.
|
||||||
Older operating systems can handle files in mounted ISO 9660 filesystems
|
Older operating systems can handle files only if they are smaller than 2 GiB.
|
||||||
only if they are smaller than 2 GiB resp. 4 GiB.
|
|
||||||
See also option -cut_out for more information about file parts.
|
See also option -cut_out for more information about file parts.
|
||||||
.br
|
.br
|
||||||
Default is 0 which will exclude files larger than -file_size_limit by a
|
Default is 0 which will exclude files >= 4 GiB by a FAILURE event.
|
||||||
FAILURE event.
|
A well tested -split_size is 2047m. Sizes of 4 GiB or more are not permissible.
|
||||||
A well tested -split_size is 2047m. Sizes above -file_size_limit are not
|
|
||||||
permissible.
|
|
||||||
.TP
|
.TP
|
||||||
.B Settings for result writing:
|
.B Settings for result writing:
|
||||||
.TP
|
.TP
|
||||||
@ -1288,10 +1262,6 @@ Consider this when setting -volid "ISOIMAGE" before executing -dev, -indev,
|
|||||||
or -rollback.
|
or -rollback.
|
||||||
If you insist in -volid "ISOIMAGE", set it again after those commands.
|
If you insist in -volid "ISOIMAGE", set it again after those commands.
|
||||||
.TP
|
.TP
|
||||||
\fB\-publisher\fR text
|
|
||||||
Set the publisher string to be written with the next -commit. Permissible
|
|
||||||
are up to 128 characters.
|
|
||||||
.TP
|
|
||||||
\fB\-uid\fR uid
|
\fB\-uid\fR uid
|
||||||
User id to be used for all files when the new ISO tree gets written to media.
|
User id to be used for all files when the new ISO tree gets written to media.
|
||||||
.TP
|
.TP
|
||||||
@ -1320,7 +1290,7 @@ for their own decision.
|
|||||||
.TP
|
.TP
|
||||||
\fB\-stream_recording\fR "on"|"off"
|
\fB\-stream_recording\fR "on"|"off"
|
||||||
Setting "on" tries to circumvent the management of defects on DVD-RAM and
|
Setting "on" tries to circumvent the management of defects on DVD-RAM and
|
||||||
BD-RE. Defect management keeps partly damaged media usable. But it reduces
|
DVD+RW. Defect management keeps partly damaged media usable. But it reduces
|
||||||
write speed to half nominal speed even if the media is in perfect shape.
|
write speed to half nominal speed even if the media is in perfect shape.
|
||||||
For the case of flawless media, one may use -stream_recording "on" to get
|
For the case of flawless media, one may use -stream_recording "on" to get
|
||||||
full speed.
|
full speed.
|
||||||
@ -1475,13 +1445,10 @@ It issues an own FAILURE event.
|
|||||||
"fatal" acts like "failure" but issues the own event as FATAL.
|
"fatal" acts like "failure" but issues the own event as FATAL.
|
||||||
This is the default.
|
This is the default.
|
||||||
.br
|
.br
|
||||||
With occasion "file_extraction" there are three behaviors:
|
With occasion "file_extraction" there are two behaviors:
|
||||||
.br
|
.br
|
||||||
"keep" maintains incompletely extracted files on disk. This is the default.
|
"keep" maintains incompletely extracted files on disk. "delete" removes
|
||||||
.br
|
files which encountered errors during content extraction.
|
||||||
"delete" removes files which encountered errors during content extraction.
|
|
||||||
.br
|
|
||||||
"best_effort" starts a revovery attempt by means of -extract_cut.
|
|
||||||
.TP
|
.TP
|
||||||
.B Dialog mode control:
|
.B Dialog mode control:
|
||||||
.TP
|
.TP
|
||||||
@ -1744,25 +1711,9 @@ Try to read data blocks from the indev drive, eventually copy them to a
|
|||||||
disk file, and finally report about the encountered quality. Several options
|
disk file, and finally report about the encountered quality. Several options
|
||||||
may be used to modify the default behavior.
|
may be used to modify the default behavior.
|
||||||
.br
|
.br
|
||||||
The options given with this command override the default settings which
|
An option consists of a keyword, a "=" character, and a value.
|
||||||
may have been changed by option -check_media_defaults. See there for a
|
|
||||||
description of options.
|
|
||||||
.br
|
.br
|
||||||
The result list tells intervals of 2 KiB blocks with start address, number
|
Default is:
|
||||||
of blocks and quality. Qualities which begin with "+" are
|
|
||||||
supposed to be valid readable data. Qualities with "-" are no valid data.
|
|
||||||
.br
|
|
||||||
Alternatively it is possible to report damaged files rather than blocks.
|
|
||||||
.TP
|
|
||||||
\fB\-check_media_defaults\fR [option [option ...]] --
|
|
||||||
Preset options for runs of -check_media, -extract_cut and best_effort
|
|
||||||
file extraction. Eventual options given with -check_media will override the
|
|
||||||
preset options. -extract_cut will override some options automatically.
|
|
||||||
.br
|
|
||||||
An option consists of a keyword, a "=" character, and a value. Options
|
|
||||||
may override each other. So their sequence matters.
|
|
||||||
.br
|
|
||||||
The default setting at program start is:
|
|
||||||
.br
|
.br
|
||||||
use=indev what=tracks min_lba=-1 max_lba=-1 retry=default
|
use=indev what=tracks min_lba=-1 max_lba=-1 retry=default
|
||||||
time_limit=28800 item_limit=100000
|
time_limit=28800 item_limit=100000
|
||||||
@ -1771,14 +1722,7 @@ abort_file=/var/opt/xorriso/do_abort_check_media
|
|||||||
.br
|
.br
|
||||||
data_to='' sector_map='' map_with_volid=off patch_lba0=off report=blocks
|
data_to='' sector_map='' map_with_volid=off patch_lba0=off report=blocks
|
||||||
.br
|
.br
|
||||||
Option "reset=now" restores these startup defaults.
|
Non-default settings:
|
||||||
.br
|
|
||||||
Non-default options are:
|
|
||||||
.br
|
|
||||||
"report=files" lists the files which use damaged blocks (not with use=outdev).
|
|
||||||
The format is like with find -exec report_damage.
|
|
||||||
.br
|
|
||||||
"report=blocks_files" first lists damaged blocks and then affected files.
|
|
||||||
.br
|
.br
|
||||||
"use=outdev" reads from the output drive instead of the input drive. This
|
"use=outdev" reads from the output drive instead of the input drive. This
|
||||||
avoids loading the ISO image tree from media.
|
avoids loading the ISO image tree from media.
|
||||||
@ -1837,6 +1781,15 @@ have an -indev and a loaded image. ":force" may be appended after the number.
|
|||||||
.br
|
.br
|
||||||
"use=sector_map" does not read any media but loads the file given by option
|
"use=sector_map" does not read any media but loads the file given by option
|
||||||
sector_map= and processes this virtual outcome.
|
sector_map= and processes this virtual outcome.
|
||||||
|
.br
|
||||||
|
The result list tells intervals of 2 KiB blocks with start address, number
|
||||||
|
of blocks and quality. Qualities which begin with "+" are
|
||||||
|
supposed to be valid readable data. Qualities with "-" are no valid data.
|
||||||
|
.br
|
||||||
|
"report=files" lists the files which use damaged blocks (not with use=outdev).
|
||||||
|
The format is like with find -exec report_damage.
|
||||||
|
.br
|
||||||
|
"report=blocks_files" first lists damaged blocks and then affected files.
|
||||||
.TP
|
.TP
|
||||||
.B osirrox restore options:
|
.B osirrox restore options:
|
||||||
.PP
|
.PP
|
||||||
@ -1901,21 +1854,6 @@ restored.
|
|||||||
Performs -extract with each of the iso_rr_path arguments. disk_path will be
|
Performs -extract with each of the iso_rr_path arguments. disk_path will be
|
||||||
composed from iso_rr_path by replacing iso_rr_prefix by disk_prefix.
|
composed from iso_rr_path by replacing iso_rr_prefix by disk_prefix.
|
||||||
.TP
|
.TP
|
||||||
\fB\-extract_cut\fR iso_rr_path byte_offset byte_count disk_path
|
|
||||||
Copy a byte interval from a data file out of an ISO image into a newly created
|
|
||||||
disk file.
|
|
||||||
Two restrictions apply:
|
|
||||||
.br
|
|
||||||
The data bytes of iso_rr_path need to be already stored in the loaded ISO image
|
|
||||||
and byte_offset must be a multiple of 2048, e.g. an integer with suffix
|
|
||||||
s, m, or g.
|
|
||||||
.br
|
|
||||||
This option is implemented by a special run of -check_media and governed by
|
|
||||||
most of the options which can be set by -check_media_defaults.
|
|
||||||
Its main purpose is to allow handling of large files if they are not supported
|
|
||||||
by mount -t iso9660 and if the reading system is unable to buffer them as
|
|
||||||
a whole.
|
|
||||||
.TP
|
|
||||||
\fB\-cpx\fR iso_rr_path [***] disk_path
|
\fB\-cpx\fR iso_rr_path [***] disk_path
|
||||||
Extract single leaf file objects from the ISO image and store them under
|
Extract single leaf file objects from the ISO image and store them under
|
||||||
the address given by disk_path. If more then one iso_rr_path is given then
|
the address given by disk_path. If more then one iso_rr_path is given then
|
||||||
@ -2099,13 +2037,6 @@ if its start matches the filter text. No wildcards.
|
|||||||
\fB\-status_history_max\fR number
|
\fB\-status_history_max\fR number
|
||||||
Set maximum number of history lines to be reported with -status "long_history".
|
Set maximum number of history lines to be reported with -status "long_history".
|
||||||
.TP
|
.TP
|
||||||
\fB\-list_delimiter\fR word
|
|
||||||
Set the list delimiter to be used instead of "--". It has to be a single word,
|
|
||||||
must not be empty, not longer than 80 characters, and must not contain
|
|
||||||
quotation marks.
|
|
||||||
.br
|
|
||||||
For brevity the list delimiter is referred as "--" throughout this text.
|
|
||||||
.TP
|
|
||||||
\fB\-temp_mem_limit\fR number["k"|"m"]
|
\fB\-temp_mem_limit\fR number["k"|"m"]
|
||||||
Set the maximum size of temporary memory to be used for image dependent
|
Set the maximum size of temporary memory to be used for image dependent
|
||||||
buffering. Currently this applies to pattern expansion only.
|
buffering. Currently this applies to pattern expansion only.
|
||||||
@ -2206,7 +2137,7 @@ Manipulating an existing ISO image on the same media
|
|||||||
.br
|
.br
|
||||||
Copy modified ISO image from one media to another
|
Copy modified ISO image from one media to another
|
||||||
.br
|
.br
|
||||||
Operate on storage facilities other than optical drives
|
Write a ISO image into a pipe
|
||||||
.br
|
.br
|
||||||
Perform multi-session runs as of cdrtools traditions
|
Perform multi-session runs as of cdrtools traditions
|
||||||
.br
|
.br
|
||||||
@ -2358,17 +2289,7 @@ first and only session to the output drive.
|
|||||||
.br
|
.br
|
||||||
-commit -eject all
|
-commit -eject all
|
||||||
.SS
|
.SS
|
||||||
.B Operate on storage facilities other than optical drives
|
.B Write a ISO image into a pipe
|
||||||
Full read-write operation is possible with regular files and block devices:
|
|
||||||
.br
|
|
||||||
\fB$\fR xorriso -dev stdio:/tmp/regular_file ...
|
|
||||||
.br
|
|
||||||
Other writeable file types are supported write-only:
|
|
||||||
.br
|
|
||||||
\fB$\fR xorriso -outdev stdio:/tmp/named_pipe ...
|
|
||||||
.br
|
|
||||||
Among the write-only drives is standard output:
|
|
||||||
.br
|
|
||||||
\fB$\fR xorriso -outdev - \\
|
\fB$\fR xorriso -outdev - \\
|
||||||
.br
|
.br
|
||||||
...
|
...
|
||||||
@ -2498,8 +2419,7 @@ 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
|
DVD-R, DVD+R if the full backup leaves substantial remaining capacity
|
||||||
on media and if the expected changes are much smaller than the full backup.
|
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.
|
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
|
Another good reason 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
|
.br
|
||||||
With \fBmount\fR option \fB"sbsector="\fR it is possible to access the session
|
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
|
trees which represent the older backup versions. With CD media, Linux mount
|
||||||
|
File diff suppressed because it is too large
Load Diff
@ -305,10 +305,6 @@ int Xorriso_option_cdx(struct XorrisO *xorriso, char *disk_path, int flag);
|
|||||||
int Xorriso_option_check_media(struct XorrisO *xorriso,
|
int Xorriso_option_check_media(struct XorrisO *xorriso,
|
||||||
int argc, char **argv, int *idx, int flag);
|
int argc, char **argv, int *idx, int flag);
|
||||||
|
|
||||||
/* Option -check_media_defaults */
|
|
||||||
int Xorriso_option_check_media_defaults(struct XorrisO *xorriso,
|
|
||||||
int argc, char **argv, int *idx, int flag);
|
|
||||||
|
|
||||||
/* Option -chgrp alias -chgrpi , chgrp_r alias chgrpi */
|
/* Option -chgrp alias -chgrpi , chgrp_r alias chgrpi */
|
||||||
/* @param flag bit0=recursive (-chgrp_r)
|
/* @param flag bit0=recursive (-chgrp_r)
|
||||||
*/
|
*/
|
||||||
@ -414,10 +410,6 @@ int Xorriso_option_error_behavior(struct XorrisO *xorriso,
|
|||||||
int Xorriso_option_extract(struct XorrisO *xorriso, char *disk_path,
|
int Xorriso_option_extract(struct XorrisO *xorriso, char *disk_path,
|
||||||
char *iso_path, int flag);
|
char *iso_path, int flag);
|
||||||
|
|
||||||
/* Option -extract_cut */
|
|
||||||
int Xorriso_option_extract_cut(struct XorrisO *xorriso, char *iso_rr_path,
|
|
||||||
char *start, char *count, char *disk_path, int flag);
|
|
||||||
|
|
||||||
/* Option -follow */
|
/* Option -follow */
|
||||||
int Xorriso_option_follow(struct XorrisO *xorriso, char *mode, int flag);
|
int Xorriso_option_follow(struct XorrisO *xorriso, char *mode, int flag);
|
||||||
|
|
||||||
@ -451,10 +443,6 @@ int Xorriso_option_iso_rr_pattern(struct XorrisO *xorriso, char *mode,
|
|||||||
/* Option -joliet "on"|"off" */
|
/* Option -joliet "on"|"off" */
|
||||||
int Xorriso_option_joliet(struct XorrisO *xorriso, char *mode, int flag);
|
int Xorriso_option_joliet(struct XorrisO *xorriso, char *mode, int flag);
|
||||||
|
|
||||||
/* Option -list_delimiter */
|
|
||||||
int Xorriso_option_list_delimiter(struct XorrisO *xorriso, char *text,
|
|
||||||
int flag);
|
|
||||||
|
|
||||||
/* Option -list_formats */
|
/* Option -list_formats */
|
||||||
int Xorriso_option_list_formats(struct XorrisO *xorriso, int flag);
|
int Xorriso_option_list_formats(struct XorrisO *xorriso, int flag);
|
||||||
|
|
||||||
|
@ -63,12 +63,12 @@ GPL software included:<BR>
|
|||||||
<DT>libburn-0.5.3</DT>
|
<DT>libburn-0.5.3</DT>
|
||||||
<DD>reads and writes data from and to CD, DVD, BD-RE.</DD>
|
<DD>reads and writes data from and to CD, DVD, BD-RE.</DD>
|
||||||
<DD>(founded by Derek Foreman and Ben Jansens,
|
<DD>(founded by Derek Foreman and Ben Jansens,
|
||||||
developed and maintained since August 2006 by
|
furthered since August 2006 by
|
||||||
Thomas Schmitt from team of libburnia-project.org)</DD>
|
Thomas Schmitt from team of libburnia-project.org)</DD>
|
||||||
<DT>libisofs-0.6.8</DT>
|
<DT>libisofs-0.6.6</DT>
|
||||||
<DD>operates on ISO 9660 filesystem images.</DD>
|
<DD>operates on ISO 9660 filesystem images.</DD>
|
||||||
<DD>(By Vreixo Formoso and Mario Danic from team of libburnia-project.org)</DD>
|
<DD>(By Vreixo Formoso and Mario Danic from team of libburnia-project.org)</DD>
|
||||||
<DT>libisoburn-0.2.6</DT>
|
<DT>libisoburn-0.2.4</DT>
|
||||||
<DD>coordinates libburn and libisofs, emulates multi-session where needed.</DD>
|
<DD>coordinates libburn and libisofs, emulates multi-session where needed.</DD>
|
||||||
<DD>(By Vreixo Formoso and Thomas Schmitt
|
<DD>(By Vreixo Formoso and Thomas Schmitt
|
||||||
from team of libburnia-project.org)</DD>
|
from team of libburnia-project.org)</DD>
|
||||||
@ -141,11 +141,6 @@ Adjustable thresholds for abort, exit value, and problem reporting.
|
|||||||
<DL>
|
<DL>
|
||||||
<DT>Get an overview of drives and their addresses</DT>
|
<DT>Get an overview of drives and their addresses</DT>
|
||||||
<DD>#<KBD> xorriso -devices</KBD></DD>
|
<DD>#<KBD> xorriso -devices</KBD></DD>
|
||||||
<DD><KBD>...</KBD></DD>
|
|
||||||
<DD><KBD>0 -dev '/dev/sr0' rwrw-- : 'TSSTcorp' 'CDDVDW SH-S203B'</KBD></DD>
|
|
||||||
<DD><KBD>1 -dev '/dev/scd1' rwrw-- : 'PHILIPS ' 'SPD3300L'</KBD></DD>
|
|
||||||
<DD><KBD>2 -dev '/dev/hda' rwrw-- : 'HL-DT-ST' 'DVD-ROM GDR8162B'</KBD></DD>
|
|
||||||
<DD><KBD>...</KBD></DD>
|
|
||||||
<DT>Being superuser avoids permission problems with /dev/srN resp. /dev/hdX .
|
<DT>Being superuser avoids permission problems with /dev/srN resp. /dev/hdX .
|
||||||
</DT>
|
</DT>
|
||||||
<DT>Ordinary users should then get granted rw access to the /dev files
|
<DT>Ordinary users should then get granted rw access to the /dev files
|
||||||
@ -278,15 +273,6 @@ with ".o" or ".swp" which are excluded by options -not_leaf.
|
|||||||
<DT>
|
<DT>
|
||||||
<HR>
|
<HR>
|
||||||
</DT>
|
</DT>
|
||||||
<DT>ISO images may not only be stored on optical media but also in
|
|
||||||
regular disk files or block devices for full multi-session operation.
|
|
||||||
The prefix "stdio:" indicates that normal file operations are
|
|
||||||
desired rather than MMC drive commands:
|
|
||||||
</DT>
|
|
||||||
<DD>$<KBD> xorriso -dev stdio:/tmp/regular_file ...other.options...</DD>
|
|
||||||
|
|
||||||
<DT>Other file types are suitable only for writing but not for reading:</DT>
|
|
||||||
<DD>$<KBD> xorriso -outdev stdio:/tmp/named_pipe ...other.options...</DD>
|
|
||||||
|
|
||||||
<DT>In batch mode it is possible to operate xorriso in a pipeline
|
<DT>In batch mode it is possible to operate xorriso in a pipeline
|
||||||
with an external consumer of the generated ISO image. Any message
|
with an external consumer of the generated ISO image. Any message
|
||||||
@ -346,8 +332,8 @@ are interested in using BD-R media.
|
|||||||
<P>
|
<P>
|
||||||
<DL>
|
<DL>
|
||||||
<DT><H3>Download as source code (see README):</H3></DT>
|
<DT><H3>Download as source code (see README):</H3></DT>
|
||||||
<DD><A HREF="xorriso-0.2.6.pl00.tar.gz">xorriso-0.2.6.pl00.tar.gz</A>
|
<DD><A HREF="xorriso-0.2.4.pl00.tar.gz">xorriso-0.2.4.pl00.tar.gz</A>
|
||||||
(1050 KB).
|
(1040 KB).
|
||||||
</DD>
|
</DD>
|
||||||
</DL>
|
</DL>
|
||||||
</DD>
|
</DD>
|
||||||
@ -372,28 +358,29 @@ an <A HREF="http://www.opensource.org/">Open Source</A> approved license</DD>
|
|||||||
|
|
||||||
<HR>
|
<HR>
|
||||||
<P>
|
<P>
|
||||||
Bug fixes towards xorriso-0.2.4.pl00:
|
Bug fixes towards xorriso-0.2.2.pl01:
|
||||||
<UL>
|
<UL>
|
||||||
|
|
||||||
<LI>-format full did not re-format already formatted DVD+RW</LI>
|
|
||||||
|
|
||||||
<!--
|
|
||||||
<LI>- none -</LI>
|
<LI>- none -</LI>
|
||||||
-->
|
|
||||||
|
|
||||||
</UL>
|
</UL>
|
||||||
</P>
|
</P>
|
||||||
<P>
|
<P>
|
||||||
Enhancements towards previous stable version xorriso-0.2.4.pl00:
|
Enhancements towards previous stable version xorriso-0.2.2.pl01:
|
||||||
<UL>
|
<UL>
|
||||||
|
|
||||||
<LI>Capability to insert and extract files far larger than 4 GB</LI>
|
<LI>
|
||||||
<LI>New option -file_size_limit, -as mkisofs now supports -iso-level 1 to 3
|
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>
|
</LI>
|
||||||
<LI>New option -extract_cut to retrieve data from oversized files</LI>
|
|
||||||
<LI>New option -check_media_defaults</LI>
|
|
||||||
<LI>New -error_behavior "file_extraction" behavior "best_effort"</LI>
|
|
||||||
<LI>New option -list_delimiter</LI>
|
|
||||||
|
|
||||||
</UL>
|
</UL>
|
||||||
</P>
|
</P>
|
||||||
@ -402,15 +389,15 @@ Enhancements towards previous stable version xorriso-0.2.4.pl00:
|
|||||||
|
|
||||||
<P>
|
<P>
|
||||||
<DL>
|
<DL>
|
||||||
<DT><H3>Development snapshot, version 0.2.7 :</H3></DT>
|
<DT><H3>Development snapshot, version 0.2.5 :</H3></DT>
|
||||||
<DD>Bug fixes towards xorriso-0.2.6.pl00:
|
<DD>Bug fixes towards xorriso-0.2.4.pl00:
|
||||||
<UL>
|
<UL>
|
||||||
<LI>- none yet -</LI>
|
<LI>- none yet -</LI>
|
||||||
<!--
|
<!--
|
||||||
-->
|
-->
|
||||||
</UL>
|
</UL>
|
||||||
</DD>
|
</DD>
|
||||||
<DD>Enhancements towards stable version 0.2.6.pl00:
|
<DD>Enhancements towards stable version 0.2.4.pl00:
|
||||||
<UL>
|
<UL>
|
||||||
<LI>- none yet -</LI>
|
<LI>- none yet -</LI>
|
||||||
<!--
|
<!--
|
||||||
@ -418,9 +405,9 @@ Enhancements towards previous stable version xorriso-0.2.4.pl00:
|
|||||||
</UL>
|
</UL>
|
||||||
</DD>
|
</DD>
|
||||||
<DD> </DD>
|
<DD> </DD>
|
||||||
<DD><A HREF="README_xorriso_devel">README 0.2.7</A>
|
<DD><A HREF="README_xorriso_devel">README 0.2.5</A>
|
||||||
<DD><A HREF="xorriso_help_devel">xorriso_0.2.7 -help</A></DD>
|
<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.7)</A></DD>
|
<DD><A HREF="man_1_xorriso_devel.html">man xorriso (as of 0.2.5)</A></DD>
|
||||||
<DD> </DD>
|
<DD> </DD>
|
||||||
<DT>If you want to distribute development versions of xorriso, then use
|
<DT>If you want to distribute development versions of xorriso, then use
|
||||||
this tarball which produces static linking between xorriso and the
|
this tarball which produces static linking between xorriso and the
|
||||||
@ -430,8 +417,8 @@ libburnia libraries.
|
|||||||
installation see README)
|
installation see README)
|
||||||
</DD>
|
</DD>
|
||||||
<DD>
|
<DD>
|
||||||
<A HREF="xorriso-0.2.7.tar.gz">xorriso-0.2.7.tar.gz</A>
|
<A HREF="xorriso-0.2.5.tar.gz">xorriso-0.2.5.tar.gz</A>
|
||||||
(1050 KB).
|
(1040 KB).
|
||||||
</DD>
|
</DD>
|
||||||
<DT>A dynamically linked development version of xorriso can be obtained
|
<DT>A dynamically linked development version of xorriso can be obtained
|
||||||
from repositories of
|
from repositories of
|
||||||
|
@ -18,7 +18,7 @@
|
|||||||
#ifndef Xorriso_private_includeD
|
#ifndef Xorriso_private_includeD
|
||||||
#define Xorriso_private_includeD yes
|
#define Xorriso_private_includeD yes
|
||||||
|
|
||||||
#define Xorriso_program_versioN "0.2.6"
|
#define Xorriso_program_versioN "0.2.4"
|
||||||
|
|
||||||
/** The source code release timestamp */
|
/** The source code release timestamp */
|
||||||
#include "xorriso_timestamp.h"
|
#include "xorriso_timestamp.h"
|
||||||
@ -65,13 +65,6 @@ struct SectorbitmaP; /* Distiniction between valid and invalid sectors */
|
|||||||
#define Xorriso_rc_nuM 4
|
#define Xorriso_rc_nuM 4
|
||||||
|
|
||||||
|
|
||||||
/* Default setting for the size limit of single data files:
|
|
||||||
100 extents with 4 GB - 2 kB each = 400 GB - 200 kB
|
|
||||||
*/
|
|
||||||
#define Xorriso_default_file_size_limiT \
|
|
||||||
(((off_t) 400) * ((off_t) 1024*1024*1024) - (off_t) 204800)
|
|
||||||
|
|
||||||
|
|
||||||
struct XorrisO { /* the global context of xorriso */
|
struct XorrisO { /* the global context of xorriso */
|
||||||
|
|
||||||
int libs_are_started;
|
int libs_are_started;
|
||||||
@ -99,8 +92,6 @@ struct XorrisO { /* the global context of xorriso */
|
|||||||
int add_plainly;
|
int add_plainly;
|
||||||
off_t split_size;
|
off_t split_size;
|
||||||
|
|
||||||
char list_delimiter[81];
|
|
||||||
|
|
||||||
/* >>> put libisofs aspects here <<< */
|
/* >>> put libisofs aspects here <<< */
|
||||||
|
|
||||||
int do_joliet;
|
int do_joliet;
|
||||||
@ -160,7 +151,6 @@ struct XorrisO { /* the global context of xorriso */
|
|||||||
int volset_change_pending; /* whether -commit would make sense */
|
int volset_change_pending; /* whether -commit would make sense */
|
||||||
int no_volset_present; /* set to 1 on first failure */
|
int no_volset_present; /* set to 1 on first failure */
|
||||||
|
|
||||||
struct CheckmediajoB *check_media_default;
|
|
||||||
struct SectorbitmaP *in_sector_map; /* eventual sector validity bitmap */
|
struct SectorbitmaP *in_sector_map; /* eventual sector validity bitmap */
|
||||||
|
|
||||||
|
|
||||||
@ -225,8 +215,6 @@ struct XorrisO { /* the global context of xorriso */
|
|||||||
|
|
||||||
int temp_mem_limit;
|
int temp_mem_limit;
|
||||||
|
|
||||||
off_t file_size_limit;
|
|
||||||
|
|
||||||
struct ExclusionS *disk_exclusions;
|
struct ExclusionS *disk_exclusions;
|
||||||
int disk_excl_mode; /* bit0= on (else off)
|
int disk_excl_mode; /* bit0= on (else off)
|
||||||
bit1= parameter too (else rekursion only)
|
bit1= parameter too (else rekursion only)
|
||||||
@ -266,7 +254,7 @@ struct XorrisO { /* the global context of xorriso */
|
|||||||
FILE *errfile_fp;
|
FILE *errfile_fp;
|
||||||
|
|
||||||
int img_read_error_mode; /* 0=best_effort , 1=failure , 2=fatal */
|
int img_read_error_mode; /* 0=best_effort , 1=failure , 2=fatal */
|
||||||
int extract_error_mode; /* 0=best_effort , 1=keep , 2=delete */
|
int extract_error_mode; /* 0=(not yet: best_effort) , 1=keep , 2=delete */
|
||||||
|
|
||||||
char return_with_text[20];
|
char return_with_text[20];
|
||||||
int return_with_severity;
|
int return_with_severity;
|
||||||
@ -315,7 +303,7 @@ struct XorrisO { /* the global context of xorriso */
|
|||||||
struct PermiteM *perm_stack; /* Temporarily altered dir access permissions */
|
struct PermiteM *perm_stack; /* Temporarily altered dir access permissions */
|
||||||
|
|
||||||
/* result (stdout, R: ) */
|
/* result (stdout, R: ) */
|
||||||
char result_line[10*SfileadrL];
|
char result_line[5*SfileadrL];
|
||||||
int result_line_counter;
|
int result_line_counter;
|
||||||
int result_page_counter;
|
int result_page_counter;
|
||||||
int result_open_line_len;
|
int result_open_line_len;
|
||||||
@ -658,8 +646,6 @@ int Findjob_get_start_path(struct FindjoB *o, char **start_path, int flag);
|
|||||||
int Findjob_get_lba_damage_filter(struct FindjoB *o, int *start_lba,
|
int Findjob_get_lba_damage_filter(struct FindjoB *o, int *start_lba,
|
||||||
int *end_lba, int *damage_filter, int flag);
|
int *end_lba, int *damage_filter, int flag);
|
||||||
|
|
||||||
int Findjob_get_commit_filter(struct FindjoB *o, int *commit_filter, int flag);
|
|
||||||
|
|
||||||
|
|
||||||
struct SplitparT;
|
struct SplitparT;
|
||||||
|
|
||||||
@ -725,8 +711,6 @@ int Checkmediajob_new(struct CheckmediajoB **o, int flag);
|
|||||||
|
|
||||||
int Checkmediajob_destroy(struct CheckmediajoB **o, int flag);
|
int Checkmediajob_destroy(struct CheckmediajoB **o, int flag);
|
||||||
|
|
||||||
int Checkmediajob_copy(struct CheckmediajoB *from, struct CheckmediajoB *to,
|
|
||||||
int flag);
|
|
||||||
|
|
||||||
int Sectorbitmap_new(struct SectorbitmaP **o, int sectors, int sector_size,
|
int Sectorbitmap_new(struct SectorbitmaP **o, int sectors, int sector_size,
|
||||||
int flag);
|
int flag);
|
||||||
|
@ -1 +1 @@
|
|||||||
#define Xorriso_timestamP "2008.09.19.180001"
|
#define Xorriso_timestamP "2008.08.24.160001"
|
||||||
|
@ -74,13 +74,6 @@ int Xorriso_findi_iter(struct XorrisO *xorriso, IsoDir *dir_node, off_t *mem,
|
|||||||
IsoNode ***node_array, int *node_count, int *node_idx,
|
IsoNode ***node_array, int *node_count, int *node_idx,
|
||||||
IsoNode **iterated_node, int flag);
|
IsoNode **iterated_node, int flag);
|
||||||
|
|
||||||
int Xorriso__file_start_lba(IsoNode *node, int *lba, int flag);
|
|
||||||
|
|
||||||
int Xorriso_read_file_data(struct XorrisO *xorriso, IsoNode *node,
|
|
||||||
char *img_path, char *disk_path,
|
|
||||||
off_t img_offset, off_t disk_offset,
|
|
||||||
off_t bytes, int flag);
|
|
||||||
|
|
||||||
|
|
||||||
#define LIBISO_ISDIR(node) (iso_node_get_type(node) == LIBISO_DIR)
|
#define LIBISO_ISDIR(node) (iso_node_get_type(node) == LIBISO_DIR)
|
||||||
#define LIBISO_ISREG(node) (iso_node_get_type(node) == LIBISO_FILE)
|
#define LIBISO_ISREG(node) (iso_node_get_type(node) == LIBISO_FILE)
|
||||||
@ -426,7 +419,7 @@ int Xorriso_create_empty_iso(struct XorrisO *xorriso, int flag)
|
|||||||
*/
|
*/
|
||||||
int Xorriso_aquire_drive(struct XorrisO *xorriso, char *adr, int flag)
|
int Xorriso_aquire_drive(struct XorrisO *xorriso, char *adr, int flag)
|
||||||
{
|
{
|
||||||
int ret, hret, not_writeable= 0, has_what, aquire_flag, load_lba;
|
int ret, hret, not_writeable= 0, has_what, aquire_flag;
|
||||||
uint32_t size;
|
uint32_t size;
|
||||||
struct burn_drive_info *dinfo= NULL, *out_dinfo, *in_dinfo;
|
struct burn_drive_info *dinfo= NULL, *out_dinfo, *in_dinfo;
|
||||||
struct burn_drive *drive, *out_drive, *in_drive;
|
struct burn_drive *drive, *out_drive, *in_drive;
|
||||||
@ -522,7 +515,7 @@ int Xorriso_aquire_drive(struct XorrisO *xorriso, char *adr, int flag)
|
|||||||
{ret= -1; goto ex;}
|
{ret= -1; goto ex;}
|
||||||
if(state != BURN_DISC_BLANK && state != BURN_DISC_APPENDABLE) {
|
if(state != BURN_DISC_BLANK && state != BURN_DISC_APPENDABLE) {
|
||||||
sprintf(xorriso->info_text, "Disc status unsuitable for writing");
|
sprintf(xorriso->info_text, "Disc status unsuitable for writing");
|
||||||
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "NOTE", 0);
|
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "WARNING", 0);
|
||||||
not_writeable= 1;
|
not_writeable= 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -583,14 +576,6 @@ int Xorriso_aquire_drive(struct XorrisO *xorriso, char *adr, int flag)
|
|||||||
if(xorriso->img_read_error_mode>0)
|
if(xorriso->img_read_error_mode>0)
|
||||||
iso_set_abort_severity("SORRY");
|
iso_set_abort_severity("SORRY");
|
||||||
|
|
||||||
if(state != BURN_DISC_BLANK) {
|
|
||||||
ret= isoburn_disc_get_msc1(drive, &load_lba);
|
|
||||||
if(ret > 0) {
|
|
||||||
sprintf(xorriso->info_text,
|
|
||||||
"Loading ISO image tree from LBA %d", load_lba);
|
|
||||||
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "NOTE", 0);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
ret= isoburn_read_image(drive, ropts, &volset);
|
ret= isoburn_read_image(drive, ropts, &volset);
|
||||||
|
|
||||||
/* <<< Resetting to normal thresholds */
|
/* <<< Resetting to normal thresholds */
|
||||||
@ -905,10 +890,8 @@ int Xorriso_write_session(struct XorrisO *xorriso, int flag)
|
|||||||
}
|
}
|
||||||
|
|
||||||
ret= isoburn_igopt_new(&sopts, 0);
|
ret= isoburn_igopt_new(&sopts, 0);
|
||||||
if(ret<=0) {
|
if(ret<=0)
|
||||||
Xorriso_process_msg_queues(xorriso, 0);
|
|
||||||
return(ret);
|
return(ret);
|
||||||
}
|
|
||||||
relax= isoburn_igopt_allow_deep_paths;
|
relax= isoburn_igopt_allow_deep_paths;
|
||||||
|
|
||||||
/* Adjust or discard boot image */
|
/* Adjust or discard boot image */
|
||||||
@ -937,7 +920,7 @@ int Xorriso_write_session(struct XorrisO *xorriso, int flag)
|
|||||||
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "NOTE", 0);
|
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "NOTE", 0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
isoburn_igopt_set_level(sopts, 3);
|
isoburn_igopt_set_level(sopts, 2);
|
||||||
isoburn_igopt_set_extensions(sopts, 1|((!!xorriso->do_joliet)<<1));
|
isoburn_igopt_set_extensions(sopts, 1|((!!xorriso->do_joliet)<<1));
|
||||||
isoburn_igopt_set_relaxed(sopts, isoburn_igopt_allow_deep_paths);
|
isoburn_igopt_set_relaxed(sopts, isoburn_igopt_allow_deep_paths);
|
||||||
isoburn_igopt_set_sort_files(sopts, 1);
|
isoburn_igopt_set_sort_files(sopts, 1);
|
||||||
@ -979,17 +962,6 @@ int Xorriso_write_session(struct XorrisO *xorriso, int flag)
|
|||||||
ret= Xorriso_eval_problem_status(xorriso, 1, 0);
|
ret= Xorriso_eval_problem_status(xorriso, 1, 0);
|
||||||
if(ret<0)
|
if(ret<0)
|
||||||
{ret= 0; goto ex;}
|
{ret= 0; goto ex;}
|
||||||
|
|
||||||
/* >>> omit iso_image_update_sizes if the image was filled up very quickly */;
|
|
||||||
|
|
||||||
ret= iso_image_update_sizes(image);
|
|
||||||
if(ret < 0) {
|
|
||||||
Xorriso_process_msg_queues(xorriso, 0);
|
|
||||||
ret= Xorriso_eval_problem_status(xorriso, 1, 0);
|
|
||||||
if(ret<0)
|
|
||||||
{ret= 0; goto ex;}
|
|
||||||
}
|
|
||||||
|
|
||||||
Xorriso_set_abort_severity(xorriso, 1);
|
Xorriso_set_abort_severity(xorriso, 1);
|
||||||
if (xorriso->grow_blindly_msc2 >= 0 &&
|
if (xorriso->grow_blindly_msc2 >= 0 &&
|
||||||
xorriso->out_drive_handle != xorriso->in_drive_handle) {
|
xorriso->out_drive_handle != xorriso->in_drive_handle) {
|
||||||
@ -1218,7 +1190,7 @@ int Xorriso_pacifier_loop(struct XorrisO *xorriso, struct burn_drive *drive,
|
|||||||
next_base_count= progress.sector;
|
next_base_count= progress.sector;
|
||||||
}
|
}
|
||||||
if(first_base_time > 0 &&
|
if(first_base_time > 0 &&
|
||||||
current_time - first_base_time >= 10 &&
|
current_time - first_base_time >= 3 &&
|
||||||
progress.sectors > first_base_count) {
|
progress.sectors > first_base_count) {
|
||||||
norm= (1.0 - quot);
|
norm= (1.0 - quot);
|
||||||
if(norm < 0.0001)
|
if(norm < 0.0001)
|
||||||
@ -1232,7 +1204,7 @@ int Xorriso_pacifier_loop(struct XorrisO *xorriso, struct burn_drive *drive,
|
|||||||
norm= 1.0;
|
norm= 1.0;
|
||||||
}
|
}
|
||||||
if(base_time > 0 &&
|
if(base_time > 0 &&
|
||||||
current_time - base_time >= 10 && progress.sectors > base_count) {
|
current_time - base_time >= 3 && progress.sectors > base_count) {
|
||||||
quot= ((double) progress.sector - base_count)
|
quot= ((double) progress.sector - base_count)
|
||||||
/ ((double) progress.sectors - base_count);
|
/ ((double) progress.sectors - base_count);
|
||||||
time_prediction+= (1.0 - quot) / quot * (current_time - base_time);
|
time_prediction+= (1.0 - quot) / quot * (current_time - base_time);
|
||||||
@ -1268,7 +1240,7 @@ int Xorriso_pacifier_loop(struct XorrisO *xorriso, struct burn_drive *drive,
|
|||||||
current_time-start_time);
|
current_time-start_time);
|
||||||
else
|
else
|
||||||
sprintf(xorriso->info_text,
|
sprintf(xorriso->info_text,
|
||||||
"Thank you for being patient for %.f seconds",
|
"Thank you for being patient since %.f seconds",
|
||||||
current_time-start_time);
|
current_time-start_time);
|
||||||
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "UPDATE", 0);
|
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "UPDATE", 0);
|
||||||
|
|
||||||
@ -1277,8 +1249,6 @@ int Xorriso_pacifier_loop(struct XorrisO *xorriso, struct burn_drive *drive,
|
|||||||
if(aborting<=0)
|
if(aborting<=0)
|
||||||
aborting= Xorriso_check_burn_abort(xorriso, 0);
|
aborting= Xorriso_check_burn_abort(xorriso, 0);
|
||||||
usleep(100000);
|
usleep(100000);
|
||||||
if(((time_t) Sfile_microtime(0)) - ((time_t) current_time) >= 1)
|
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return(1);
|
return(1);
|
||||||
@ -1683,12 +1653,13 @@ int Xorriso_tree_graft_node(struct XorrisO *xorriso, IsoImage *volume,
|
|||||||
struct stat stbuf;
|
struct stat stbuf;
|
||||||
char sfe[5*SfileadrL];
|
char sfe[5*SfileadrL];
|
||||||
off_t size= 0;
|
off_t size= 0;
|
||||||
|
static off_t limit= ((off_t) 4) * ((off_t) 1024*1024*1024) - (off_t) 1;
|
||||||
|
|
||||||
if(flag&8) {
|
if(flag&8) {
|
||||||
if(cut_size > xorriso->file_size_limit && xorriso->file_size_limit > 0) {
|
if(cut_size > limit) {
|
||||||
sprintf(xorriso->info_text,
|
sprintf(xorriso->info_text,
|
||||||
"File piece exceeds size limit of %.f bytes: %.f from %s\n",
|
"File piece exceeds size limit of %.f bytes: %.f from %s\n",
|
||||||
(double) xorriso->file_size_limit, (double) cut_size,
|
(double) limit, (double) cut_size,
|
||||||
Text_shellsafe(disk_path, sfe, 0));
|
Text_shellsafe(disk_path, sfe, 0));
|
||||||
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "FAILURE", 0);
|
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "FAILURE", 0);
|
||||||
return(0);
|
return(0);
|
||||||
@ -1709,11 +1680,10 @@ int Xorriso_tree_graft_node(struct XorrisO *xorriso, IsoImage *volume,
|
|||||||
if(ret<=0)
|
if(ret<=0)
|
||||||
goto ex;
|
goto ex;
|
||||||
return(1);
|
return(1);
|
||||||
} else if(size > xorriso->file_size_limit && xorriso->file_size_limit > 0) {
|
} else if(size > limit) {
|
||||||
sprintf(xorriso->info_text,
|
sprintf(xorriso->info_text,
|
||||||
"File exceeds size limit of %.f bytes: %s\n",
|
"File exceeds size limit of %.f bytes: %s\n",
|
||||||
(double) xorriso->file_size_limit,
|
(double) limit, Text_shellsafe(disk_path, sfe, 0));
|
||||||
Text_shellsafe(disk_path, sfe, 0));
|
|
||||||
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "FAILURE", 0);
|
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "FAILURE", 0);
|
||||||
return(0);
|
return(0);
|
||||||
}
|
}
|
||||||
@ -2394,11 +2364,11 @@ int Xorriso_restore_is_identical(struct XorrisO *xorriso, void *in_node,
|
|||||||
unsigned int fs_id;
|
unsigned int fs_id;
|
||||||
dev_t dev_id;
|
dev_t dev_id;
|
||||||
ino_t ino_id;
|
ino_t ino_id;
|
||||||
|
uint32_t dummy;
|
||||||
IsoStream *stream;
|
IsoStream *stream;
|
||||||
IsoImage *volume;
|
IsoImage *volume;
|
||||||
IsoNode *node;
|
IsoNode *node;
|
||||||
struct stat stbuf;
|
struct stat stbuf;
|
||||||
int dummy;
|
|
||||||
|
|
||||||
memset(type_text, 0, 5);
|
memset(type_text, 0, 5);
|
||||||
if(!xorriso->volset_change_pending)
|
if(!xorriso->volset_change_pending)
|
||||||
@ -2413,11 +2383,10 @@ int Xorriso_restore_is_identical(struct XorrisO *xorriso, void *in_node,
|
|||||||
if(ret<=0)
|
if(ret<=0)
|
||||||
return(-1);
|
return(-1);
|
||||||
}
|
}
|
||||||
ret= Xorriso__file_start_lba(node, &dummy, 0);
|
|
||||||
if(ret != 0) {
|
ret= iso_node_get_old_image_lba(node, &dummy, 0);
|
||||||
Xorriso_process_msg_queues(xorriso, 0);
|
if(ret!=0)
|
||||||
return(0);
|
return(0);
|
||||||
}
|
|
||||||
if(!LIBISO_ISREG(node))
|
if(!LIBISO_ISREG(node))
|
||||||
return(0);
|
return(0);
|
||||||
stream= iso_file_get_stream((IsoFile *) node);
|
stream= iso_file_get_stream((IsoFile *) node);
|
||||||
@ -2592,7 +2561,7 @@ int Xorriso_tree_restore_node(struct XorrisO *xorriso, IsoNode *node,
|
|||||||
char *what= "[unknown filetype]", sfe[5*SfileadrL], sfe2[5*SfileadrL];
|
char *what= "[unknown filetype]", sfe[5*SfileadrL], sfe2[5*SfileadrL];
|
||||||
char buf[32*1024], type_text[5], temp_path[SfileadrL];
|
char buf[32*1024], type_text[5], temp_path[SfileadrL];
|
||||||
char *link_target, *open_path_pt= NULL;
|
char *link_target, *open_path_pt= NULL;
|
||||||
off_t todo= 0, size, seek_ret, last_p_count= 0, already_done;
|
off_t todo, size, seek_ret, last_p_count= 0;
|
||||||
void *data_stream= NULL;
|
void *data_stream= NULL;
|
||||||
mode_t mode;
|
mode_t mode;
|
||||||
dev_t dev= 0;
|
dev_t dev= 0;
|
||||||
@ -2670,32 +2639,8 @@ int Xorriso_tree_restore_node(struct XorrisO *xorriso, IsoNode *node,
|
|||||||
if(wanted>todo)
|
if(wanted>todo)
|
||||||
wanted= todo;
|
wanted= todo;
|
||||||
ret= Xorriso_iso_file_read(xorriso, data_stream, buf, wanted, 0);
|
ret= Xorriso_iso_file_read(xorriso, data_stream, buf, wanted, 0);
|
||||||
if(ret<=0) {
|
if(ret<=0)
|
||||||
if(xorriso->extract_error_mode == 0) {
|
|
||||||
close(write_fd);
|
|
||||||
write_fd= -1;
|
|
||||||
already_done= (size - todo) / (off_t) 2048;
|
|
||||||
already_done*= (off_t) 2048;
|
|
||||||
sprintf(xorriso->info_text,
|
|
||||||
"Starting best_effort handling on ISO file %s at byte %.f",
|
|
||||||
Text_shellsafe(img_path, sfe, 0), (double) already_done);
|
|
||||||
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "NOTE", 0);
|
|
||||||
ret= Xorriso_read_file_data(xorriso, node, img_path, open_path_pt,
|
|
||||||
already_done, already_done, size - already_done, 2);
|
|
||||||
if(ret >= 0)
|
|
||||||
xorriso->pacifier_byte_count+= todo;
|
|
||||||
if(ret > 0)
|
|
||||||
todo= 0;
|
|
||||||
else
|
|
||||||
todo= -1;
|
|
||||||
}
|
|
||||||
if(ret <= 0) {
|
|
||||||
sprintf(xorriso->info_text, "Cannot read all bytes from ISO file %s",
|
|
||||||
Text_shellsafe(img_path, sfe, 0));
|
|
||||||
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "FAILURE", 0);
|
|
||||||
}
|
|
||||||
break;
|
break;
|
||||||
}
|
|
||||||
wret= write(write_fd, buf, ret);
|
wret= write(write_fd, buf, ret);
|
||||||
if(wret>=0) {
|
if(wret>=0) {
|
||||||
todo-= wret;
|
todo-= wret;
|
||||||
@ -2716,7 +2661,6 @@ int Xorriso_tree_restore_node(struct XorrisO *xorriso, IsoNode *node,
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if(write_fd > 0)
|
|
||||||
close(write_fd);
|
close(write_fd);
|
||||||
write_fd= -1;
|
write_fd= -1;
|
||||||
if(todo > 0 && xorriso->extract_error_mode == 2 && open_path_pt != NULL) {
|
if(todo > 0 && xorriso->extract_error_mode == 2 && open_path_pt != NULL) {
|
||||||
@ -2816,8 +2760,6 @@ restore_properties:;
|
|||||||
ret= 1;
|
ret= 1;
|
||||||
else
|
else
|
||||||
ret= Xorriso_restore_properties(xorriso, disk_path, node, flag&1);
|
ret= Xorriso_restore_properties(xorriso, disk_path, node, flag&1);
|
||||||
if(todo < 0)
|
|
||||||
ret= 0;
|
|
||||||
ex:;
|
ex:;
|
||||||
if(write_fd >= 0) {
|
if(write_fd >= 0) {
|
||||||
close(write_fd);
|
close(write_fd);
|
||||||
@ -3686,17 +3628,8 @@ int Xorriso_toc(struct XorrisO *xorriso, int flag)
|
|||||||
}
|
}
|
||||||
if(flag&(1|4))
|
if(flag&(1|4))
|
||||||
ret= 0;
|
ret= 0;
|
||||||
else {
|
else
|
||||||
ret= isoburn_read_iso_head(drive, lba, &image_blocks, volume_id, 1);
|
ret= isoburn_read_iso_head(drive, lba, &image_blocks, volume_id, 1);
|
||||||
if(image_blocks > track_size) {
|
|
||||||
sprintf(xorriso->info_text,
|
|
||||||
"Session %d bears ISO image size %ds larger than track size %ds",
|
|
||||||
session_no + 1, image_blocks, track_size);
|
|
||||||
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "WARNING",
|
|
||||||
0);
|
|
||||||
image_blocks= track_size;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if(ret>0 && track_no==0) {
|
if(ret>0 && track_no==0) {
|
||||||
sprintf(respt, "ISO session : %3d , %9d , %9ds , %s\n",
|
sprintf(respt, "ISO session : %3d , %9d , %9ds , %s\n",
|
||||||
session_no+1, lba, image_blocks , volume_id);
|
session_no+1, lba, image_blocks , volume_id);
|
||||||
@ -4055,8 +3988,6 @@ int Xorriso_format_media(struct XorrisO *xorriso, int flag)
|
|||||||
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "NOTE", 0);
|
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "NOTE", 0);
|
||||||
return(0);
|
return(0);
|
||||||
}
|
}
|
||||||
if(!(flag & 1))
|
|
||||||
mode_flag|= 16; /* enable re-formatting */
|
|
||||||
|
|
||||||
if(xorriso->do_dummy) {
|
if(xorriso->do_dummy) {
|
||||||
sprintf(xorriso->info_text, "-dummy mode prevents formatting of media.");
|
sprintf(xorriso->info_text, "-dummy mode prevents formatting of media.");
|
||||||
@ -4228,13 +4159,13 @@ int Xorriso_cannot_create_iter(struct XorrisO *xorriso, int iso_error,int flag)
|
|||||||
|
|
||||||
int Xorriso__node_lba_cmp(const void *node1, const void *node2)
|
int Xorriso__node_lba_cmp(const void *node1, const void *node2)
|
||||||
{
|
{
|
||||||
|
uint32_t lba1= 0, lba2= 0;
|
||||||
int ret;
|
int ret;
|
||||||
int lba1= 0, lba2= 0;
|
|
||||||
|
|
||||||
ret= Xorriso__file_start_lba(*((IsoNode **) node1), &lba1, 0);
|
ret = iso_node_get_old_image_lba(*((IsoNode **) node1), &lba1, 0);
|
||||||
if(ret!=1)
|
if(ret!=1)
|
||||||
lba1= 0;
|
lba1= 0;
|
||||||
ret= Xorriso__file_start_lba(*((IsoNode **) node2), &lba2, 0);
|
ret = iso_node_get_old_image_lba(*((IsoNode **) node2), &lba2, 0);
|
||||||
if(ret!=1)
|
if(ret!=1)
|
||||||
lba2= 0;
|
lba2= 0;
|
||||||
return(lba1-lba2);
|
return(lba1-lba2);
|
||||||
@ -5610,73 +5541,25 @@ int Xorriso_set_time(struct XorrisO *xorriso, char *in_path, time_t t,
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
int Xorriso__start_end_lbas(IsoNode *node,
|
int Xorriso_start_end_lba(struct XorrisO *xorriso, IsoNode *node,
|
||||||
int *lba_count, int **start_lbas, int **end_lbas,
|
int *start_lba, int *end_lba, off_t *size, int flag)
|
||||||
off_t *size, int flag)
|
|
||||||
{
|
{
|
||||||
int section_count= 0, ret, i;
|
uint32_t iso_start_lba;
|
||||||
struct iso_file_section *sections= NULL;
|
int ret;
|
||||||
|
|
||||||
*lba_count= 0;
|
|
||||||
*start_lbas= *end_lbas= NULL;
|
|
||||||
*size= 0;
|
*size= 0;
|
||||||
if(!LIBISO_ISREG(node))
|
*start_lba= *end_lba= -1;
|
||||||
return(0);
|
ret= iso_node_get_old_image_lba(node, &iso_start_lba, 0);
|
||||||
*size= iso_file_get_size((IsoFile *) node);
|
|
||||||
ret= iso_file_get_old_image_sections((IsoFile *) node, §ion_count,
|
|
||||||
§ions, 0);
|
|
||||||
if(ret < 0)
|
if(ret < 0)
|
||||||
{ret= -1; goto ex;}
|
return(-1);
|
||||||
if(ret != 1 || section_count <= 0)
|
if(ret != 1)
|
||||||
{ret= 0; goto ex;}
|
|
||||||
*start_lbas= calloc(section_count, sizeof(int));
|
|
||||||
*end_lbas= calloc(section_count, sizeof(int));
|
|
||||||
if(*start_lbas == NULL || *end_lbas == NULL)
|
|
||||||
{ret= -1; goto ex;}
|
|
||||||
for(i= 0; i < section_count; i++) {
|
|
||||||
(*start_lbas)[i]= sections[i].block;
|
|
||||||
(*end_lbas)[i]= sections[i].block + sections[i].size / 2048 - 1;
|
|
||||||
if(sections[i].size % 2048)
|
|
||||||
(*end_lbas)[i]++;
|
|
||||||
}
|
|
||||||
*lba_count= section_count;
|
|
||||||
ret= 1;
|
|
||||||
ex:;
|
|
||||||
if(sections != NULL)
|
|
||||||
free((char *) sections);
|
|
||||||
if(ret <= 0) {
|
|
||||||
if((*start_lbas) != NULL)
|
|
||||||
free((char *) *start_lbas);
|
|
||||||
if((*end_lbas) != NULL)
|
|
||||||
free((char *) *end_lbas);
|
|
||||||
*start_lbas= *end_lbas= NULL;
|
|
||||||
*lba_count= 0;
|
|
||||||
}
|
|
||||||
return(ret);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
int Xorriso__file_start_lba(IsoNode *node,
|
|
||||||
int *lba, int flag)
|
|
||||||
{
|
|
||||||
int *start_lbas= NULL, *end_lbas= NULL, lba_count= 0, i, ret;
|
|
||||||
off_t size;
|
|
||||||
|
|
||||||
*lba= -1;
|
|
||||||
ret= Xorriso__start_end_lbas(node, &lba_count, &start_lbas, &end_lbas,
|
|
||||||
&size, 0);
|
|
||||||
if(ret <= 0)
|
|
||||||
return(ret);
|
|
||||||
for(i= 0; i < lba_count; i++) {
|
|
||||||
if(*lba < 0 || start_lbas[i] < *lba)
|
|
||||||
*lba= start_lbas[i];
|
|
||||||
}
|
|
||||||
if(start_lbas != NULL)
|
|
||||||
free((char *) start_lbas);
|
|
||||||
if(end_lbas != NULL)
|
|
||||||
free((char *) end_lbas);
|
|
||||||
if(*lba < 0)
|
|
||||||
return(0);
|
return(0);
|
||||||
|
*start_lba= iso_start_lba;
|
||||||
|
if(LIBISO_ISREG(node))
|
||||||
|
*size= iso_file_get_size((IsoFile *) node);
|
||||||
|
*end_lba= *start_lba + *size / 2048;
|
||||||
|
if((*size % 2048) == 0 && *end_lba > *start_lba)
|
||||||
|
(*end_lba)--;
|
||||||
return(1);
|
return(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -5689,78 +5572,57 @@ int Xorriso_file_eval_damage(struct XorrisO *xorriso, IsoNode *node,
|
|||||||
off_t *damage_start, off_t *damage_end,
|
off_t *damage_start, off_t *damage_end,
|
||||||
int flag)
|
int flag)
|
||||||
{
|
{
|
||||||
int *start_lbas= NULL, *end_lbas= NULL, lba_count= 0, sect;
|
int start_lba, end_lba, i, sectors, sector_size, damaged= 0, ret;
|
||||||
int i, sectors, sector_size, ret;
|
int next_good_lba= -1, first_bad_lba= -1;
|
||||||
off_t sect_base= 0, size= 0, byte;
|
off_t size= 0;
|
||||||
struct SectorbitmaP *map;
|
struct SectorbitmaP *map;
|
||||||
|
|
||||||
*damage_start= *damage_end= -1;
|
*damage_start= *damage_end= -1;
|
||||||
map= xorriso->in_sector_map;
|
map= xorriso->in_sector_map;
|
||||||
if(map == NULL)
|
if(map == NULL)
|
||||||
return(0);
|
return(0);
|
||||||
|
|
||||||
|
ret= Xorriso_start_end_lba(xorriso, node, &start_lba, &end_lba, &size, 0);
|
||||||
|
if(ret <= 0)
|
||||||
|
return(ret);
|
||||||
Sectorbitmap_get_layout(map, §ors, §or_size, 0);
|
Sectorbitmap_get_layout(map, §ors, §or_size, 0);
|
||||||
sector_size/= 2048;
|
sector_size/= 2048;
|
||||||
|
for(i= start_lba; i <= end_lba; i+= sector_size)
|
||||||
ret= Xorriso__start_end_lbas(node, &lba_count, &start_lbas, &end_lbas,
|
|
||||||
&size, 0);
|
|
||||||
if(ret <= 0) {
|
|
||||||
Xorriso_process_msg_queues(xorriso, 0);
|
|
||||||
return(ret);
|
|
||||||
}
|
|
||||||
for(sect= 0; sect < lba_count; sect++) {
|
|
||||||
for(i= start_lbas[sect]; i <= end_lbas[sect]; i+= sector_size) {
|
|
||||||
if(Sectorbitmap_is_set(map, i / sector_size, 0) == 0) {
|
if(Sectorbitmap_is_set(map, i / sector_size, 0) == 0) {
|
||||||
byte= ((off_t) 2048) * ((off_t) (i - start_lbas[sect])) + sect_base;
|
damaged= 1;
|
||||||
if(*damage_start < 0 || byte < *damage_start)
|
if(first_bad_lba < 0)
|
||||||
*damage_start= byte;
|
first_bad_lba= i;
|
||||||
if(byte + (off_t) 2048 > *damage_end)
|
next_good_lba= (i / sector_size + 1) * sector_size;
|
||||||
*damage_end= byte + (off_t) 2048;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
sect_base+= ((off_t) 2048) *
|
|
||||||
((off_t) (end_lbas[sect] - start_lbas[sect] + 1));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if(damaged) {
|
||||||
|
*damage_start= (first_bad_lba - start_lba) * 2048;
|
||||||
|
*damage_end= (next_good_lba - start_lba) * 2048;
|
||||||
if(*damage_end > size)
|
if(*damage_end > size)
|
||||||
*damage_end= size;
|
*damage_end= size;
|
||||||
if(start_lbas != NULL)
|
|
||||||
free((char *) start_lbas);
|
|
||||||
if(end_lbas != NULL)
|
|
||||||
free((char *) end_lbas);
|
|
||||||
if(*damage_start < 0)
|
|
||||||
return(0);
|
|
||||||
return(1);
|
return(1);
|
||||||
}
|
}
|
||||||
|
return(0);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
int Xorriso_report_lba(struct XorrisO *xorriso, char *show_path,
|
int Xorriso_report_lba(struct XorrisO *xorriso, char *show_path,
|
||||||
IsoNode *node, int flag)
|
IsoNode *node, int flag)
|
||||||
{
|
{
|
||||||
int ret, *start_lbas= NULL, *end_lbas= NULL, lba_count, i;
|
int ret, start_lba, end_lba;
|
||||||
off_t size;
|
off_t size;
|
||||||
char sfe[5*SfileadrL];
|
char sfe[5*SfileadrL];
|
||||||
|
|
||||||
ret= Xorriso__start_end_lbas(node, &lba_count, &start_lbas, &end_lbas,
|
ret= Xorriso_start_end_lba(xorriso, node, &start_lba, &end_lba, &size, 0);
|
||||||
&size, 0);
|
if(ret < 0)
|
||||||
if(ret < 0) {
|
return(ret);
|
||||||
Xorriso_process_msg_queues(xorriso, 0);
|
|
||||||
{ret= -1; goto ex;}
|
|
||||||
}
|
|
||||||
if(ret == 0)
|
if(ret == 0)
|
||||||
{ret= 1; goto ex;} /* it is ok to ignore other types */
|
return(1); /* it is ok to ignore other types */
|
||||||
for(i= 0; i < lba_count; i++) {
|
sprintf(xorriso->result_line, "File data lba: %2d , %8d , %8d , %8.f , %s\n",
|
||||||
sprintf(xorriso->result_line,
|
0, start_lba, end_lba + 1 - start_lba, (double) size,
|
||||||
"File data lba: %2d , %8d , %8d , %8.f , %s\n",
|
|
||||||
i, start_lbas[i], end_lbas[i] + 1 - start_lbas[i], (double) size,
|
|
||||||
Text_shellsafe(show_path, sfe, 0));
|
Text_shellsafe(show_path, sfe, 0));
|
||||||
Xorriso_result(xorriso, 0);
|
Xorriso_result(xorriso, 0);
|
||||||
}
|
return(1);
|
||||||
ret= 1;
|
|
||||||
ex:;
|
|
||||||
if(start_lbas != NULL)
|
|
||||||
free((char *) start_lbas);
|
|
||||||
if(end_lbas != NULL)
|
|
||||||
free((char *) end_lbas);
|
|
||||||
return(ret);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -5883,9 +5745,8 @@ int Xorriso_findi_test(struct XorrisO *xorriso, struct FindjoB *job,
|
|||||||
struct stat *boss_stbuf, struct stat *stbuf,
|
struct stat *boss_stbuf, struct stat *stbuf,
|
||||||
int depth, int flag)
|
int depth, int flag)
|
||||||
{
|
{
|
||||||
int ret, start_lba, end_lba, damage_filter, commit_filter, lba;
|
int ret, start_lba, end_lba, damage_filter, file_end_lba, file_start_lba;
|
||||||
off_t damage_start, damage_end, size;
|
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, 0);
|
||||||
if(ret<=0)
|
if(ret<=0)
|
||||||
@ -5899,33 +5760,16 @@ int Xorriso_findi_test(struct XorrisO *xorriso, struct FindjoB *job,
|
|||||||
if((damage_filter > 0) != (ret > 0))
|
if((damage_filter > 0) != (ret > 0))
|
||||||
return(0);
|
return(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
if(start_lba >= 0 && end_lba >= 0) {
|
if(start_lba >= 0 && end_lba >= 0) {
|
||||||
ret= Xorriso__start_end_lbas(node, &lba_count,
|
ret= Xorriso_start_end_lba(xorriso, node, &file_start_lba, &file_end_lba,
|
||||||
&file_start_lbas, &file_end_lbas, &size, 0);
|
&size, 0);
|
||||||
if(ret <= 0) {
|
if(ret <= 0)
|
||||||
Xorriso_process_msg_queues(xorriso, 0);
|
|
||||||
goto ex;
|
|
||||||
}
|
|
||||||
for(i= 0; i < lba_count; i++) {
|
|
||||||
if(file_end_lbas[i] < start_lba || file_start_lbas[i] > end_lba)
|
|
||||||
{ret= 0; goto ex;}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
Findjob_get_commit_filter(job, &commit_filter, 0);
|
|
||||||
if(commit_filter & 1) { /* -pending_data */
|
|
||||||
if(!LIBISO_ISREG(node))
|
|
||||||
{ret= 0; goto ex;}
|
|
||||||
ret= Xorriso__file_start_lba(node, &lba, 0);
|
|
||||||
if(ret > 0 && lba >= 0)
|
|
||||||
{ret= 0; goto ex;}
|
|
||||||
}
|
|
||||||
ret= 1;
|
|
||||||
ex:;
|
|
||||||
if(file_start_lbas != NULL)
|
|
||||||
free((char *) file_start_lbas);
|
|
||||||
if(file_end_lbas != NULL)
|
|
||||||
free((char *) file_end_lbas);
|
|
||||||
return(ret);
|
return(ret);
|
||||||
|
if(file_end_lba < start_lba || file_start_lba > end_lba)
|
||||||
|
return(0);
|
||||||
|
}
|
||||||
|
return(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -6583,7 +6427,7 @@ int Xorriso_burn_track(struct XorrisO *xorriso, off_t write_start_address,
|
|||||||
"Closed media with data detected. Need blank or appendable media.");
|
"Closed media with data detected. Need blank or appendable media.");
|
||||||
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "FAILURE", 0);
|
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "FAILURE", 0);
|
||||||
if(burn_disc_erasable(drive)) {
|
if(burn_disc_erasable(drive)) {
|
||||||
sprintf(xorriso->info_text, "Try -blank as_needed\n");
|
sprintf(xorriso->info_text, "Try --blank_fast\n");
|
||||||
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "HINT", 0);
|
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "HINT", 0);
|
||||||
}
|
}
|
||||||
} else if(disc_state == BURN_DISC_EMPTY) {
|
} else if(disc_state == BURN_DISC_EMPTY) {
|
||||||
@ -6779,6 +6623,13 @@ int Xorriso_iso_file_open(struct XorrisO *xorriso, char *pathname,
|
|||||||
IsoFile *filenode= NULL;
|
IsoFile *filenode= NULL;
|
||||||
IsoStream *iso_stream= NULL;
|
IsoStream *iso_stream= NULL;
|
||||||
|
|
||||||
|
/* for debugging
|
||||||
|
#define Libisofs_lba_tesT yes
|
||||||
|
*/
|
||||||
|
#ifdef Libisofs_lba_tesT
|
||||||
|
uint32_t lba;
|
||||||
|
#endif
|
||||||
|
|
||||||
*stream= NULL;
|
*stream= NULL;
|
||||||
if(flag&1) {
|
if(flag&1) {
|
||||||
node= (IsoNode *) node_pt;
|
node= (IsoNode *) node_pt;
|
||||||
@ -6794,6 +6645,13 @@ int Xorriso_iso_file_open(struct XorrisO *xorriso, char *pathname,
|
|||||||
return(0);
|
return(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef Libisofs_lba_tesT
|
||||||
|
ret = iso_node_get_old_image_lba(node, &lba, 0);
|
||||||
|
sprintf(xorriso->info_text, "%s : ret= %d , LBA= %lx",
|
||||||
|
pathname, ret, (unsigned long) lba);
|
||||||
|
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "DEBUG", 0);
|
||||||
|
#endif
|
||||||
|
|
||||||
filenode= (IsoFile *) node;
|
filenode= (IsoFile *) node;
|
||||||
iso_stream= iso_file_get_stream(filenode);
|
iso_stream= iso_file_get_stream(filenode);
|
||||||
if(iso_stream==NULL) {
|
if(iso_stream==NULL) {
|
||||||
@ -7050,7 +6908,6 @@ int Xorriso_msinfo(struct XorrisO *xorriso, int *msc1, int *msc2, int flag)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* @param flag bit0= this is a follow-up session (i.e. on CD: TAO)
|
/* @param flag bit0= this is a follow-up session (i.e. on CD: TAO)
|
||||||
bit1= no pacifier messages
|
|
||||||
@return <=0 error, 1= done, 2= aborted due to limit
|
@return <=0 error, 1= done, 2= aborted due to limit
|
||||||
*/
|
*/
|
||||||
int Xorriso_check_interval(struct XorrisO *xorriso, struct SpotlisT *spotlist,
|
int Xorriso_check_interval(struct XorrisO *xorriso, struct SpotlisT *spotlist,
|
||||||
@ -7066,7 +6923,7 @@ int Xorriso_check_interval(struct XorrisO *xorriso, struct SpotlisT *spotlist,
|
|||||||
struct burn_drive *drive;
|
struct burn_drive *drive;
|
||||||
struct burn_drive_info *dinfo;
|
struct burn_drive_info *dinfo;
|
||||||
char data[64*1024], sfe[5*SfileadrL];
|
char data[64*1024], sfe[5*SfileadrL];
|
||||||
off_t data_count, to_read, read_count= 0, write_amount;
|
off_t data_count, to_read;
|
||||||
double pre_read_time, post_read_time, time_diff, total_time_diff= 0;
|
double pre_read_time, post_read_time, time_diff, total_time_diff= 0;
|
||||||
double last_abort_file_time= 0;
|
double last_abort_file_time= 0;
|
||||||
struct stat stbuf;
|
struct stat stbuf;
|
||||||
@ -7219,17 +7076,9 @@ abort_check:;
|
|||||||
if(time_diff > 1.0 && i > 0)
|
if(time_diff > 1.0 && i > 0)
|
||||||
quality= Xorriso_read_quality_sloW;
|
quality= Xorriso_read_quality_sloW;
|
||||||
}
|
}
|
||||||
|
|
||||||
write_amount= data_count;
|
|
||||||
if(data_count > 0) {
|
if(data_count > 0) {
|
||||||
read_count+= data_count;
|
|
||||||
if(job->data_to_limit >= 0 && read_count > job->data_to_limit)
|
|
||||||
write_amount-= (read_count - job->data_to_limit);
|
|
||||||
}
|
|
||||||
if(write_amount > 0) {
|
|
||||||
if(job->data_to_fd >= 0) {
|
if(job->data_to_fd >= 0) {
|
||||||
ret= lseek(job->data_to_fd,
|
ret= lseek(job->data_to_fd, ((off_t) (i + from_lba)) * (off_t) 2048,
|
||||||
((off_t) (i + from_lba)) * (off_t) 2048 + job->data_to_offset,
|
|
||||||
SEEK_SET);
|
SEEK_SET);
|
||||||
if(ret == -1) {
|
if(ret == -1) {
|
||||||
failed_to_write:;
|
failed_to_write:;
|
||||||
@ -7240,7 +7089,7 @@ failed_to_write:;
|
|||||||
"FAILURE", 0);
|
"FAILURE", 0);
|
||||||
{ret= 0; goto ex;}
|
{ret= 0; goto ex;}
|
||||||
}
|
}
|
||||||
ret= write(job->data_to_fd, data, write_amount);
|
ret= write(job->data_to_fd, data, data_count);
|
||||||
if(ret == -1)
|
if(ret == -1)
|
||||||
goto failed_to_write;
|
goto failed_to_write;
|
||||||
}
|
}
|
||||||
@ -7256,14 +7105,11 @@ failed_to_write:;
|
|||||||
start_lba= i + from_lba;
|
start_lba= i + from_lba;
|
||||||
prev_quality= quality;
|
prev_quality= quality;
|
||||||
}
|
}
|
||||||
if(!(flag & 2)) {
|
|
||||||
xorriso->pacifier_count+= to_read;
|
xorriso->pacifier_count+= to_read;
|
||||||
if(post_read_time - xorriso->last_update_time >=
|
if(post_read_time - xorriso->last_update_time >= xorriso->pacifier_interval)
|
||||||
xorriso->pacifier_interval)
|
|
||||||
Xorriso_pacifier_callback(xorriso, "sectors examined",
|
Xorriso_pacifier_callback(xorriso, "sectors examined",
|
||||||
xorriso->pacifier_count, xorriso->pacifier_total, "", 0);
|
xorriso->pacifier_count, xorriso->pacifier_total, "", 0);
|
||||||
}
|
}
|
||||||
}
|
|
||||||
if(prev_quality >= 0) {
|
if(prev_quality >= 0) {
|
||||||
ret= Spotlist_add_item(spotlist, start_lba,
|
ret= Spotlist_add_item(spotlist, start_lba,
|
||||||
block_count + from_lba - start_lba, prev_quality, 0);
|
block_count + from_lba - start_lba, prev_quality, 0);
|
||||||
@ -7337,7 +7183,7 @@ int Xorriso_check_media(struct XorrisO *xorriso, struct SpotlisT **spotlist,
|
|||||||
Xorriso_pacifier_reset(xorriso, 0);
|
Xorriso_pacifier_reset(xorriso, 0);
|
||||||
job->start_time= time(NULL);
|
job->start_time= time(NULL);
|
||||||
mode= job->mode;
|
mode= job->mode;
|
||||||
if(job->min_lba > 0) {
|
if(job->min_lba >= 0) {
|
||||||
start_lba= job->min_lba;
|
start_lba= job->min_lba;
|
||||||
ret= Spotlist_add_item(*spotlist, 0, job->min_lba,
|
ret= Spotlist_add_item(*spotlist, 0, job->min_lba,
|
||||||
Xorriso_read_quality_untesteD, 0);
|
Xorriso_read_quality_untesteD, 0);
|
||||||
@ -7470,185 +7316,3 @@ ex:;
|
|||||||
burn_disc_free_multi_caps(&caps);
|
burn_disc_free_multi_caps(&caps);
|
||||||
return(ret);
|
return(ret);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/* @param flag bit1= for Xorriso_check_interval(): no pacifier messages
|
|
||||||
*/
|
|
||||||
int Xorriso_read_file_data(struct XorrisO *xorriso, IsoNode *node,
|
|
||||||
char *img_path, char *disk_path,
|
|
||||||
off_t img_offset, off_t disk_offset,
|
|
||||||
off_t bytes, int flag)
|
|
||||||
{
|
|
||||||
int ret, i, lba_count= 0, *start_lbas= NULL, *end_lbas= NULL, read_chunk= 16;
|
|
||||||
int lba, count, blocks, quality, spot, bad_extract= 0;
|
|
||||||
off_t size= 0, file_base_bytes= 0, file_processed_bytes= 0, img_adr;
|
|
||||||
off_t new_file_base_bytes, upto_file_bytes, start_byte= 0;
|
|
||||||
char sfe[5*SfileadrL];
|
|
||||||
struct SpotlisT *spotlist= NULL;
|
|
||||||
struct CheckmediajoB *job= NULL;
|
|
||||||
|
|
||||||
upto_file_bytes= img_offset + bytes;
|
|
||||||
|
|
||||||
/* >>> make Xorriso_check_interval() ready for copying in byte granularity */
|
|
||||||
if(img_offset % (off_t) 2048) {
|
|
||||||
sprintf(xorriso->info_text,
|
|
||||||
"Image address offset is not a multiple of 2048");
|
|
||||||
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "FAILURE", 0);
|
|
||||||
ret= 0; goto ex;
|
|
||||||
}
|
|
||||||
|
|
||||||
ret= Xorriso__start_end_lbas(node, &lba_count, &start_lbas, &end_lbas, &size,
|
|
||||||
0);
|
|
||||||
if(ret <= 0) {
|
|
||||||
Xorriso_process_msg_queues(xorriso,0);
|
|
||||||
sprintf(xorriso->info_text,
|
|
||||||
"File object %s is currently not a data file from the loaded image",
|
|
||||||
Text_shellsafe(img_path, sfe, 0));
|
|
||||||
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "FAILURE", 0);
|
|
||||||
goto ex;
|
|
||||||
}
|
|
||||||
if(img_offset + bytes < size && bytes > 0)
|
|
||||||
size= img_offset + bytes;
|
|
||||||
|
|
||||||
ret= Checkmediajob_new(&job, 0);
|
|
||||||
if(ret <= 0)
|
|
||||||
goto ex;
|
|
||||||
if(xorriso->check_media_default != NULL)
|
|
||||||
Checkmediajob_copy(xorriso->check_media_default, job, 0);
|
|
||||||
job->min_lba= -1;
|
|
||||||
job->max_lba= -1;
|
|
||||||
job->sector_map_path[0]= 0;
|
|
||||||
|
|
||||||
ret= Spotlist_new(&spotlist, 0);
|
|
||||||
if(ret <= 0)
|
|
||||||
{ret= -1; goto ex;}
|
|
||||||
|
|
||||||
if(Sfile_str(job->data_to_path, disk_path, 0) <= 0)
|
|
||||||
{ret= -1; goto ex;}
|
|
||||||
Xorriso_open_job_data_to(xorriso, job, 0);
|
|
||||||
if(ret <= 0)
|
|
||||||
goto ex;
|
|
||||||
|
|
||||||
for(i= 0; i < lba_count && file_base_bytes < upto_file_bytes; i++) {
|
|
||||||
lba= start_lbas[i];
|
|
||||||
count= end_lbas[i] + 1 - start_lbas[i];
|
|
||||||
new_file_base_bytes= file_base_bytes + ((off_t) count) * (off_t) 2048;
|
|
||||||
|
|
||||||
/* skip intervals before img_offset */
|
|
||||||
if(new_file_base_bytes <= img_offset) {
|
|
||||||
file_base_bytes= new_file_base_bytes;
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
/* Eventually adjust first interval start */
|
|
||||||
img_adr= ((off_t) lba) * (off_t) 2048;
|
|
||||||
if(file_base_bytes < img_offset) {
|
|
||||||
img_adr+= img_offset - file_base_bytes;
|
|
||||||
lba= img_adr / (off_t) 2048;
|
|
||||||
count= end_lbas[i] + 1 - lba;
|
|
||||||
file_base_bytes= img_offset;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Eventually omit surplus blocks */
|
|
||||||
if(new_file_base_bytes > upto_file_bytes)
|
|
||||||
count-= (new_file_base_bytes - upto_file_bytes) / (off_t) 2048;
|
|
||||||
/* Adjust job */
|
|
||||||
job->data_to_offset= file_processed_bytes - img_adr + disk_offset;
|
|
||||||
job->data_to_limit= size - file_base_bytes;
|
|
||||||
|
|
||||||
file_processed_bytes+= ((off_t) count) * (off_t) 2048;
|
|
||||||
ret= Xorriso_check_interval(xorriso, spotlist, job, lba, count, read_chunk,
|
|
||||||
(flag & 2));
|
|
||||||
if(ret <= 0)
|
|
||||||
goto ex;
|
|
||||||
if (ret == 2) {
|
|
||||||
sprintf(xorriso->info_text, "Attempt aborted to extract data from %s",
|
|
||||||
Text_shellsafe(img_path, sfe, 0));
|
|
||||||
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "FAILURE", 0);
|
|
||||||
ret= 0; goto ex;
|
|
||||||
}
|
|
||||||
file_base_bytes= new_file_base_bytes;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Use spotlist to evaluate damage */
|
|
||||||
file_base_bytes= 0;
|
|
||||||
count= Spotlist_count(spotlist, 0);
|
|
||||||
for(spot= 0; spot < count; spot++) {
|
|
||||||
ret= Spotlist_get_item(spotlist, spot, &lba, &blocks, &quality, 0);
|
|
||||||
if(ret <= 0)
|
|
||||||
continue;
|
|
||||||
if(quality < Xorriso_read_quality_valiD) {
|
|
||||||
for(i= 0; i < lba_count; i++) {
|
|
||||||
if(start_lbas[i] <= lba && end_lbas[i] >= lba) {
|
|
||||||
start_byte= (lba - start_lbas[i]) * (off_t) 2048 + file_base_bytes;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
file_base_bytes+= ((off_t) (end_lbas[i] + 1 - start_lbas[i]))
|
|
||||||
* (off_t) 2048;
|
|
||||||
}
|
|
||||||
if(i < lba_count) {
|
|
||||||
sprintf(xorriso->info_text, "Bad extract : %14.f , %14.f , %s\n",
|
|
||||||
(double) start_byte, ((double) blocks) * 2048.0,
|
|
||||||
Text_shellsafe(disk_path, sfe, 0));
|
|
||||||
Xorriso_info(xorriso, 0);
|
|
||||||
bad_extract= 1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
ret= !bad_extract;
|
|
||||||
ex:;
|
|
||||||
if(start_lbas != NULL)
|
|
||||||
free((char *) start_lbas);
|
|
||||||
if(end_lbas != NULL)
|
|
||||||
free((char *) end_lbas);
|
|
||||||
Spotlist_destroy(&spotlist, 0);
|
|
||||||
Checkmediajob_destroy(&job, 0);
|
|
||||||
return(ret);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
int Xorriso_extract_cut(struct XorrisO *xorriso,
|
|
||||||
char *img_path, char *disk_path,
|
|
||||||
off_t img_offset, off_t bytes, int flag)
|
|
||||||
{
|
|
||||||
int ret, stbuf_ret;
|
|
||||||
double mem_lut= 0.0;
|
|
||||||
char eff_img_path[SfileadrL], eff_disk_path[SfileadrL];
|
|
||||||
IsoImage *volume;
|
|
||||||
IsoNode *node;
|
|
||||||
|
|
||||||
ret= Xorriso_get_volume(xorriso, &volume, 0);
|
|
||||||
if(ret<=0)
|
|
||||||
return(ret);
|
|
||||||
ret= Xorriso_normalize_img_path(xorriso, xorriso->wdi,
|
|
||||||
img_path, eff_img_path, 0);
|
|
||||||
if(ret<=0)
|
|
||||||
return(ret);
|
|
||||||
ret= Xorriso_node_from_path(xorriso, volume, eff_img_path, &node, 0);
|
|
||||||
if(ret<=0)
|
|
||||||
return(ret);
|
|
||||||
ret= Xorriso_normalize_img_path(xorriso, xorriso->wdx,
|
|
||||||
disk_path, eff_disk_path, 2 | 4);
|
|
||||||
if(ret<=0)
|
|
||||||
return(ret);
|
|
||||||
Xorriso_pacifier_reset(xorriso, 0);
|
|
||||||
mem_lut= xorriso->last_update_time;
|
|
||||||
|
|
||||||
ret= Xorriso_handle_collision(xorriso, node, img_path, eff_disk_path,
|
|
||||||
disk_path, &stbuf_ret, 0);
|
|
||||||
if(ret<=0 || ret==3)
|
|
||||||
return(0);
|
|
||||||
ret= Xorriso_read_file_data(xorriso, node, eff_img_path, eff_disk_path,
|
|
||||||
img_offset, (off_t) 0, bytes, 0);
|
|
||||||
if(ret<=0)
|
|
||||||
return(ret);
|
|
||||||
ret= Xorriso_restore_properties(xorriso, eff_disk_path, node, 0);
|
|
||||||
if(ret<=0)
|
|
||||||
return(ret);
|
|
||||||
|
|
||||||
if(mem_lut != xorriso->last_update_time)
|
|
||||||
Xorriso_pacifier_callback(xorriso, "sectors examined",
|
|
||||||
xorriso->pacifier_count, 0, "", 1);
|
|
||||||
return(1);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
@ -19,7 +19,7 @@
|
|||||||
*/
|
*/
|
||||||
#define xorriso_libisoburn_req_major 0
|
#define xorriso_libisoburn_req_major 0
|
||||||
#define xorriso_libisoburn_req_minor 2
|
#define xorriso_libisoburn_req_minor 2
|
||||||
#define xorriso_libisoburn_req_micro 6
|
#define xorriso_libisoburn_req_micro 4
|
||||||
|
|
||||||
int Xorriso_startup_libraries(struct XorrisO *xorriso, int flag);
|
int Xorriso_startup_libraries(struct XorrisO *xorriso, int flag);
|
||||||
|
|
||||||
@ -310,8 +310,6 @@ struct CheckmediajoB {
|
|||||||
|
|
||||||
char data_to_path[SfileadrL];
|
char data_to_path[SfileadrL];
|
||||||
int data_to_fd;
|
int data_to_fd;
|
||||||
off_t data_to_offset; /* usually 0 with image copy, negative with file copy */
|
|
||||||
off_t data_to_limit; /* used with file copy */
|
|
||||||
int patch_lba0;
|
int patch_lba0;
|
||||||
int patch_lba0_msc1;
|
int patch_lba0_msc1;
|
||||||
|
|
||||||
@ -334,9 +332,6 @@ struct CheckmediajoB {
|
|||||||
int Xorriso_check_media(struct XorrisO *xorriso, struct SpotlisT **spotlist,
|
int Xorriso_check_media(struct XorrisO *xorriso, struct SpotlisT **spotlist,
|
||||||
struct CheckmediajoB *job, int flag);
|
struct CheckmediajoB *job, int flag);
|
||||||
|
|
||||||
int Xorriso_extract_cut(struct XorrisO *xorriso,
|
|
||||||
char *img_path, char *disk_path,
|
|
||||||
off_t img_offset, off_t bytes, int flag);
|
|
||||||
|
|
||||||
#endif /* Xorrisoburn_includeD */
|
#endif /* Xorrisoburn_includeD */
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user