New option -close_damaged

This commit is contained in:
Thomas Schmitt 2011-06-01 16:52:29 +00:00
parent a06b171f54
commit 4c1b8c0a03
11 changed files with 172 additions and 42 deletions

View File

@ -143,6 +143,7 @@ Xorriso_option_chmodi;
Xorriso_option_chowni; Xorriso_option_chowni;
Xorriso_option_clone; Xorriso_option_clone;
Xorriso_option_close; Xorriso_option_close;
Xorriso_option_close_damaged;
Xorriso_option_close_filter_list; Xorriso_option_close_filter_list;
Xorriso_option_commit; Xorriso_option_commit;
Xorriso_option_commit_eject; Xorriso_option_commit_eject;

View File

@ -1745,6 +1745,34 @@ int Xorriso_option_close(struct XorrisO *xorriso, char *mode, int flag)
} }
/* Option -close_damaged */
int Xorriso_option_close_damaged(struct XorrisO *xorriso, char *mode, int flag)
{
int ret, force= 0;
if(strcmp(mode, "as_needed") == 0 || strcmp(mode, "") == 0)
force= 0;
else if(strcmp(mode, "force") == 0)
force= 1;
else {
sprintf(xorriso->info_text, "-close_damaged: unknown mode ");
Text_shellsafe(mode, xorriso->info_text, 1);
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "FAILURE", 0);
return(0);
}
ret= Xorriso_reassure(xorriso, "-close_damaged",
"Close damaged track and session", 0);
if(ret <= 0)
{ret= 2; goto ex;}
ret= Xorriso_close_damaged(xorriso, force);
if(ret <= 0)
goto ex;
ret= 1;
ex:;
return(ret);
}
/* Option -close_filter_list */ /* Option -close_filter_list */
int Xorriso_option_close_filter_list(struct XorrisO *xorriso, int flag) int Xorriso_option_close_filter_list(struct XorrisO *xorriso, int flag)
{ {

View File

@ -1449,6 +1449,8 @@ int Xorriso_option_help(struct XorrisO *xorriso, int flag)
" Classify stdio drives by effective access permissions.", " Classify stdio drives by effective access permissions.",
" -blank \"fast\"|\"all\"|\"deformat\"|\"deformat_quickest\"", " -blank \"fast\"|\"all\"|\"deformat\"|\"deformat_quickest\"",
" Blank media resp. invalidate ISO image on media.", " Blank media resp. invalidate ISO image on media.",
" -close_damaged \"as_needed\"|\"force\"",
" Close track and session of damaged media.",
" -format \"as_needed\"|\"full\"|\"fast\"|\"by_index_#\"|\"by_size_#\"", " -format \"as_needed\"|\"full\"|\"fast\"|\"by_index_#\"|\"by_size_#\"",
" Format BD-RE, BD-R, DVD-RAM, DVD-RW, DVD+RW.", " Format BD-RE, BD-R, DVD-RAM, DVD-RW, DVD+RW.",
" -volid volume_id", " -volid volume_id",

View File

@ -458,7 +458,7 @@ int Xorriso_count_args(struct XorrisO *xorriso, int argc, char **argv,
"abort_on","acl","add_plainly","application_id","auto_charset", "abort_on","acl","add_plainly","application_id","auto_charset",
"abstract_file", "abstract_file",
"backslash_codes","blank","biblio_file", "backslash_codes","blank","biblio_file",
"calm_drive","cd","cdi","cdx","charset","close", "calm_drive","cd","cdi","cdx","charset","close","close_damaged",
"commit_eject","compliance","copyright_file", "commit_eject","compliance","copyright_file",
"dev","dialog","disk_dev_ino","disk_pattern","displacement", "dev","dialog","disk_dev_ino","disk_pattern","displacement",
"dummy","dvd_obs","early_stdio_test", "eject", "dummy","dvd_obs","early_stdio_test", "eject",
@ -766,6 +766,10 @@ next_command:;
(*idx)++; (*idx)++;
ret= Xorriso_option_close(xorriso, arg1, 0); ret= Xorriso_option_close(xorriso, arg1, 0);
} else if(strcmp(cmd,"close_damaged")==0) {
(*idx)++;
ret= Xorriso_option_close_damaged(xorriso, arg1, 0);
} else if(strcmp(cmd,"close_filter_list")==0) { } else if(strcmp(cmd,"close_filter_list")==0) {
ret= Xorriso_option_close_filter_list(xorriso, 0); ret= Xorriso_option_close_filter_list(xorriso, 0);

View File

@ -2513,3 +2513,40 @@ ex:
return(ret); return(ret);
} }
/* @param flag bit0=force burn_disc_close_damaged()
*/
int Xorriso_close_damaged(struct XorrisO *xorriso, int flag)
{
int ret;
struct burn_drive_info *dinfo;
struct burn_drive *drive;
struct burn_write_opts *burn_options= NULL;
if(xorriso->volset_change_pending) {
sprintf(xorriso->info_text,
"Image changes pending. -commit or -rollback first");
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "FAILURE", 0);
ret= 0; goto ex;
}
ret= Xorriso_get_drive_handles(xorriso, &dinfo, &drive,
"on attempt to closed damaged session", 2);
if(ret<=0)
goto ex;
ret= Xorriso_make_write_options(xorriso, drive, &burn_options, 0);
if(ret <= 0)
goto ex;
ret= burn_disc_close_damaged(burn_options, flag & 1);
Xorriso_process_msg_queues(xorriso, 0);
Xorriso_option_dev(xorriso, "", 3 | 4); /* Give up drives */
if(ret <= 0)
goto ex;
ret= 1;
ex:;
Xorriso_process_msg_queues(xorriso, 0);
if(burn_options != NULL)
burn_write_opts_free(burn_options);
return(ret);
}

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 XORRISO 1 "Version 1.0.9, May 29, 2011" .TH XORRISO 1 "Version 1.0.9, Jun 01, 2011"
.\" 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:
@ -2049,6 +2049,22 @@ MMC format codes are manifold. Most important are:
.br .br
Smaller format size with DVD\-RAM, BD\-RE, or BD\-R means more reserve space. Smaller format size with DVD\-RAM, BD\-RE, or BD\-R means more reserve space.
.TP .TP
\fB\-close_damaged\fR "as_needed"|"force"
Try to close the upcomming track and session if the drive reported the media
as damaged. This may apply to CD\-R, CD\-RW, DVD\-R, DVD\-RW, DVD+R, DVD+R DL,
or BD\-R media. It is indicated by warning messages when the drive gets
aquired, and by a remark "but next track is damaged" with the line
"Media status :" of command \-toc.
.br
The setting of option \-close determines whether the media stays appendable.
.br
Mode "as_needed" gracefully refuses on media which are not reported as
damaged. Mode "force" attempts the close operation even with media which
appear undamaged.
.br
No image changes are allowed to be pending before this command is performed.
After closing was attempted, both drives are given up.
.TP
\fB\-list_profiles\fR "in"|"out"|"all" \fB\-list_profiles\fR "in"|"out"|"all"
Put out a list of media types supported by \-indev, resp. \-outdev, resp. both. Put out a list of media types supported by \-indev, resp. \-outdev, resp. both.
The currently recognized type is marked by text "(current)". The currently recognized type is marked by text "(current)".

