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>
|
||||
and Thomas Schmitt <scdbackup@gmx.net>
|
||||
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.
|
||||
Provided under GPL version 2.
|
||||
------------------------------------------------------------------------------
|
||||
|
||||
libisoburn is a frontend for libraries libburn and libisofs which enables
|
||||
creation and expansion of ISO-9660 filesystems on all CD/DVD/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
|
||||
management on media level and even plain disk files or block devices.
|
||||
|
||||
@ -26,18 +26,18 @@ By using this software you agree to the disclaimer at the end of this text:
|
||||
|
||||
Compilation, First Glimpse, Installation
|
||||
|
||||
Dynamic library and compile time header requirements for libisoburn-0.2.6 :
|
||||
Dynamic library and compile time header requirements for libisoburn-0.2.4 :
|
||||
- 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
|
||||
headers seen at compile time. So compile in the oldest possible installation
|
||||
setup unless you have reason to enforce a newer bug fix level.
|
||||
|
||||
Obtain libisoburn-0.2.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:
|
||||
|
||||
tar xzf libisoburn-0.2.6.pl00.tar.gz
|
||||
cd libisoburn-0.2.6
|
||||
tar xzf libisoburn-0.2.4.pl00.tar.gz
|
||||
cd libisoburn-0.2.4
|
||||
|
||||
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])
|
||||
dnl AC_CONFIG_HEADER([config.h])
|
||||
|
||||
@ -21,7 +21,7 @@ dnl
|
||||
dnl These three are only copies to provide libtool with unused LT_RELEASE
|
||||
ISOBURN_MAJOR_VERSION=0
|
||||
ISOBURN_MINOR_VERSION=2
|
||||
ISOBURN_MICRO_VERSION=6
|
||||
ISOBURN_MICRO_VERSION=4
|
||||
dnl ISOBURN_VERSION=$ISOBURN_MAJOR_VERSION.$ISOBURN_MINOR_VERSION.$ISOBURN_MICRO_VERSION
|
||||
|
||||
AC_SUBST(ISOBURN_MAJOR_VERSION)
|
||||
@ -33,16 +33,16 @@ dnl Libtool versioning
|
||||
dnl Generate libisoburn.so.1.x.y
|
||||
dnl SONAME will become LT_CURRENT - LT_AGE
|
||||
dnl
|
||||
dnl ts A80919
|
||||
dnl This is the release version 0.2.6 = libisoburn.so.1.15.0
|
||||
dnl ts A80824
|
||||
dnl This is the release version 0.2.4 = libisoburn.so.1.13.0
|
||||
dnl ### This is the development version after above stable release
|
||||
dnl LT_CURRENT++, LT_AGE++ have not happened happened yet.
|
||||
dnl ### LT_CURRENT++, LT_AGE++ has happened meanwhile.
|
||||
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_CURRENT=16
|
||||
LT_AGE=15
|
||||
LT_CURRENT=14
|
||||
LT_AGE=13
|
||||
LT_REVISION=0
|
||||
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
|
||||
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(LIBISOFS, libisofs-1 >= $LIBISOFS_REQUIRED)
|
||||
|
||||
|
@ -477,7 +477,7 @@ WARN_LOGFILE =
|
||||
# directories like "/usr/src/myproject". Separate the files or directories
|
||||
# with spaces.
|
||||
|
||||
INPUT = libisoburn \
|
||||
INPUT = libburn \
|
||||
doc \
|
||||
test
|
||||
|
||||
@ -495,7 +495,9 @@ INPUT_ENCODING = UTF-8
|
||||
# *.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
|
||||
|
||||
FILE_PATTERNS =
|
||||
FILE_PATTERNS = libburn.h \
|
||||
comments \
|
||||
libburner.c
|
||||
|
||||
# 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.
|
||||
|
@ -147,10 +147,6 @@ int ds_read_block(IsoDataSource *src, uint32_t lba, uint8_t *buffer)
|
||||
return 1;
|
||||
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
|
||||
...
|
||||
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.
|
||||
*/
|
||||
ret= ISO_FILE_CANT_WRITE;
|
||||
#endif
|
||||
|
||||
if(ret >= 0)
|
||||
ret = -1;
|
||||
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_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
|
||||
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_minor 2
|
||||
#define isoburn_header_version_micro 6
|
||||
#define isoburn_header_version_micro 4
|
||||
/** Note:
|
||||
Above version numbers are also recorded in configure.ac because libtool
|
||||
wants them as parameters at build time.
|
||||
|
@ -4,7 +4,7 @@
|
||||
xorriso. By Thomas Schmitt <scdbackup@gmx.net>
|
||||
Integrated sub project of libburnia-project.org but also published via:
|
||||
http://scdbackup.sourceforge.net/xorriso_eng.html
|
||||
http://scdbackup.sourceforge.net/xorriso-0.2.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.
|
||||
------------------------------------------------------------------------------
|
||||
|
||||
@ -36,10 +36,10 @@ The tarball contains anything that is needed except libc and libpthread.
|
||||
libreadline and the readline-dev headers will make dialog mode more convenient,
|
||||
but are not mandatory.
|
||||
|
||||
Obtain xorriso-0.2.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
|
||||
cd xorriso-0.2.6
|
||||
tar xzf xorriso-0.2.4.pl00.tar.gz
|
||||
cd xorriso-0.2.4
|
||||
|
||||
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
|
||||
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
|
||||
- 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
|
||||
headers seen at compile time. So compile in the oldest possible installation
|
||||
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
|
||||
Reacted on compiler warning
|
||||
|
||||
|
||||
------------------------------------ cycle - xorriso-0.2.3 - 2008.08.24.125257
|
||||
* New -find action "report_lba"
|
||||
* New -error_behavior behavior occasion "file_extraction"
|
||||
|
||||
|
||||
2008.08.24.160001 [2011]
|
||||
2008.08.24.160001 []
|
||||
configure.ac
|
||||
README
|
||||
libisoburn/libisoburn.h
|
||||
@ -3538,13 +3538,10 @@ xorriso/make_xorriso_standalone.sh
|
||||
xorriso/configure_ac.txt
|
||||
Version leap to 0.2.4
|
||||
|
||||
24 Aug 2008 [2012]
|
||||
[]
|
||||
xorriso/changelog.txt
|
||||
Documented changes and release timestamp
|
||||
|
||||
24 Aug 2008 [2013]
|
||||
configure.ac
|
||||
Corrected ISOBURN_MICRO_VERSION
|
||||
|
||||
---------------------------------- release - xorriso-0.2.4 - 2008.08.24.160001
|
||||
* 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 -error_behavior occasion "file_extraction"
|
||||
|
||||
|
||||
2008.08.24.173217 [2014]
|
||||
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 -
|
||||
|
||||
|
||||
------------------------------------ cycle - xorriso-0.2.5 -
|
||||
------------------------------------ cycle - xorriso-0.2.5 -
|
||||
|
||||
[]
|
||||
libisoburn/burn_wrap.c
|
||||
@ -3783,20 +3565,16 @@ Tested removal of drive address path conversion in isoburn_drive_aquire()
|
||||
|
||||
------------------------------------------------- important
|
||||
|
||||
|
||||
------------------------------------------------- development
|
||||
|
||||
- creation of bootable images
|
||||
>>> 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
|
||||
- option -list_delimiter
|
||||
|
||||
- change -check_media what=disc to libburn disc rather than libisoburn
|
||||
(seems to need new API capabilities of libburn)
|
||||
|
||||
- opportunity to retrieve file via burn_read_data() and libisofs provided lba
|
||||
|
||||
??? Clarify handling of links in ISO and on disk during restore
|
||||
|
||||
> Relative addressing and pattern matching :
|
||||
@ -3808,7 +3586,6 @@ Tested removal of drive address path conversion in isoburn_drive_aquire()
|
||||
the main thread cares for user and message queues.
|
||||
|
||||
- Introduce an interrupt key for dialog
|
||||
>>> but how without disturbing readline ?
|
||||
|
||||
- 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 :
|
||||
|
||||
- Error code for libisoburn data source read errors.
|
||||
|
||||
- Proper reaction on severity of errors issued by data_source
|
||||
(currently even a FATAL gets converted to ISO_FILE_READ_ERROR
|
||||
in iso_stream_read())
|
||||
|
||||
- #define ISO_ERR_PRIO(e) ((e & 0x00700000) << 8)
|
||||
(rather than 0x00F00000, see ticket 135)
|
||||
|
||||
- the error handling system should be comprehensively documented
|
||||
and eventually rectified where needed.
|
||||
|
||||
- ticket 137:
|
||||
With softlink /X/YZ and Joliet enabled:
|
||||
libisofs: HINT : Can't add YZ to Joliet tree. This kind of files can only be added to a Rock Ridget tree. Skipping.
|
||||
HINT is not a suitable severity for this. Better: WARNING, SORRY, MISHAP
|
||||
One should at least give the full path of /X/YZ or the type of the file.
|
||||
|
||||
|
||||
------ feature enhancements :
|
||||
|
||||
- Data files >= 4 GiB.
|
||||
|
||||
- API: iso_image_update_sizes() to be run immediately before -commit
|
||||
|
||||
- A repeatable shell command as origin ("disk_file")
|
||||
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.
|
||||
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
|
||||
|
||||
|
@ -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])
|
||||
dnl AC_CONFIG_HEADER([config.h])
|
||||
|
||||
@ -16,7 +16,7 @@ AC_SUBST(BURN_MICRO_VERSION)
|
||||
|
||||
LIBISOFS_MAJOR_VERSION=0
|
||||
LIBISOFS_MINOR_VERSION=6
|
||||
LIBISOFS_MICRO_VERSION=8
|
||||
LIBISOFS_MICRO_VERSION=6
|
||||
AC_SUBST(LIBISOFS_MAJOR_VERSION)
|
||||
AC_SUBST(LIBISOFS_MINOR_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>Navigation in ISO image/\ <BR><b>Navigation in ISO image/' \
|
||||
-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>Command compatibility emulations:<\/b>/\ <BR><b>Command compatibility emulations:<\/b><BR>\ <BR>/' \
|
||||
-e 's/^<p><b>−as</<p>\ <BR><b>\−as</' \
|
||||
|
@ -25,7 +25,7 @@
|
||||
current_dir=$(pwd)
|
||||
lone_dir="$current_dir"/"xorriso-standalone"
|
||||
|
||||
xorriso_rev=0.2.6
|
||||
xorriso_rev=0.2.4
|
||||
# For unstable uploads:
|
||||
# xorriso_pl=""
|
||||
# For stable releases:
|
||||
|
@ -2,7 +2,7 @@
|
||||
.\" First parameter, NAME, should be all caps
|
||||
.\" Second parameter, SECTION, should be 1-8, maybe w/ subsection
|
||||
.\" other parameters are allowed: see man(7), man(1)
|
||||
.TH XORRISO 1 "Sep 19, 2008"
|
||||
.TH XORRISO 1 "Aug 24, 2008"
|
||||
.\" Please adjust this date whenever revising the manpage.
|
||||
.\"
|
||||
.\" 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,
|
||||
followed by zero or more parameter words. If the list of parameter words
|
||||
is of variable length (indicated by "[...]" or "[***]") then it has to be
|
||||
terminated by either the list delimiter, or the end of argument list, or an
|
||||
end of an input line.
|
||||
.PP
|
||||
At program start the \fBlist delimiter\fR is the word "--". This may be changed
|
||||
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.
|
||||
terminated by either the word "--" or the end of argument list or an end of
|
||||
an input line.
|
||||
It is not an error if "--" appears after the parameters of a command
|
||||
with a fixed list length.
|
||||
.PP
|
||||
.B Pattern expansion
|
||||
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.
|
||||
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,
|
||||
or the limit of 4 GiB - 1 for newer ones. Only the newest Linux kernels
|
||||
seem to read properly files >= 4 GiB - 1.
|
||||
or the limit of 4 GiB - 1 for newer ones.
|
||||
.br
|
||||
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.
|
||||
@ -950,9 +940,8 @@ E.g.:
|
||||
.br
|
||||
"report_lba" prints files which are associated to image data blocks.
|
||||
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
|
||||
line per file if the file is very large. In this case each line has a
|
||||
different extent number in column "xt".
|
||||
and the path of each file. In future there may be reported more than one
|
||||
line per file if the file is very large.
|
||||
.br
|
||||
E.g.:
|
||||
.br
|
||||
@ -975,6 +964,10 @@ other file causes a FAILURE event.
|
||||
\fB\-rmdir\fR iso_rr_path [***]
|
||||
Delete empty directories.
|
||||
.TP
|
||||
\fB\-\-\fR
|
||||
.br
|
||||
Mark end of particular action argument list.
|
||||
.TP
|
||||
\fB\-rollback\fR
|
||||
Discard the manipulated ISO image and reload it from -indev.
|
||||
.TP
|
||||
@ -1099,22 +1092,6 @@ Smaller format size with DVD-RAM or BD-RE means more reserve space.
|
||||
.TP
|
||||
.B Settings for data insertion:
|
||||
.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[...]]
|
||||
Control the behavior of the exclusion lists.
|
||||
.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"]
|
||||
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.
|
||||
This is necessary if the size of the disk file exceeds -file_size_limit.
|
||||
Older operating systems can handle files in mounted ISO 9660 filesystems
|
||||
only if they are smaller than 2 GiB resp. 4 GiB.
|
||||
This is necessary if the size of the disk file exceeds 4 GiB - 1.
|
||||
Older operating systems can handle files only if they are smaller than 2 GiB.
|
||||
See also option -cut_out for more information about file parts.
|
||||
.br
|
||||
Default is 0 which will exclude files larger than -file_size_limit by a
|
||||
FAILURE event.
|
||||
A well tested -split_size is 2047m. Sizes above -file_size_limit are not
|
||||
permissible.
|
||||
Default is 0 which will exclude files >= 4 GiB by a FAILURE event.
|
||||
A well tested -split_size is 2047m. Sizes of 4 GiB or more are not permissible.
|
||||
.TP
|
||||
.B Settings for result writing:
|
||||
.TP
|
||||
@ -1288,10 +1262,6 @@ Consider this when setting -volid "ISOIMAGE" before executing -dev, -indev,
|
||||
or -rollback.
|
||||
If you insist in -volid "ISOIMAGE", set it again after those commands.
|
||||
.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
|
||||
User id to be used for all files when the new ISO tree gets written to media.
|
||||
.TP
|
||||
@ -1320,7 +1290,7 @@ for their own decision.
|
||||
.TP
|
||||
\fB\-stream_recording\fR "on"|"off"
|
||||
Setting "on" tries to circumvent the management of defects on DVD-RAM and
|
||||
BD-RE. Defect management keeps partly damaged media usable. But it reduces
|
||||
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.
|
||||
For the case of flawless media, one may use -stream_recording "on" to get
|
||||
full speed.
|
||||
@ -1475,13 +1445,10 @@ It issues an own FAILURE event.
|
||||
"fatal" acts like "failure" but issues the own event as FATAL.
|
||||
This is the default.
|
||||
.br
|
||||
With occasion "file_extraction" there are three behaviors:
|
||||
With occasion "file_extraction" there are two behaviors:
|
||||
.br
|
||||
"keep" maintains incompletely extracted files on disk. This is the default.
|
||||
.br
|
||||
"delete" removes files which encountered errors during content extraction.
|
||||
.br
|
||||
"best_effort" starts a revovery attempt by means of -extract_cut.
|
||||
"keep" maintains incompletely extracted files on disk. "delete" removes
|
||||
files which encountered errors during content extraction.
|
||||
.TP
|
||||
.B Dialog mode control:
|
||||
.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
|
||||
may be used to modify the default behavior.
|
||||
.br
|
||||
The options given with this command override the default settings which
|
||||
may have been changed by option -check_media_defaults. See there for a
|
||||
description of options.
|
||||
An option consists of a keyword, a "=" character, and a value.
|
||||
.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
|
||||
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:
|
||||
Default is:
|
||||
.br
|
||||
use=indev what=tracks min_lba=-1 max_lba=-1 retry=default
|
||||
time_limit=28800 item_limit=100000
|
||||
@ -1771,14 +1722,7 @@ abort_file=/var/opt/xorriso/do_abort_check_media
|
||||
.br
|
||||
data_to='' sector_map='' map_with_volid=off patch_lba0=off report=blocks
|
||||
.br
|
||||
Option "reset=now" restores these startup defaults.
|
||||
.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.
|
||||
Non-default settings:
|
||||
.br
|
||||
"use=outdev" reads from the output drive instead of the input drive. This
|
||||
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
|
||||
"use=sector_map" does not read any media but loads the file given by option
|
||||
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
|
||||
.B osirrox restore options:
|
||||
.PP
|
||||
@ -1901,21 +1854,6 @@ restored.
|
||||
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.
|
||||
.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
|
||||
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
|
||||
@ -2099,13 +2037,6 @@ if its start matches the filter text. No wildcards.
|
||||
\fB\-status_history_max\fR number
|
||||
Set maximum number of history lines to be reported with -status "long_history".
|
||||
.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"]
|
||||
Set the maximum size of temporary memory to be used for image dependent
|
||||
buffering. Currently this applies to pattern expansion only.
|
||||
@ -2206,7 +2137,7 @@ Manipulating an existing ISO image on the same media
|
||||
.br
|
||||
Copy modified ISO image from one media to another
|
||||
.br
|
||||
Operate on storage facilities other than optical drives
|
||||
Write a ISO image into a pipe
|
||||
.br
|
||||
Perform multi-session runs as of cdrtools traditions
|
||||
.br
|
||||
@ -2358,17 +2289,7 @@ first and only session to the output drive.
|
||||
.br
|
||||
-commit -eject all
|
||||
.SS
|
||||
.B Operate on storage facilities other than optical drives
|
||||
Full read-write operation is possible with regular files and block devices:
|
||||
.br
|
||||
\fB$\fR xorriso -dev stdio:/tmp/regular_file ...
|
||||
.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
|
||||
.B Write a ISO image into a pipe
|
||||
\fB$\fR xorriso -outdev - \\
|
||||
.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
|
||||
on media and if the expected changes are much smaller than the full backup.
|
||||
An update run will probably save no time but last longer than a full backup.
|
||||
Other good reasons may be given if read speed is much higher than write speed
|
||||
or if file size changes happen too often within the write time of a full backup.
|
||||
Another good reason may be given if read speed is much higher than write speed.
|
||||
.br
|
||||
With \fBmount\fR option \fB"sbsector="\fR it is possible to access the session
|
||||
trees which represent the older backup versions. With CD media, Linux mount
|
||||
|
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 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 */
|
||||
/* @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,
|
||||
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 */
|
||||
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" */
|
||||
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 */
|
||||
int Xorriso_option_list_formats(struct XorrisO *xorriso, int flag);
|
||||
|
||||
|
@ -63,12 +63,12 @@ GPL software included:<BR>
|
||||
<DT>libburn-0.5.3</DT>
|
||||
<DD>reads and writes data from and to CD, DVD, BD-RE.</DD>
|
||||
<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>
|
||||
<DT>libisofs-0.6.8</DT>
|
||||
<DT>libisofs-0.6.6</DT>
|
||||
<DD>operates on ISO 9660 filesystem images.</DD>
|
||||
<DD>(By Vreixo Formoso and Mario Danic from team of libburnia-project.org)</DD>
|
||||
<DT>libisoburn-0.2.6</DT>
|
||||
<DT>libisoburn-0.2.4</DT>
|
||||
<DD>coordinates libburn and libisofs, emulates multi-session where needed.</DD>
|
||||
<DD>(By Vreixo Formoso and Thomas Schmitt
|
||||
from team of libburnia-project.org)</DD>
|
||||
@ -141,11 +141,6 @@ Adjustable thresholds for abort, exit value, and problem reporting.
|
||||
<DL>
|
||||
<DT>Get an overview of drives and their addresses</DT>
|
||||
<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>
|
||||
<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>
|
||||
<HR>
|
||||
</DT>
|
||||
<DT>ISO images may not only be stored on optical media but also in
|
||||
regular disk files or block devices for full multi-session operation.
|
||||
The prefix "stdio:" indicates that normal file operations are
|
||||
desired rather than MMC drive commands:
|
||||
</DT>
|
||||
<DD>$<KBD> xorriso -dev stdio:/tmp/regular_file ...other.options...</DD>
|
||||
|
||||
<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
|
||||
with an external consumer of the generated ISO image. Any message
|
||||
@ -346,8 +332,8 @@ are interested in using BD-R media.
|
||||
<P>
|
||||
<DL>
|
||||
<DT><H3>Download as source code (see README):</H3></DT>
|
||||
<DD><A HREF="xorriso-0.2.6.pl00.tar.gz">xorriso-0.2.6.pl00.tar.gz</A>
|
||||
(1050 KB).
|
||||
<DD><A HREF="xorriso-0.2.4.pl00.tar.gz">xorriso-0.2.4.pl00.tar.gz</A>
|
||||
(1040 KB).
|
||||
</DD>
|
||||
</DL>
|
||||
</DD>
|
||||
@ -372,28 +358,29 @@ an <A HREF="http://www.opensource.org/">Open Source</A> approved license</DD>
|
||||
|
||||
<HR>
|
||||
<P>
|
||||
Bug fixes towards xorriso-0.2.4.pl00:
|
||||
Bug fixes towards xorriso-0.2.2.pl01:
|
||||
<UL>
|
||||
|
||||
<LI>-format full did not re-format already formatted DVD+RW</LI>
|
||||
|
||||
<!--
|
||||
<LI>- none -</LI>
|
||||
-->
|
||||
|
||||
</UL>
|
||||
</P>
|
||||
<P>
|
||||
Enhancements towards previous stable version xorriso-0.2.4.pl00:
|
||||
Enhancements towards previous stable version xorriso-0.2.2.pl01:
|
||||
<UL>
|
||||
|
||||
<LI>Capability to insert and extract files far larger than 4 GB</LI>
|
||||
<LI>New option -file_size_limit, -as mkisofs now supports -iso-level 1 to 3
|
||||
<LI>
|
||||
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>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>
|
||||
</P>
|
||||
@ -402,15 +389,15 @@ Enhancements towards previous stable version xorriso-0.2.4.pl00:
|
||||
|
||||
<P>
|
||||
<DL>
|
||||
<DT><H3>Development snapshot, version 0.2.7 :</H3></DT>
|
||||
<DD>Bug fixes towards xorriso-0.2.6.pl00:
|
||||
<DT><H3>Development snapshot, version 0.2.5 :</H3></DT>
|
||||
<DD>Bug fixes towards xorriso-0.2.4.pl00:
|
||||
<UL>
|
||||
<LI>- none yet -</LI>
|
||||
<!--
|
||||
-->
|
||||
</UL>
|
||||
</DD>
|
||||
<DD>Enhancements towards stable version 0.2.6.pl00:
|
||||
<DD>Enhancements towards stable version 0.2.4.pl00:
|
||||
<UL>
|
||||
<LI>- none yet -</LI>
|
||||
<!--
|
||||
@ -418,9 +405,9 @@ Enhancements towards previous stable version xorriso-0.2.4.pl00:
|
||||
</UL>
|
||||
</DD>
|
||||
<DD> </DD>
|
||||
<DD><A HREF="README_xorriso_devel">README 0.2.7</A>
|
||||
<DD><A HREF="xorriso_help_devel">xorriso_0.2.7 -help</A></DD>
|
||||
<DD><A HREF="man_1_xorriso_devel.html">man xorriso (as of 0.2.7)</A></DD>
|
||||
<DD><A HREF="README_xorriso_devel">README 0.2.5</A>
|
||||
<DD><A HREF="xorriso_help_devel">xorriso_0.2.5 -help</A></DD>
|
||||
<DD><A HREF="man_1_xorriso_devel.html">man xorriso (as of 0.2.5)</A></DD>
|
||||
<DD> </DD>
|
||||
<DT>If you want to distribute development versions of xorriso, then use
|
||||
this tarball which produces static linking between xorriso and the
|
||||
@ -430,8 +417,8 @@ libburnia libraries.
|
||||
installation see README)
|
||||
</DD>
|
||||
<DD>
|
||||
<A HREF="xorriso-0.2.7.tar.gz">xorriso-0.2.7.tar.gz</A>
|
||||
(1050 KB).
|
||||
<A HREF="xorriso-0.2.5.tar.gz">xorriso-0.2.5.tar.gz</A>
|
||||
(1040 KB).
|
||||
</DD>
|
||||
<DT>A dynamically linked development version of xorriso can be obtained
|
||||
from repositories of
|
||||
|
@ -18,7 +18,7 @@
|
||||
#ifndef Xorriso_private_includeD
|
||||
#define Xorriso_private_includeD yes
|
||||
|
||||
#define Xorriso_program_versioN "0.2.6"
|
||||
#define Xorriso_program_versioN "0.2.4"
|
||||
|
||||
/** The source code release timestamp */
|
||||
#include "xorriso_timestamp.h"
|
||||
@ -65,13 +65,6 @@ struct SectorbitmaP; /* Distiniction between valid and invalid sectors */
|
||||
#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 */
|
||||
|
||||
int libs_are_started;
|
||||
@ -99,8 +92,6 @@ struct XorrisO { /* the global context of xorriso */
|
||||
int add_plainly;
|
||||
off_t split_size;
|
||||
|
||||
char list_delimiter[81];
|
||||
|
||||
/* >>> put libisofs aspects here <<< */
|
||||
|
||||
int do_joliet;
|
||||
@ -160,7 +151,6 @@ struct XorrisO { /* the global context of xorriso */
|
||||
int volset_change_pending; /* whether -commit would make sense */
|
||||
int no_volset_present; /* set to 1 on first failure */
|
||||
|
||||
struct CheckmediajoB *check_media_default;
|
||||
struct SectorbitmaP *in_sector_map; /* eventual sector validity bitmap */
|
||||
|
||||
|
||||
@ -225,8 +215,6 @@ struct XorrisO { /* the global context of xorriso */
|
||||
|
||||
int temp_mem_limit;
|
||||
|
||||
off_t file_size_limit;
|
||||
|
||||
struct ExclusionS *disk_exclusions;
|
||||
int disk_excl_mode; /* bit0= on (else off)
|
||||
bit1= parameter too (else rekursion only)
|
||||
@ -266,7 +254,7 @@ struct XorrisO { /* the global context of xorriso */
|
||||
FILE *errfile_fp;
|
||||
|
||||
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];
|
||||
int return_with_severity;
|
||||
@ -315,7 +303,7 @@ struct XorrisO { /* the global context of xorriso */
|
||||
struct PermiteM *perm_stack; /* Temporarily altered dir access permissions */
|
||||
|
||||
/* result (stdout, R: ) */
|
||||
char result_line[10*SfileadrL];
|
||||
char result_line[5*SfileadrL];
|
||||
int result_line_counter;
|
||||
int result_page_counter;
|
||||
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 *end_lba, int *damage_filter, int flag);
|
||||
|
||||
int Findjob_get_commit_filter(struct FindjoB *o, int *commit_filter, int flag);
|
||||
|
||||
|
||||
struct SplitparT;
|
||||
|
||||
@ -725,8 +711,6 @@ int Checkmediajob_new(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 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 **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_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 ret, hret, not_writeable= 0, has_what, aquire_flag, load_lba;
|
||||
int ret, hret, not_writeable= 0, has_what, aquire_flag;
|
||||
uint32_t size;
|
||||
struct burn_drive_info *dinfo= NULL, *out_dinfo, *in_dinfo;
|
||||
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;}
|
||||
if(state != BURN_DISC_BLANK && state != BURN_DISC_APPENDABLE) {
|
||||
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;
|
||||
}
|
||||
}
|
||||
@ -583,14 +576,6 @@ int Xorriso_aquire_drive(struct XorrisO *xorriso, char *adr, int flag)
|
||||
if(xorriso->img_read_error_mode>0)
|
||||
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);
|
||||
|
||||
/* <<< Resetting to normal thresholds */
|
||||
@ -905,10 +890,8 @@ int Xorriso_write_session(struct XorrisO *xorriso, int flag)
|
||||
}
|
||||
|
||||
ret= isoburn_igopt_new(&sopts, 0);
|
||||
if(ret<=0) {
|
||||
Xorriso_process_msg_queues(xorriso, 0);
|
||||
if(ret<=0)
|
||||
return(ret);
|
||||
}
|
||||
relax= isoburn_igopt_allow_deep_paths;
|
||||
|
||||
/* 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);
|
||||
}
|
||||
}
|
||||
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_relaxed(sopts, isoburn_igopt_allow_deep_paths);
|
||||
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);
|
||||
if(ret<0)
|
||||
{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);
|
||||
if (xorriso->grow_blindly_msc2 >= 0 &&
|
||||
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;
|
||||
}
|
||||
if(first_base_time > 0 &&
|
||||
current_time - first_base_time >= 10 &&
|
||||
current_time - first_base_time >= 3 &&
|
||||
progress.sectors > first_base_count) {
|
||||
norm= (1.0 - quot);
|
||||
if(norm < 0.0001)
|
||||
@ -1232,7 +1204,7 @@ int Xorriso_pacifier_loop(struct XorrisO *xorriso, struct burn_drive *drive,
|
||||
norm= 1.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)
|
||||
/ ((double) progress.sectors - base_count);
|
||||
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);
|
||||
else
|
||||
sprintf(xorriso->info_text,
|
||||
"Thank you for being patient for %.f seconds",
|
||||
"Thank you for being patient since %.f seconds",
|
||||
current_time-start_time);
|
||||
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)
|
||||
aborting= Xorriso_check_burn_abort(xorriso, 0);
|
||||
usleep(100000);
|
||||
if(((time_t) Sfile_microtime(0)) - ((time_t) current_time) >= 1)
|
||||
break;
|
||||
}
|
||||
}
|
||||
return(1);
|
||||
@ -1683,12 +1653,13 @@ int Xorriso_tree_graft_node(struct XorrisO *xorriso, IsoImage *volume,
|
||||
struct stat stbuf;
|
||||
char sfe[5*SfileadrL];
|
||||
off_t size= 0;
|
||||
static off_t limit= ((off_t) 4) * ((off_t) 1024*1024*1024) - (off_t) 1;
|
||||
|
||||
if(flag&8) {
|
||||
if(cut_size > xorriso->file_size_limit && xorriso->file_size_limit > 0) {
|
||||
if(cut_size > limit) {
|
||||
sprintf(xorriso->info_text,
|
||||
"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));
|
||||
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "FAILURE", 0);
|
||||
return(0);
|
||||
@ -1709,11 +1680,10 @@ int Xorriso_tree_graft_node(struct XorrisO *xorriso, IsoImage *volume,
|
||||
if(ret<=0)
|
||||
goto ex;
|
||||
return(1);
|
||||
} else if(size > xorriso->file_size_limit && xorriso->file_size_limit > 0) {
|
||||
} else if(size > limit) {
|
||||
sprintf(xorriso->info_text,
|
||||
"File exceeds size limit of %.f bytes: %s\n",
|
||||
(double) xorriso->file_size_limit,
|
||||
Text_shellsafe(disk_path, sfe, 0));
|
||||
(double) limit, Text_shellsafe(disk_path, sfe, 0));
|
||||
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "FAILURE", 0);
|
||||
return(0);
|
||||
}
|
||||
@ -2394,11 +2364,11 @@ int Xorriso_restore_is_identical(struct XorrisO *xorriso, void *in_node,
|
||||
unsigned int fs_id;
|
||||
dev_t dev_id;
|
||||
ino_t ino_id;
|
||||
uint32_t dummy;
|
||||
IsoStream *stream;
|
||||
IsoImage *volume;
|
||||
IsoNode *node;
|
||||
struct stat stbuf;
|
||||
int dummy;
|
||||
|
||||
memset(type_text, 0, 5);
|
||||
if(!xorriso->volset_change_pending)
|
||||
@ -2413,11 +2383,10 @@ int Xorriso_restore_is_identical(struct XorrisO *xorriso, void *in_node,
|
||||
if(ret<=0)
|
||||
return(-1);
|
||||
}
|
||||
ret= Xorriso__file_start_lba(node, &dummy, 0);
|
||||
if(ret != 0) {
|
||||
Xorriso_process_msg_queues(xorriso, 0);
|
||||
|
||||
ret= iso_node_get_old_image_lba(node, &dummy, 0);
|
||||
if(ret!=0)
|
||||
return(0);
|
||||
}
|
||||
if(!LIBISO_ISREG(node))
|
||||
return(0);
|
||||
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 buf[32*1024], type_text[5], temp_path[SfileadrL];
|
||||
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;
|
||||
mode_t mode;
|
||||
dev_t dev= 0;
|
||||
@ -2670,32 +2639,8 @@ int Xorriso_tree_restore_node(struct XorrisO *xorriso, IsoNode *node,
|
||||
if(wanted>todo)
|
||||
wanted= todo;
|
||||
ret= Xorriso_iso_file_read(xorriso, data_stream, buf, wanted, 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);
|
||||
}
|
||||
if(ret<=0)
|
||||
break;
|
||||
}
|
||||
wret= write(write_fd, buf, ret);
|
||||
if(wret>=0) {
|
||||
todo-= wret;
|
||||
@ -2716,7 +2661,6 @@ int Xorriso_tree_restore_node(struct XorrisO *xorriso, IsoNode *node,
|
||||
break;
|
||||
}
|
||||
}
|
||||
if(write_fd > 0)
|
||||
close(write_fd);
|
||||
write_fd= -1;
|
||||
if(todo > 0 && xorriso->extract_error_mode == 2 && open_path_pt != NULL) {
|
||||
@ -2816,8 +2760,6 @@ restore_properties:;
|
||||
ret= 1;
|
||||
else
|
||||
ret= Xorriso_restore_properties(xorriso, disk_path, node, flag&1);
|
||||
if(todo < 0)
|
||||
ret= 0;
|
||||
ex:;
|
||||
if(write_fd >= 0) {
|
||||
close(write_fd);
|
||||
@ -3686,17 +3628,8 @@ int Xorriso_toc(struct XorrisO *xorriso, int flag)
|
||||
}
|
||||
if(flag&(1|4))
|
||||
ret= 0;
|
||||
else {
|
||||
else
|
||||
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) {
|
||||
sprintf(respt, "ISO session : %3d , %9d , %9ds , %s\n",
|
||||
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);
|
||||
return(0);
|
||||
}
|
||||
if(!(flag & 1))
|
||||
mode_flag|= 16; /* enable re-formatting */
|
||||
|
||||
if(xorriso->do_dummy) {
|
||||
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)
|
||||
{
|
||||
uint32_t lba1= 0, lba2= 0;
|
||||
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)
|
||||
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)
|
||||
lba2= 0;
|
||||
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 *lba_count, int **start_lbas, int **end_lbas,
|
||||
off_t *size, int flag)
|
||||
int Xorriso_start_end_lba(struct XorrisO *xorriso, IsoNode *node,
|
||||
int *start_lba, int *end_lba, off_t *size, int flag)
|
||||
{
|
||||
int section_count= 0, ret, i;
|
||||
struct iso_file_section *sections= NULL;
|
||||
uint32_t iso_start_lba;
|
||||
int ret;
|
||||
|
||||
*lba_count= 0;
|
||||
*start_lbas= *end_lbas= NULL;
|
||||
*size= 0;
|
||||
if(!LIBISO_ISREG(node))
|
||||
return(0);
|
||||
*size= iso_file_get_size((IsoFile *) node);
|
||||
ret= iso_file_get_old_image_sections((IsoFile *) node, §ion_count,
|
||||
§ions, 0);
|
||||
*start_lba= *end_lba= -1;
|
||||
ret= iso_node_get_old_image_lba(node, &iso_start_lba, 0);
|
||||
if(ret < 0)
|
||||
{ret= -1; goto ex;}
|
||||
if(ret != 1 || section_count <= 0)
|
||||
{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(-1);
|
||||
if(ret != 1)
|
||||
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);
|
||||
}
|
||||
|
||||
@ -5689,78 +5572,57 @@ int Xorriso_file_eval_damage(struct XorrisO *xorriso, IsoNode *node,
|
||||
off_t *damage_start, off_t *damage_end,
|
||||
int flag)
|
||||
{
|
||||
int *start_lbas= NULL, *end_lbas= NULL, lba_count= 0, sect;
|
||||
int i, sectors, sector_size, ret;
|
||||
off_t sect_base= 0, size= 0, byte;
|
||||
int start_lba, end_lba, i, sectors, sector_size, damaged= 0, ret;
|
||||
int next_good_lba= -1, first_bad_lba= -1;
|
||||
off_t size= 0;
|
||||
struct SectorbitmaP *map;
|
||||
|
||||
*damage_start= *damage_end= -1;
|
||||
map= xorriso->in_sector_map;
|
||||
if(map == NULL)
|
||||
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);
|
||||
sector_size/= 2048;
|
||||
|
||||
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) {
|
||||
for(i= start_lba; i <= end_lba; i+= sector_size)
|
||||
if(Sectorbitmap_is_set(map, i / sector_size, 0) == 0) {
|
||||
byte= ((off_t) 2048) * ((off_t) (i - start_lbas[sect])) + sect_base;
|
||||
if(*damage_start < 0 || byte < *damage_start)
|
||||
*damage_start= byte;
|
||||
if(byte + (off_t) 2048 > *damage_end)
|
||||
*damage_end= byte + (off_t) 2048;
|
||||
}
|
||||
}
|
||||
sect_base+= ((off_t) 2048) *
|
||||
((off_t) (end_lbas[sect] - start_lbas[sect] + 1));
|
||||
damaged= 1;
|
||||
if(first_bad_lba < 0)
|
||||
first_bad_lba= i;
|
||||
next_good_lba= (i / sector_size + 1) * sector_size;
|
||||
}
|
||||
|
||||
if(damaged) {
|
||||
*damage_start= (first_bad_lba - start_lba) * 2048;
|
||||
*damage_end= (next_good_lba - start_lba) * 2048;
|
||||
if(*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(0);
|
||||
}
|
||||
|
||||
|
||||
int Xorriso_report_lba(struct XorrisO *xorriso, char *show_path,
|
||||
IsoNode *node, int flag)
|
||||
{
|
||||
int ret, *start_lbas= NULL, *end_lbas= NULL, lba_count, i;
|
||||
int ret, start_lba, end_lba;
|
||||
off_t size;
|
||||
char sfe[5*SfileadrL];
|
||||
|
||||
ret= Xorriso__start_end_lbas(node, &lba_count, &start_lbas, &end_lbas,
|
||||
&size, 0);
|
||||
if(ret < 0) {
|
||||
Xorriso_process_msg_queues(xorriso, 0);
|
||||
{ret= -1; goto ex;}
|
||||
}
|
||||
ret= Xorriso_start_end_lba(xorriso, node, &start_lba, &end_lba, &size, 0);
|
||||
if(ret < 0)
|
||||
return(ret);
|
||||
if(ret == 0)
|
||||
{ret= 1; goto ex;} /* 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",
|
||||
i, start_lbas[i], end_lbas[i] + 1 - start_lbas[i], (double) size,
|
||||
return(1); /* it is ok to ignore other types */
|
||||
sprintf(xorriso->result_line, "File data lba: %2d , %8d , %8d , %8.f , %s\n",
|
||||
0, start_lba, end_lba + 1 - start_lba, (double) size,
|
||||
Text_shellsafe(show_path, sfe, 0));
|
||||
Xorriso_result(xorriso, 0);
|
||||
}
|
||||
ret= 1;
|
||||
ex:;
|
||||
if(start_lbas != NULL)
|
||||
free((char *) start_lbas);
|
||||
if(end_lbas != NULL)
|
||||
free((char *) end_lbas);
|
||||
return(ret);
|
||||
return(1);
|
||||
}
|
||||
|
||||
|
||||
@ -5883,9 +5745,8 @@ int Xorriso_findi_test(struct XorrisO *xorriso, struct FindjoB *job,
|
||||
struct stat *boss_stbuf, struct stat *stbuf,
|
||||
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;
|
||||
int lba_count, *file_end_lbas= NULL, *file_start_lbas= NULL, i;
|
||||
|
||||
ret= Findjob_test(job, name, boss_stbuf, stbuf, depth, 0);
|
||||
if(ret<=0)
|
||||
@ -5899,33 +5760,16 @@ int Xorriso_findi_test(struct XorrisO *xorriso, struct FindjoB *job,
|
||||
if((damage_filter > 0) != (ret > 0))
|
||||
return(0);
|
||||
}
|
||||
|
||||
if(start_lba >= 0 && end_lba >= 0) {
|
||||
ret= Xorriso__start_end_lbas(node, &lba_count,
|
||||
&file_start_lbas, &file_end_lbas, &size, 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);
|
||||
ret= Xorriso_start_end_lba(xorriso, node, &file_start_lba, &file_end_lba,
|
||||
&size, 0);
|
||||
if(ret <= 0)
|
||||
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.");
|
||||
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "FAILURE", 0);
|
||||
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);
|
||||
}
|
||||
} else if(disc_state == BURN_DISC_EMPTY) {
|
||||
@ -6779,6 +6623,13 @@ int Xorriso_iso_file_open(struct XorrisO *xorriso, char *pathname,
|
||||
IsoFile *filenode= NULL;
|
||||
IsoStream *iso_stream= NULL;
|
||||
|
||||
/* for debugging
|
||||
#define Libisofs_lba_tesT yes
|
||||
*/
|
||||
#ifdef Libisofs_lba_tesT
|
||||
uint32_t lba;
|
||||
#endif
|
||||
|
||||
*stream= NULL;
|
||||
if(flag&1) {
|
||||
node= (IsoNode *) node_pt;
|
||||
@ -6794,6 +6645,13 @@ int Xorriso_iso_file_open(struct XorrisO *xorriso, char *pathname,
|
||||
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;
|
||||
iso_stream= iso_file_get_stream(filenode);
|
||||
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)
|
||||
bit1= no pacifier messages
|
||||
@return <=0 error, 1= done, 2= aborted due to limit
|
||||
*/
|
||||
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_info *dinfo;
|
||||
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 last_abort_file_time= 0;
|
||||
struct stat stbuf;
|
||||
@ -7219,17 +7076,9 @@ abort_check:;
|
||||
if(time_diff > 1.0 && i > 0)
|
||||
quality= Xorriso_read_quality_sloW;
|
||||
}
|
||||
|
||||
write_amount= data_count;
|
||||
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) {
|
||||
ret= lseek(job->data_to_fd,
|
||||
((off_t) (i + from_lba)) * (off_t) 2048 + job->data_to_offset,
|
||||
ret= lseek(job->data_to_fd, ((off_t) (i + from_lba)) * (off_t) 2048,
|
||||
SEEK_SET);
|
||||
if(ret == -1) {
|
||||
failed_to_write:;
|
||||
@ -7240,7 +7089,7 @@ failed_to_write:;
|
||||
"FAILURE", 0);
|
||||
{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)
|
||||
goto failed_to_write;
|
||||
}
|
||||
@ -7256,14 +7105,11 @@ failed_to_write:;
|
||||
start_lba= i + from_lba;
|
||||
prev_quality= quality;
|
||||
}
|
||||
if(!(flag & 2)) {
|
||||
xorriso->pacifier_count+= to_read;
|
||||
if(post_read_time - xorriso->last_update_time >=
|
||||
xorriso->pacifier_interval)
|
||||
if(post_read_time - xorriso->last_update_time >= xorriso->pacifier_interval)
|
||||
Xorriso_pacifier_callback(xorriso, "sectors examined",
|
||||
xorriso->pacifier_count, xorriso->pacifier_total, "", 0);
|
||||
}
|
||||
}
|
||||
if(prev_quality >= 0) {
|
||||
ret= Spotlist_add_item(spotlist, start_lba,
|
||||
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);
|
||||
job->start_time= time(NULL);
|
||||
mode= job->mode;
|
||||
if(job->min_lba > 0) {
|
||||
if(job->min_lba >= 0) {
|
||||
start_lba= job->min_lba;
|
||||
ret= Spotlist_add_item(*spotlist, 0, job->min_lba,
|
||||
Xorriso_read_quality_untesteD, 0);
|
||||
@ -7470,185 +7316,3 @@ ex:;
|
||||
burn_disc_free_multi_caps(&caps);
|
||||
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_minor 2
|
||||
#define xorriso_libisoburn_req_micro 6
|
||||
#define xorriso_libisoburn_req_micro 4
|
||||
|
||||
int Xorriso_startup_libraries(struct XorrisO *xorriso, int flag);
|
||||
|
||||
@ -310,8 +310,6 @@ struct CheckmediajoB {
|
||||
|
||||
char data_to_path[SfileadrL];
|
||||
int data_to_fd;
|
||||
off_t data_to_offset; /* usually 0 with image copy, negative with file copy */
|
||||
off_t data_to_limit; /* used with file copy */
|
||||
int patch_lba0;
|
||||
int patch_lba0_msc1;
|
||||
|
||||
@ -334,9 +332,6 @@ struct CheckmediajoB {
|
||||
int Xorriso_check_media(struct XorrisO *xorriso, struct SpotlisT **spotlist,
|
||||
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 */
|
||||
|
||||
|
Reference in New Issue
Block a user