From f689525bee05348c1112bdf6880d209fb1e58e61 Mon Sep 17 00:00:00 2001 From: Thomas Schmitt Date: Wed, 24 Oct 2012 09:59:13 +0000 Subject: [PATCH] New -blank mode prefix "force:" --- libisoburn/trunk/xorriso/drive_mgt.c | 22 ++++ libisoburn/trunk/xorriso/opts_a_c.c | 16 ++- libisoburn/trunk/xorriso/opts_d_h.c | 3 +- libisoburn/trunk/xorriso/xorriso.1 | 9 +- libisoburn/trunk/xorriso/xorriso.info | 101 ++++++++++--------- libisoburn/trunk/xorriso/xorriso.texi | 9 +- libisoburn/trunk/xorriso/xorriso_timestamp.h | 2 +- libisoburn/trunk/xorriso/xorrisoburn.h | 2 + 8 files changed, 106 insertions(+), 58 deletions(-) diff --git a/libisoburn/trunk/xorriso/drive_mgt.c b/libisoburn/trunk/xorriso/drive_mgt.c index b5c63bae..3d6c25b4 100644 --- a/libisoburn/trunk/xorriso/drive_mgt.c +++ b/libisoburn/trunk/xorriso/drive_mgt.c @@ -3119,3 +3119,25 @@ int Xorriso_get_drive_handles(struct XorrisO *xorriso, return((*drive)!=NULL); } + +int Xorriso_pretend_full_disc(struct XorrisO *xorriso, int flag) +{ + int ret; + struct burn_drive_info *dinfo; + struct burn_drive *drive; + + ret= Xorriso_get_drive_handles(xorriso, &dinfo, &drive, + "on attempt to let libburn pretend having a closed medium", 2); + if(ret<=0) + return(ret); + ret= burn_disc_pretend_full(drive); + Xorriso_process_msg_queues(xorriso,0); + if(ret <= 0) { + sprintf(xorriso->info_text, + "Failed to let libburn pretend having a closed medium"); + Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "FAILURE", 0); + return(0); + } + return(1); +} + diff --git a/libisoburn/trunk/xorriso/opts_a_c.c b/libisoburn/trunk/xorriso/opts_a_c.c index 79874c9e..08dad9f3 100644 --- a/libisoburn/trunk/xorriso/opts_a_c.c +++ b/libisoburn/trunk/xorriso/opts_a_c.c @@ -535,10 +535,10 @@ int Xorriso_option_biblio_file(struct XorrisO *xorriso, char *name, int flag) /* @param flag bit0= format rather than blank @return <=0 error , 1 success, 2 revoked by -reassure */ -int Xorriso_option_blank(struct XorrisO *xorriso, char *mode, int flag) +int Xorriso_option_blank(struct XorrisO *xorriso, char *in_mode, int flag) { - char *cmd= "-blank"; - int aq_ret, ret, mode_flag= 0, as_needed= 0, idx; + char *cmd= "-blank", *mode; + int aq_ret, ret, mode_flag= 0, as_needed= 0, idx, do_force= 0; off_t size= 0; if(flag&1) @@ -562,6 +562,11 @@ int Xorriso_option_blank(struct XorrisO *xorriso, char *mode, int flag) if(ret<=0) return(2); + if(strncmp(in_mode, "force:", 6) == 0) { + do_force= 1; + mode= in_mode + 6; + } else + mode= in_mode; if(strcmp(mode, "as_needed")==0 || mode[0]==0) as_needed= 1; else if(strcmp(mode, "all")==0 || strcmp(mode, "full")==0) @@ -617,6 +622,11 @@ unusable_size:; Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "FAILURE", 0); return(0); } + if(do_force) { + ret= Xorriso_pretend_full_disc(xorriso, 0); + if(ret <= 0) + return(ret); + } if(as_needed) ret= Xorriso_blank_as_needed(xorriso, (flag&1)<<2); else if(flag&1) diff --git a/libisoburn/trunk/xorriso/opts_d_h.c b/libisoburn/trunk/xorriso/opts_d_h.c index dc6fffe3..8e6f573c 100644 --- a/libisoburn/trunk/xorriso/opts_d_h.c +++ b/libisoburn/trunk/xorriso/opts_d_h.c @@ -1578,8 +1578,9 @@ int Xorriso_option_help(struct XorrisO *xorriso, int flag) " Classify stdio drives by effective access permissions.", " -data_cache_size number_of_tiles blocks_per_tile", " Adjust size and granularity of the data read cache.", -" -blank \"fast\"|\"all\"|\"deformat\"|\"deformat_quickest\"", +" -blank [\"force:\"]\"fast\"|\"all\"|\"deformat\"|\"deformat_quickest\"", " Blank medium resp. invalidate ISO image on medium.", +" Prefix \"force:\" overrides medium evaluation.", " -close_damaged \"as_needed\"|\"force\"", " Close track and session of damaged medium.", " -format \"as_needed\"|\"full\"|\"fast\"|\"by_index_#\"|\"by_size_#\"", diff --git a/libisoburn/trunk/xorriso/xorriso.1 b/libisoburn/trunk/xorriso/xorriso.1 index 530d36a4..9c6ed649 100644 --- a/libisoburn/trunk/xorriso/xorriso.1 +++ b/libisoburn/trunk/xorriso/xorriso.1 @@ -9,7 +9,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 "Version 1.2.5, Oct 18, 2012" +.TH XORRISO 1 "Version 1.2.5, Oct 23, 2012" .\" Please adjust this date whenever revising the manpage. .\" .\" Some roff macros, for reference: @@ -2187,6 +2187,11 @@ The progress reports issued by some drives while blanking are quite unrealistic. Do not conclude success or failure from the reported percentages. Blanking was successful if no SORRY event or worse occured. +.br +Mode may be prepended by "force:" in order to override the evaluation +of the medium state by libburn. E.g. "force:fast". +Blanking will nevertheless only succeed if the drive is willing to do it. +.br .TP \fB\-format\fR mode Convert unformatted DVD\-RW into overwriteable ones, "de\-ice" DVD+RW, format @@ -2665,7 +2670,7 @@ and is one aspect of growisofs option \-dvd\-compat. .TP \fB\-write_type\fR "auto"|"tao"|"sao/dao" Set the write type for the next burn run. "auto" will select SAO with blank -CD media, DAO with DVD\-R[W] if \-close is "on", and elsewise CD TAO or the +CD media, DAO with blank DVD\-R[W] if \-close is "on", and elsewise CD TAO or the equivalent write type of the particular DVD/BD media. Choosing TAO or SAO/DAO explicitely might cause the burn run to fail if the desired write type is not possible with the given media state. diff --git a/libisoburn/trunk/xorriso/xorriso.info b/libisoburn/trunk/xorriso/xorriso.info index 2af2abbc..1893fe5f 100644 --- a/libisoburn/trunk/xorriso/xorriso.info +++ b/libisoburn/trunk/xorriso/xorriso.info @@ -1946,7 +1946,10 @@ File: xorriso.info, Node: Writing, Next: SetWrite, Prev: Filter, Up: Options quite unrealistic. Do not conclude success or failure from the reported percentages. Blanking was successful if no SORRY event or worse occured. - + Mode may be prepended by "force:" in order to override the + evaluation of the medium state by libburn. E.g. "force:fast". + Blanking will nevertheless only succeed if the drive is willing to + do it. -format mode Convert unformatted DVD-RW into overwriteable ones, "de-ice" DVD+RW, format newly purchased BD-RE or BD-R, re-format DVD-RAM or @@ -2370,8 +2373,8 @@ according to the setting of command -acl. -write_type "auto"|"tao"|"sao/dao" Set the write type for the next burn run. "auto" will select SAO - with blank CD media, DAO with DVD-R[W] if -close is "on", and - elsewise CD TAO or the equivalent write type of the particular + with blank CD media, DAO with blank DVD-R[W] if -close is "on", + and elsewise CD TAO or the equivalent write type of the particular DVD/BD media. Choosing TAO or SAO/DAO explicitely might cause the burn run to fail if the desired write type is not possible with the given media state. @@ -4560,7 +4563,7 @@ File: xorriso.info, Node: CommandIdx, Next: ConceptIdx, Prev: Legal, Up: Top * -chown_r sets ownership in ISO image: Manip. (line 47) * -clone copies ISO directory tree: Insert. (line 179) * -close controls media closing: SetWrite. (line 333) -* -close_damaged closes damaged track and session: Writing. (line 152) +* -close_damaged closes damaged track and session: Writing. (line 155) * -close_filter_list bans filter registration: Filter. (line 52) * -commit writes pending ISO image: Writing. (line 29) * -commit_eject writes and ejects: Writing. (line 56) @@ -4607,7 +4610,7 @@ File: xorriso.info, Node: CommandIdx, Next: ConceptIdx, Prev: Legal, Up: Top * -findx traverses disk tree: Navigate. (line 106) * -follow softlinks and mount points: SetInsert. (line 76) * -for_backup -acl,-xattr,-hardlinks,-md5: Loading. (line 185) -* -format formats media: Writing. (line 88) +* -format formats media: Writing. (line 91) * -fs sets size of fifo: SetWrite. (line 326) * -getfacl shows ACL in ISO image: Navigate. (line 70) * -getfacl_r shows ACL in ISO image: Navigate. (line 77) @@ -4629,9 +4632,9 @@ File: xorriso.info, Node: CommandIdx, Next: ConceptIdx, Prev: Legal, Up: Top * -list_delimiter replaces '--': Scripting. (line 60) * -list_extras lists compile time extra features: Scripting. (line 26) -* -list_formats lists available formats: Writing. (line 126) -* -list_profiles lists supported media: Writing. (line 166) -* -list_speeds lists available write speeds: Writing. (line 138) +* -list_formats lists available formats: Writing. (line 129) +* -list_profiles lists supported media: Writing. (line 169) +* -list_speeds lists available write speeds: Writing. (line 141) * -lns creates ISO symbolic link: Insert. (line 174) * -load addresses a particular session as input: Loading. (line 11) * -local_charset sets terminal character set: Charset. (line 47) @@ -4785,7 +4788,7 @@ File: xorriso.info, Node: ConceptIdx, Prev: CommandIdx, Up: Top * Create, new ISO image, _definition: Methods. (line 6) * Cylinder alignment, _definition: Bootable. (line 188) * Cylinder size, _definition: Bootable. (line 177) -* Damaged track and session, close, -close_damaged: Writing. (line 152) +* Damaged track and session, close, -close_damaged: Writing. (line 155) * Delete, from ISO image, -rm: Manip. (line 21) * Delete, from ISO image, -rm_r: Manip. (line 28) * Delete, ISO directory, -rmdir: Manip. (line 32) @@ -4809,7 +4812,7 @@ File: xorriso.info, Node: ConceptIdx, Prev: CommandIdx, Up: Top * Drive, for output, -outdev: AqDrive. (line 31) * Drive, get drive list, -device_links: Inquiry. (line 18) * Drive, get drive list, -devices: Inquiry. (line 7) -* Drive, list supported media, -list_profiles: Writing. (line 166) +* Drive, list supported media, -list_profiles: Writing. (line 169) * Drive, reduce activity, -calm_drive: Loading. (line 240) * Drive, report SCSI commands, -scsi_log: Scripting. (line 147) * Drive, write and eject, -commit_eject: Writing. (line 56) @@ -4889,9 +4892,9 @@ File: xorriso.info, Node: ConceptIdx, Prev: CommandIdx, Up: Top * MBR, set, -boot_image system_area=: Bootable. (line 121) * MD5, control handling, -md5: Loading. (line 156) * Media, erase, -blank: Writing. (line 61) -* Media, format, -format: Writing. (line 88) -* Media, list formats, -list_formats: Writing. (line 126) -* Media, list write speeds, -list_speeds: Writing. (line 138) +* Media, format, -format: Writing. (line 91) +* Media, list formats, -list_formats: Writing. (line 129) +* Media, list write speeds, -list_speeds: Writing. (line 141) * MIPS boot file, activation: Bootable. (line 199) * mkisofs, Emulation: Emulation. (line 16) * Modifying, _definition: Methods. (line 27) @@ -5046,41 +5049,41 @@ Node: Manip64854 Node: CmdFind73677 Node: Filter88381 Node: Writing92936 -Node: SetWrite101900 -Node: Bootable120533 -Node: Jigdo135926 -Node: Charset140172 -Node: Exception142933 -Node: DialogCtl149052 -Node: Inquiry151649 -Node: Navigate156515 -Node: Verify164812 -Node: Restore173843 -Node: Emulation180752 -Node: Scripting190563 -Node: Frontend197723 -Node: Examples199023 -Node: ExDevices200200 -Node: ExCreate200859 -Node: ExDialog202144 -Node: ExGrowing203409 -Node: ExModifying204214 -Node: ExBootable204718 -Node: ExCharset205270 -Node: ExPseudo206091 -Node: ExCdrecord206989 -Node: ExMkisofs207306 -Node: ExGrowisofs208646 -Node: ExException209781 -Node: ExTime210235 -Node: ExIncBackup210694 -Node: ExRestore214686 -Node: ExRecovery215646 -Node: Files216216 -Node: Seealso217515 -Node: Bugreport218238 -Node: Legal218819 -Node: CommandIdx219830 -Node: ConceptIdx235775 +Node: SetWrite102114 +Node: Bootable120753 +Node: Jigdo136146 +Node: Charset140392 +Node: Exception143153 +Node: DialogCtl149272 +Node: Inquiry151869 +Node: Navigate156735 +Node: Verify165032 +Node: Restore174063 +Node: Emulation180972 +Node: Scripting190783 +Node: Frontend197943 +Node: Examples199243 +Node: ExDevices200420 +Node: ExCreate201079 +Node: ExDialog202364 +Node: ExGrowing203629 +Node: ExModifying204434 +Node: ExBootable204938 +Node: ExCharset205490 +Node: ExPseudo206311 +Node: ExCdrecord207209 +Node: ExMkisofs207526 +Node: ExGrowisofs208866 +Node: ExException210001 +Node: ExTime210455 +Node: ExIncBackup210914 +Node: ExRestore214906 +Node: ExRecovery215866 +Node: Files216436 +Node: Seealso217735 +Node: Bugreport218458 +Node: Legal219039 +Node: CommandIdx220050 +Node: ConceptIdx235995  End Tag Table diff --git a/libisoburn/trunk/xorriso/xorriso.texi b/libisoburn/trunk/xorriso/xorriso.texi index 4062d085..4831ed86 100644 --- a/libisoburn/trunk/xorriso/xorriso.texi +++ b/libisoburn/trunk/xorriso/xorriso.texi @@ -50,7 +50,7 @@ @c man .\" First parameter, NAME, should be all caps @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 .TH XORRISO 1 "Version 1.2.5, Oct 18, 2012" +@c man .TH XORRISO 1 "Version 1.2.5, Oct 23, 2012" @c man .\" Please adjust this date whenever revising the manpage. @c man .\" @c man .\" Some roff macros, for reference: @@ -2615,6 +2615,11 @@ The progress reports issued by some drives while blanking are quite unrealistic. Do not conclude success or failure from the reported percentages. Blanking was successful if no SORRY event or worse occured. +@* +Mode may be prepended by "force:" in order to override the evaluation +of the medium state by libburn. E.g. "force:fast". +Blanking will nevertheless only succeed if the drive is willing to do it. +@* @c man .TP @item -format mode @kindex -format formats media @@ -3164,7 +3169,7 @@ and is one aspect of growisofs option -dvd-compat. @kindex -write_type chooses TAO or SAO/DAO @cindex Write, TAO or SAO/DAO, -write_type Set the write type for the next burn run. "auto" will select SAO with blank -CD media, DAO with DVD-R[W] if -close is "on", and elsewise CD TAO or the +CD media, DAO with blank DVD-R[W] if -close is "on", and elsewise CD TAO or the equivalent write type of the particular DVD/BD media. Choosing TAO or SAO/DAO explicitely might cause the burn run to fail if the desired write type is not possible with the given media state. diff --git a/libisoburn/trunk/xorriso/xorriso_timestamp.h b/libisoburn/trunk/xorriso/xorriso_timestamp.h index 435eed02..fac348a6 100644 --- a/libisoburn/trunk/xorriso/xorriso_timestamp.h +++ b/libisoburn/trunk/xorriso/xorriso_timestamp.h @@ -1 +1 @@ -#define Xorriso_timestamP "2012.10.19.081758" +#define Xorriso_timestamP "2012.10.24.095235" diff --git a/libisoburn/trunk/xorriso/xorrisoburn.h b/libisoburn/trunk/xorriso/xorrisoburn.h index 3e0933df..67b4b828 100644 --- a/libisoburn/trunk/xorriso/xorrisoburn.h +++ b/libisoburn/trunk/xorriso/xorrisoburn.h @@ -605,5 +605,7 @@ int Xorriso_hfsplus_file_creator_type(struct XorrisO *xorriso, char *path, int Xorriso_hfsplus_bless(struct XorrisO *xorriso, char *path, void *in_node, char *blessing, int flag); +int Xorriso_pretend_full_disc(struct XorrisO *xorriso, int flag); + #endif /* Xorrisoburn_includeD */