View File

@ -724,6 +724,11 @@ int Xorriso_option_clone(struct XorrisO *xorriso, char *origin, char *dest,
/* Option -close "on"|"off" */ /* Option -close "on"|"off" */
int Xorriso_option_close(struct XorrisO *xorriso, char *mode, int flag); int Xorriso_option_close(struct XorrisO *xorriso, char *mode, int flag);
/* Option -close_damaged */
/* @since 1.1.0 */
int Xorriso_option_close_damaged(struct XorrisO *xorriso, char *mode,
int flag);
/* Option -close_filter_list */ /* Option -close_filter_list */
int Xorriso_option_close_filter_list(struct XorrisO *xorriso, int flag); int Xorriso_option_close_filter_list(struct XorrisO *xorriso, int flag);

View File

@ -1828,6 +1828,20 @@ File: xorriso.info, Node: Writing, Next: SetWrite, Prev: Filter, Up: Options
Smaller format size with DVD-RAM, BD-RE, or BD-R means more Smaller format size with DVD-RAM, BD-RE, or BD-R means more
reserve space. reserve space.
-close_damaged "as_needed"|"force"
Try to close the upcomming track and session if the drive reported
the media as damaged. This may apply to CD-R, CD-RW, DVD-R,
DVD-RW, DVD+R, DVD+R DL, or BD-R media. It is indicated by warning
messages when the drive gets aquired, and by a remark "but next
track is damaged" with the line "Media status :" of command -toc.
The setting of option -close determines whether the media stays
appendable.
Mode "as_needed" gracefully refuses on media which are not
reported as damaged. Mode "force" attempts the close operation
even with media which appear undamaged.
No image changes are allowed to be pending before this command is
performed. After closing was attempted, both drives are given up.
-list_profiles "in"|"out"|"all" -list_profiles "in"|"out"|"all"
Put out a list of media types supported by -indev, resp. -outdev, Put out a list of media types supported by -indev, resp. -outdev,
resp. both. The currently recognized type is marked by text resp. both. The currently recognized type is marked by text
@ -4192,6 +4206,7 @@ File: xorriso.info, Node: CommandIdx, Next: ConceptIdx, Prev: Legal, Up: Top
* -chown_r sets ownership in ISO image: Manip. (line 47) * -chown_r sets ownership in ISO image: Manip. (line 47)
* -clone copies ISO directory tree: Insert. (line 171) * -clone copies ISO directory tree: Insert. (line 171)
* -close controls media closing: SetWrite. (line 262) * -close controls media closing: SetWrite. (line 262)
* -close_damaged closes damaged track and session: Writing. (line 122)
* -close_filter_list bans filter registration: Filter. (line 52) * -close_filter_list bans filter registration: Filter. (line 52)
* -commit writes pending ISO image: Writing. (line 13) * -commit writes pending ISO image: Writing. (line 13)
* -commit_eject writes and ejects: Writing. (line 40) * -commit_eject writes and ejects: Writing. (line 40)
@ -4255,7 +4270,7 @@ File: xorriso.info, Node: CommandIdx, Next: ConceptIdx, Prev: Legal, Up: Top
* -joliet enables production of Joliet tree: SetWrite. (line 10) * -joliet enables production of Joliet tree: SetWrite. (line 10)
* -list_delimiter replaces '--': Scripting. (line 42) * -list_delimiter replaces '--': Scripting. (line 42)
* -list_formats lists available formats: Writing. (line 110) * -list_formats lists available formats: Writing. (line 110)
* -list_profiles lists supported media: Writing. (line 122) * -list_profiles lists supported media: Writing. (line 136)
* -load addresses a particular session as input: Loading. (line 11) * -load addresses a particular session as input: Loading. (line 11)
* -local_charset sets terminal character set: Charset. (line 47) * -local_charset sets terminal character set: Charset. (line 47)
* -logfile logs output channels to file: Frontend. (line 20) * -logfile logs output channels to file: Frontend. (line 20)
@ -4396,6 +4411,7 @@ File: xorriso.info, Node: ConceptIdx, Prev: CommandIdx, Up: Top
* Create, new ISO image, _definiton: Methods. (line 6) * Create, new ISO image, _definiton: Methods. (line 6)
* Cylinder alignment, _definiton: Bootable. (line 169) * Cylinder alignment, _definiton: Bootable. (line 169)
* Cylinder size, _definiton: Bootable. (line 158) * Cylinder size, _definiton: Bootable. (line 158)
* Damaged track and session, close, -close_damaged: Writing. (line 122)
* Delete, from ISO image, -rm: Manip. (line 21) * Delete, from ISO image, -rm: Manip. (line 21)
* Delete, from ISO image, -rm_r: Manip. (line 28) * Delete, from ISO image, -rm_r: Manip. (line 28)
* Delete, ISO directory, -rmdir: Manip. (line 32) * Delete, ISO directory, -rmdir: Manip. (line 32)
@ -4418,7 +4434,7 @@ File: xorriso.info, Node: ConceptIdx, Prev: CommandIdx, Up: Top
* Drive, for input, -indev: AqDrive. (line 22) * Drive, for input, -indev: AqDrive. (line 22)
* Drive, for output, -outdev: AqDrive. (line 29) * Drive, for output, -outdev: AqDrive. (line 29)
* Drive, get drive list, -devices: Inquiry. (line 7) * Drive, get drive list, -devices: Inquiry. (line 7)
* Drive, list supported media, -list_profiles: Writing. (line 122) * Drive, list supported media, -list_profiles: Writing. (line 136)
* Drive, reduce activity, -calm_drive: Loading. (line 235) * Drive, reduce activity, -calm_drive: Loading. (line 235)
* Drive, report SCSI commands, -scsi_log: Scripting. (line 125) * Drive, report SCSI commands, -scsi_log: Scripting. (line 125)
* Drive, write and eject, -commit_eject: Writing. (line 40) * Drive, write and eject, -commit_eject: Writing. (line 40)
@ -4634,41 +4650,41 @@ Node: Manip60375
Node: CmdFind69060 Node: CmdFind69060
Node: Filter80363 Node: Filter80363
Node: Writing84720 Node: Writing84720
Node: SetWrite91164 Node: SetWrite91955
Node: Bootable105210 Node: Bootable106001
Node: Jigdo118530 Node: Jigdo119321
Node: Charset122794 Node: Charset123585
Node: Exception125553 Node: Exception126344
Node: DialogCtl131693 Node: DialogCtl132484
Node: Inquiry134280 Node: Inquiry135071
Node: Navigate138663 Node: Navigate139454
Node: Verify146603 Node: Verify147394
Node: Restore155198 Node: Restore155989
Node: Emulation161858 Node: Emulation162649
Node: Scripting171731 Node: Scripting172522
Node: Frontend177881 Node: Frontend178672
Node: Examples179180 Node: Examples179971
Node: ExDevices180351 Node: ExDevices181142
Node: ExCreate180989 Node: ExCreate181780
Node: ExDialog182263 Node: ExDialog183054
Node: ExGrowing183525 Node: ExGrowing184316
Node: ExModifying184327 Node: ExModifying185118
Node: ExBootable184828 Node: ExBootable185619
Node: ExCharset185377 Node: ExCharset186168
Node: ExPseudo186205 Node: ExPseudo186996
Node: ExCdrecord187103 Node: ExCdrecord187894
Node: ExMkisofs187418 Node: ExMkisofs188209
Node: ExGrowisofs188756 Node: ExGrowisofs189547
Node: ExException189891 Node: ExException190682
Node: ExTime190345 Node: ExTime191136
Node: ExIncBackup190804 Node: ExIncBackup191595
Node: ExRestore194728 Node: ExRestore195519
Node: ExRecovery195697 Node: ExRecovery196488
Node: Files196263 Node: Files197054
Node: Seealso197561 Node: Seealso198352
Node: Bugreport198149 Node: Bugreport198940
Node: Legal198730 Node: Legal199521
Node: CommandIdx199660 Node: CommandIdx200451
Node: ConceptIdx214328 Node: ConceptIdx215192
 
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 XORRISO 1 "Version 1.0.9, May 29, 2011" @c man .TH XORRISO 1 "Version 1.0.9, Jun 01, 2011"
@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:
@ -2459,6 +2459,24 @@ MMC format codes are manifold. Most important are:
@* @*
Smaller format size with DVD-RAM, BD-RE, or BD-R means more reserve space. Smaller format size with DVD-RAM, BD-RE, or BD-R means more reserve space.
@c man .TP @c man .TP
@item -close_damaged "as_needed"|"force"
@kindex -close_damaged closes damaged track and session
@cindex Damaged track and session, close, -close_damaged
Try to close the upcomming track and session if the drive reported the media
as damaged. This may apply to CD-R, CD-RW, DVD-R, DVD-RW, DVD+R, DVD+R DL,
or BD-R media. It is indicated by warning messages when the drive gets
aquired, and by a remark "but next track is damaged" with the line
"Media status :" of command -toc.
@*
The setting of option -close determines whether the media stays appendable.
@*
Mode "as_needed" gracefully refuses on media which are not reported as
damaged. Mode "force" attempts the close operation even with media which
appear undamaged.
@*
No image changes are allowed to be pending before this command is performed.
After closing was attempted, both drives are given up.
@c man .TP
@item -list_profiles "in"|"out"|"all" @item -list_profiles "in"|"out"|"all"
@kindex -list_profiles lists supported media @kindex -list_profiles lists supported media
@cindex Drive, list supported media, -list_profiles @cindex Drive, list supported media, -list_profiles

View File

@ -1 +1 @@
#define Xorriso_timestamP "2011.05.31.092902" #define Xorriso_timestamP "2011.06.01.165129"

View File

@ -574,6 +574,9 @@ int Xorriso_mark_update_merge(struct XorrisO *xorriso, char *path,
*/ */
int Xorriso_set_signal_handling(struct XorrisO *xorriso, int flag); int Xorriso_set_signal_handling(struct XorrisO *xorriso, int flag);
/* @param flag bit0=force burn_disc_close_damaged()
*/
int Xorriso_close_damaged(struct XorrisO *xorriso, int flag);
#endif /* Xorrisoburn_includeD */ #endif /* Xorrisoburn_includeD */