New -as cdrecord option --multi_if_possible

This commit is contained in:
Thomas Schmitt 2013-10-28 15:15:39 +00:00
parent 9e1acb731d
commit 0d3fbf846b
5 changed files with 111 additions and 68 deletions

View File

@ -67,6 +67,7 @@ int Xorriso_cdrskin_help(struct XorrisO *xorriso, int flag)
"\t-toc\t\tretrieve and print TOC/PMA data", "\t-toc\t\tretrieve and print TOC/PMA data",
"\t-atip\t\tretrieve media state, print \"Is *erasable\"", "\t-atip\t\tretrieve media state, print \"Is *erasable\"",
"\t-multi\t\tgenerate a TOC that allows multi session", "\t-multi\t\tgenerate a TOC that allows multi session",
"\t--multi_if_possible\tapply -multi if the medium supports it",
"\t-waiti\t\twait until input is available before opening SCSI", "\t-waiti\t\twait until input is available before opening SCSI",
"\t-tao\t\tWrite disk in TAO mode.", "\t-tao\t\tWrite disk in TAO mode.",
"\t-dao\t\tWrite disk in SAO mode.", "\t-dao\t\tWrite disk in SAO mode.",
@ -108,6 +109,7 @@ int Xorriso_cdrskin(struct XorrisO *xorriso, char *whom, int argc, char **argv,
int do_atip= 0, do_checkdrive= 0, do_eject= 0, do_scanbus= 0; int do_atip= 0, do_checkdrive= 0, do_eject= 0, do_scanbus= 0;
int do_toc= 0, do_verbous= 0, do_version= 0, do_help= 0, do_waiti= 0; int do_toc= 0, do_verbous= 0, do_version= 0, do_help= 0, do_waiti= 0;
int do_multi= 0, do_msinfo= 0, do_grow= 0, do_isosize= 0, do_xa1= 0; int do_multi= 0, do_msinfo= 0, do_grow= 0, do_isosize= 0, do_xa1= 0;
int do_auto_close= 0;
double write_start_address= -1.0, tsize= -1.0, mem_auto_close; double write_start_address= -1.0, tsize= -1.0, mem_auto_close;
char *track_source= NULL, *dev_adr= NULL, *cpt; char *track_source= NULL, *dev_adr= NULL, *cpt;
char mem_report_about_text[80], *report_about= "SORRY", blank_mode[80]; char mem_report_about_text[80], *report_about= "SORRY", blank_mode[80];
@ -298,6 +300,10 @@ no_volunteer:;
do_msinfo= 1; do_msinfo= 1;
} else if(strcmp(argpt, "-multi")==0) { } else if(strcmp(argpt, "-multi")==0) {
do_multi= 1; do_multi= 1;
do_auto_close= 0;
} else if(strcmp(argv[i], "--multi_if_possible") == 0) {
do_multi= 1;
do_auto_close= 1;
} else if(strcmp(argpt, "-nopad")==0) { } else if(strcmp(argpt, "-nopad")==0) {
xorriso->padding= 0; xorriso->padding= 0;
} else if(strcmp(argv[i], "--no_rc")==0) { /* intentional: argv[i] */ } else if(strcmp(argv[i], "--no_rc")==0) { /* intentional: argv[i] */
@ -511,10 +517,15 @@ no_volunteer:;
} }
if(track_source[0]) { if(track_source[0]) {
xorriso->do_close= !do_multi; xorriso->do_close= !do_multi;
xorriso->auto_close= 0; xorriso->auto_close= do_auto_close;
ret= Xorriso_burn_track(xorriso, (off_t) write_start_address, ret= Xorriso_burn_track(xorriso, (off_t) write_start_address,
track_source, (off_t) tsize, track_source, (off_t) tsize,
(!!do_grow) | ((!!do_isosize) << 1) | ((do_xa1 == 1) << 2)); (!!do_grow) | ((!!do_isosize) << 1) | ((do_xa1 == 1) << 2));
if(ret == 2) {
ret= Xorriso_retry_burn_track(xorriso, (off_t) write_start_address,
track_source, (off_t) tsize,
(!!do_grow) | ((!!do_isosize) << 1) | ((do_xa1 == 1) << 2));
}
aq_ret= Xorriso_reaquire_outdev(xorriso, 2*(ret>0)); aq_ret= Xorriso_reaquire_outdev(xorriso, 2*(ret>0));
if(ret<=0 && ret<aq_ret) if(ret<=0 && ret<aq_ret)
goto ex; goto ex;

View File

@ -9,7 +9,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 XORRECORD 1 "Version 1.3.3, Aug 07, 2013" .TH XORRECORD 1 "Version 1.3.3, Oct 27, 2013"
.\" 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:
@ -333,8 +333,9 @@ after the current session has been written.
Without it the disc gets closed and may not be written any more \- unless it Without it the disc gets closed and may not be written any more \- unless it
is a \-RW and gets blanked, which causes loss of its content. is a \-RW and gets blanked, which causes loss of its content.
.br .br
This option cannot be applied to DVD\-R DL and DVD\-RW which were blanked This option cannot be applied to DVD\-R DL or to DVD\-RW which were blanked
by type deformat_quickest. by mode "deformat_quickest". Option \-\-multi_if_possible
may automatically recognize and handle this situation.
.br .br
In order to have all filesystem content accessible, the eventual ISO\-9660 In order to have all filesystem content accessible, the eventual ISO\-9660
filesystem of a follow\-up filesystem of a follow\-up
@ -539,6 +540,14 @@ appendable rather than as blank. I.e. options \-msinfo and \-toc will work.
\-toc will always show a single session with its size increasing with \-toc will always show a single session with its size increasing with
every added ISO 9660 image. every added ISO 9660 image.
.TP .TP
\fB--multi_if_possible\fR
Apply option \-multi if the medium is suitable. Not suitable are DVD\-R DL
and DVD\-RW, which were blanked with mode "deformat_quickest".
.br
Not all drives correctly recognize such fast\-blanked DVD\-RW which need "on".
If there is well founded suspicion that a burn run failed due to
\-multi, then this causes a re\-try without \-multi.
.TP
\fBstream_recording="on"|"off"|number\fR \fBstream_recording="on"|"off"|number\fR
Mode "on" requests that compliance to the desired speed setting is Mode "on" requests that compliance to the desired speed setting is
preferred over management of write errors. With DVD\-RAM and BD this can preferred over management of write errors. With DVD\-RAM and BD this can

View File

@ -335,8 +335,9 @@ blank=mode
appendable after the current session has been written. Without it appendable after the current session has been written. Without it
the disc gets closed and may not be written any more - unless it the disc gets closed and may not be written any more - unless it
is a -RW and gets blanked, which causes loss of its content. is a -RW and gets blanked, which causes loss of its content.
This option cannot be applied to DVD-R DL and DVD-RW which were This option cannot be applied to DVD-R DL or to DVD-RW which were
blanked by type deformat_quickest. blanked by mode "deformat_quickest". Option -multi_if_possible may
automatically recognize and handle this situation.
In order to have all filesystem content accessible, the eventual In order to have all filesystem content accessible, the eventual
ISO-9660 filesystem of a follow-up session needs to be prepared in ISO-9660 filesystem of a follow-up session needs to be prepared in
a special way by the filesystem formatter program. mkisofs, a special way by the filesystem formatter program. mkisofs,
@ -533,6 +534,14 @@ File: xorrecord.info, Node: NonCdrecord, Next: ExDevices, Prev: Verbous, Up:
single session with its size increasing with every added ISO 9660 single session with its size increasing with every added ISO 9660
image. image.
--multi_if_possible
Apply option -multi if the medium is suitable. Not suitable are
DVD-R DL and DVD-RW, which were blanked with mode
"deformat_quickest".
Not all drives correctly recognize such fast-blanked DVD-RW which
need "on". If there is well founded suspicion that a burn run
failed due to -multi, then this causes a re-try without -multi.
stream_recording="on"|"off"|number stream_recording="on"|"off"|number
Mode "on" requests that compliance to the desired speed setting is Mode "on" requests that compliance to the desired speed setting is
preferred over management of write errors. With DVD-RAM and BD preferred over management of write errors. With DVD-RAM and BD
@ -828,42 +837,44 @@ File: xorrecord.info, Node: CommandIdx, Next: ConceptIdx, Prev: Legal, Up: T
* --devices get list of drives: DriveAddr. (line 8) * --devices get list of drives: DriveAddr. (line 8)
* --grow_overwriteable_iso emulate ISO 9660 multi-session: NonCdrecord. * --grow_overwriteable_iso emulate ISO 9660 multi-session: NonCdrecord.
(line 13) (line 13)
* --multi_if_possible apply -multi if medium is suitable: NonCdrecord.
(line 35)
* --no_rc do not execute xorriso startup files: NonCdrecord. * --no_rc do not execute xorriso startup files: NonCdrecord.
(line 8) (line 8)
* -atip inquire medium state: Inquire. (line 16) * -atip inquire medium state: Inquire. (line 16)
* -checkdrive inquire drive CD capabilities: Inquire. (line 12) * -checkdrive inquire drive CD capabilities: Inquire. (line 12)
* -dao explicitely set write type SAO/DAO: SetBurn. (line 177) * -dao explicitely set write type SAO/DAO: SetBurn. (line 178)
* -data explicitely announce a data track: SetBurn. (line 159) * -data explicitely announce a data track: SetBurn. (line 160)
* -dummy control write simulation: SetBurn. (line 101) * -dummy control write simulation: SetBurn. (line 102)
* -eject finally eject drive tray: SetBurn. (line 213) * -eject finally eject drive tray: SetBurn. (line 214)
* -help print sparse overview of options: Verbous. (line 33) * -help print sparse overview of options: Verbous. (line 33)
* -inq inquire drive identifiers: Inquire. (line 8) * -inq inquire drive identifiers: Inquire. (line 8)
* -isosize obtain track size from ISO 9660 superblock: SetBurn. * -isosize obtain track size from ISO 9660 superblock: SetBurn.
(line 135) (line 136)
* -msinfo retrieve multi-session info: Inquire. (line 48) * -msinfo retrieve multi-session info: Inquire. (line 48)
* -multi keep media appendable after burn run: SetBurn. (line 84) * -multi keep media appendable after burn run: SetBurn. (line 84)
* -nopad disable adding of bytes to end of track: SetBurn. (line 151) * -nopad disable adding of bytes to end of track: SetBurn. (line 152)
* -pad add 15 blocks to end of track: SetBurn. (line 154) * -pad add 15 blocks to end of track: SetBurn. (line 155)
* -sao explicitely set write type SAO/DAO: SetBurn. (line 172) * -sao explicitely set write type SAO/DAO: SetBurn. (line 173)
* -tao explicitely set write type TAO: SetBurn. (line 165) * -tao explicitely set write type TAO: SetBurn. (line 166)
* -toc inquire medium content: Inquire. (line 25) * -toc inquire medium content: Inquire. (line 25)
* -v increase program verbosity: Verbous. (line 17) * -v increase program verbosity: Verbous. (line 17)
* -V log SCSI command transactions to stderr: Verbous. (line 22) * -V log SCSI command transactions to stderr: Verbous. (line 22)
* -version report emulation and xorriso version: Verbous. (line 8) * -version report emulation and xorriso version: Verbous. (line 8)
* -waiti access drive only after stdin delivers data: SetBurn. * -waiti access drive only after stdin delivers data: SetBurn.
(line 109) (line 110)
* blank= make media re-usabable or format media: SetBurn. (line 27) * blank= make media re-usabable or format media: SetBurn. (line 27)
* dev= address the drive to be used: DriveAddr. (line 22) * dev= address the drive to be used: DriveAddr. (line 22)
* dvd_obs= set write transaction payload size: NonCdrecord. (line 46) * dvd_obs= set write transaction payload size: NonCdrecord. (line 54)
* fs= set program fifo size: SetBurn. (line 180) * fs= set program fifo size: SetBurn. (line 181)
* padsize= add bytes to end of track: SetBurn. (line 143) * padsize= add bytes to end of track: SetBurn. (line 144)
* speed= set write speed: SetBurn. (line 196) * speed= set write speed: SetBurn. (line 197)
* stdio_sync= control stdio buffer: NonCdrecord. (line 61) * stdio_sync= control stdio buffer: NonCdrecord. (line 69)
* stream_recording= try to get full speed on DVD-RAM, BD: NonCdrecord. * stream_recording= try to get full speed on DVD-RAM, BD: NonCdrecord.
(line 35) (line 43)
* tsize= set a fixed track size: SetBurn. (line 123) * tsize= set a fixed track size: SetBurn. (line 124)
* write_start_address= set block address for write start: NonCdrecord. * write_start_address= set block address for write start: NonCdrecord.
(line 54) (line 62)
 
File: xorrecord.info, Node: ConceptIdx, Prev: CommandIdx, Up: Top File: xorrecord.info, Node: ConceptIdx, Prev: CommandIdx, Up: Top
@ -874,22 +885,23 @@ File: xorrecord.info, Node: ConceptIdx, Prev: CommandIdx, Up: Top
[index] [index]
* Menu: * Menu:
* Accessing drive, wait for stdin, -waiti: SetBurn. (line 109) * Accessing drive, wait for stdin, -waiti: SetBurn. (line 110)
* Bugs, reporting: Bugreport. (line 6) * Bugs, reporting: Bugreport. (line 6)
* Data track, announce, -data: SetBurn. (line 159) * Data track, announce, -data: SetBurn. (line 160)
* Defect management, control, stream_recording=: NonCdrecord. (line 35) * Defect management, control, stream_recording=: NonCdrecord. (line 43)
* Drive, address, dev=: DriveAddr. (line 22) * Drive, address, dev=: DriveAddr. (line 22)
* Drive, get list of, --devices: DriveAddr. (line 8) * Drive, get list of, --devices: DriveAddr. (line 8)
* Drive, inquire CD capabilities, -checkdrive: Inquire. (line 12) * Drive, inquire CD capabilities, -checkdrive: Inquire. (line 12)
* Drive, inquire identifiers, -inq: Inquire. (line 8) * Drive, inquire identifiers, -inq: Inquire. (line 8)
* Eject, the tray, -eject: SetBurn. (line 213) * Eject, the tray, -eject: SetBurn. (line 214)
* Examples: Examples. (line 6) * Examples: Examples. (line 6)
* Fifo, set size, fs=: SetBurn. (line 180) * Fifo, set size, fs=: SetBurn. (line 181)
* Full speed, on DVD-RAM and BD, stream_recording=: NonCdrecord. * Full speed, on DVD-RAM and BD, stream_recording=: NonCdrecord.
(line 35) (line 43)
* Media types, _definiton: Standards. (line 23) * Media types, _definiton: Standards. (line 23)
* Media, blank, blank=: SetBurn. (line 27) * Media, blank, blank=: SetBurn. (line 27)
* Media, format, blank=: SetBurn. (line 27) * Media, format, blank=: SetBurn. (line 27)
* Media, keep appendable, --multi_if_possible: NonCdrecord. (line 35)
* Media, keep appendable, -multi: SetBurn. (line 84) * Media, keep appendable, -multi: SetBurn. (line 84)
* Media, make re-usable, blank=: SetBurn. (line 27) * Media, make re-usable, blank=: SetBurn. (line 27)
* medium content, inquire, -toc: Inquire. (line 25) * medium content, inquire, -toc: Inquire. (line 25)
@ -900,30 +912,30 @@ File: xorrecord.info, Node: ConceptIdx, Prev: CommandIdx, Up: Top
(line 13) (line 13)
* Options, overview, -help: Verbous. (line 33) * Options, overview, -help: Verbous. (line 33)
* Overwritable media, _definiton: Standards. (line 30) * Overwritable media, _definiton: Standards. (line 30)
* Padding, at end of track, padsize=: SetBurn. (line 143) * Padding, at end of track, padsize=: SetBurn. (line 144)
* Padding, disable, -nopad: SetBurn. (line 151) * Padding, disable, -nopad: SetBurn. (line 152)
* Padding, insufficient old, -pad: SetBurn. (line 154) * Padding, insufficient old, -pad: SetBurn. (line 155)
* Problems, reporting: Bugreport. (line 6) * Problems, reporting: Bugreport. (line 6)
* SCSI commands, log, -V: Verbous. (line 22) * SCSI commands, log, -V: Verbous. (line 22)
* Sequentially recordable media, _definiton: Standards. (line 25) * Sequentially recordable media, _definiton: Standards. (line 25)
* Session, _definiton: Standards. (line 12) * Session, _definiton: Standards. (line 12)
* Speed, set for writing, speed=: SetBurn. (line 196) * Speed, set for writing, speed=: SetBurn. (line 197)
* Startup files, do not execute, --no_rc: NonCdrecord. (line 8) * Startup files, do not execute, --no_rc: NonCdrecord. (line 8)
* Track size, obtain from ISO 9660, -isosize: SetBurn. (line 135) * Track size, obtain from ISO 9660, -isosize: SetBurn. (line 136)
* Track size, set fixed, tsize=: SetBurn. (line 123) * Track size, set fixed, tsize=: SetBurn. (line 124)
* Track, _definiton: Standards. (line 13) * Track, _definiton: Standards. (line 13)
* Transaction size, set, dvd_obs=: NonCdrecord. (line 46) * Transaction size, set, dvd_obs=: NonCdrecord. (line 54)
* Tray, eject, -eject: SetBurn. (line 213) * Tray, eject, -eject: SetBurn. (line 214)
* Verbosity, increase, -v: Verbous. (line 17) * Verbosity, increase, -v: Verbous. (line 17)
* Verbosity, SCSI commands, -V: Verbous. (line 22) * Verbosity, SCSI commands, -V: Verbous. (line 22)
* Version, report, -version: Verbous. (line 8) * Version, report, -version: Verbous. (line 8)
* Write simulation , control, -dummy: SetBurn. (line 101) * Write simulation , control, -dummy: SetBurn. (line 102)
* Write start address, set, write_start_address=: NonCdrecord. * Write start address, set, write_start_address=: NonCdrecord.
(line 54) (line 62)
* Write type, SAO/DAO, -dao: SetBurn. (line 177) * Write type, SAO/DAO, -dao: SetBurn. (line 178)
* Write type, SAO/DAO, -sao: SetBurn. (line 172) * Write type, SAO/DAO, -sao: SetBurn. (line 173)
* Write type, TAO, -tao: SetBurn. (line 165) * Write type, TAO, -tao: SetBurn. (line 166)
* Write, buffer syncing, stdio_sync=: NonCdrecord. (line 61) * Write, buffer syncing, stdio_sync=: NonCdrecord. (line 69)
* xorriso, mkisofs emulation: Xorriso. (line 6) * xorriso, mkisofs emulation: Xorriso. (line 6)
* xorriso, options: Options. (line 6) * xorriso, options: Options. (line 6)
@ -939,23 +951,23 @@ Node: Options5872
Node: DriveAddr6240 Node: DriveAddr6240
Node: Inquire7566 Node: Inquire7566
Node: SetBurn10436 Node: SetBurn10436
Node: Verbous20646 Node: Verbous20736
Node: NonCdrecord22196 Node: NonCdrecord22286
Node: Examples25362 Node: Examples25831
Node: ExDevices26023 Node: ExDevices26492
Node: ExMedium26241 Node: ExMedium26710
Node: ExBlank26504 Node: ExBlank26973
Node: ExFormat26725 Node: ExFormat27194
Node: ExDeformat27239 Node: ExDeformat27708
Node: ExIsoSingle27506 Node: ExIsoSingle27975
Node: ExIsoMulti27790 Node: ExIsoMulti28259
Node: ExIsoFly29396 Node: ExIsoFly29865
Node: ExAfio30059 Node: ExAfio30528
Node: Files31040 Node: Files31509
Node: Seealso31587 Node: Seealso32056
Node: Bugreport31952 Node: Bugreport32421
Node: Legal32533 Node: Legal33002
Node: CommandIdx33460 Node: CommandIdx33929
Node: ConceptIdx36446 Node: ConceptIdx37061
 
End Tag Table End Tag Table

View File

@ -50,7 +50,7 @@
@c man .\" First parameter, NAME, should be all caps @c man .\" First parameter, NAME, should be all caps
@c man .\" Second parameter, SECTION, should be 1-8, maybe w/ subsection @c man .\" Second parameter, SECTION, should be 1-8, maybe w/ subsection
@c man .\" other parameters are allowed: see man(7), man(1) @c man .\" other parameters are allowed: see man(7), man(1)
@c man .TH XORRECORD 1 "Version 1.3.3, Aug 07, 2013" @c man .TH XORRECORD 1 "Version 1.3.3, Oct 27, 2013"
@c man .\" Please adjust this date whenever revising the manpage. @c man .\" Please adjust this date whenever revising the manpage.
@c man .\" @c man .\"
@c man .\" Some roff macros, for reference: @c man .\" Some roff macros, for reference:
@ -229,7 +229,7 @@ options does not matter.
All pending actions get performed in a fixed sequence before the program All pending actions get performed in a fixed sequence before the program
run ends resp. before cdrecord emulation ends. run ends resp. before cdrecord emulation ends.
@c man .SS @c man .SS
@node Options, Examples, Xorriso, top @node Options, Examples, Xorriso, Top
@chapter Options @chapter Options
@cindex xorriso, options @cindex xorriso, options
@c man .br @c man .br
@ -484,8 +484,9 @@ after the current session has been written.
Without it the disc gets closed and may not be written any more - unless it Without it the disc gets closed and may not be written any more - unless it
is a -RW and gets blanked, which causes loss of its content. is a -RW and gets blanked, which causes loss of its content.
@* @*
This option cannot be applied to DVD-R DL and DVD-RW which were blanked This option cannot be applied to DVD-R DL or to DVD-RW which were blanked
by type deformat_quickest. by mode "deformat_quickest". Option --multi_if_possible
may automatically recognize and handle this situation.
@* @*
In order to have all filesystem content accessible, the eventual ISO-9660 In order to have all filesystem content accessible, the eventual ISO-9660
filesystem of a follow-up filesystem of a follow-up
@ -742,6 +743,16 @@ appendable rather than as blank. I.e. options -msinfo and -toc will work.
-toc will always show a single session with its size increasing with -toc will always show a single session with its size increasing with
every added ISO 9660 image. every added ISO 9660 image.
@c man .TP @c man .TP
@item @minus{}@minus{}multi_if_possible
@kindex @minus{}@minus{}multi_if_possible apply -multi if medium is suitable
@cindex Media, keep appendable, @minus{}@minus{}multi_if_possible
Apply option -multi if the medium is suitable. Not suitable are DVD-R DL
and DVD-RW, which were blanked with mode "deformat_quickest".
@*
Not all drives correctly recognize such fast-blanked DVD-RW which need "on".
If there is well founded suspicion that a burn run failed due to
-multi, then this causes a re-try without -multi.
@c man .TP
@item stream_recording="on"|"off"|number @item stream_recording="on"|"off"|number
@kindex stream_recording= try to get full speed on DVD-RAM, BD @kindex stream_recording= try to get full speed on DVD-RAM, BD
@cindex Full speed, on DVD-RAM and BD, stream_recording= @cindex Full speed, on DVD-RAM and BD, stream_recording=
@ -1078,7 +1089,7 @@ Compliments towards Joerg Schilling whose cdrtools served me for ten years.
@chapter Alphabetic Command List @chapter Alphabetic Command List
@printindex ky @printindex ky
@node ConceptIdx,, CommandIdx, top @node ConceptIdx,, CommandIdx, Top
@chapter Alphabetic List of Concepts and Objects @chapter Alphabetic List of Concepts and Objects
@printindex cp @printindex cp

View File

@ -1 +1 @@
#define Xorriso_timestamP "2013.10.28.150924" #define Xorriso_timestamP "2013.10.28.151434"