From b4306f2c9ef36d6cba7b578ef66fc9aa81b9d020 Mon Sep 17 00:00:00 2001 From: Thomas Schmitt Date: Sun, 29 May 2011 10:01:56 +0000 Subject: [PATCH] Improved error messages if DVD-RW media can only be written with -close on --- libisoburn/trunk/xorriso/write_run.c | 62 ++++++++++++++ libisoburn/trunk/xorriso/xorriso.1 | 7 +- libisoburn/trunk/xorriso/xorriso.info | 90 ++++++++++---------- libisoburn/trunk/xorriso/xorriso.texi | 7 +- libisoburn/trunk/xorriso/xorriso_timestamp.h | 2 +- 5 files changed, 119 insertions(+), 49 deletions(-) diff --git a/libisoburn/trunk/xorriso/write_run.c b/libisoburn/trunk/xorriso/write_run.c index d9473b5f..17cf4f21 100644 --- a/libisoburn/trunk/xorriso/write_run.c +++ b/libisoburn/trunk/xorriso/write_run.c @@ -58,6 +58,60 @@ #include "write_run.h" +/* @param flag bit0= talk of -as cdrecord -multi rather than of -close +*/ +int Xorriso_check_multi(struct XorrisO *xorriso, struct burn_drive *drive, + int flag) +{ + int profile_no= 0, ret; + struct burn_multi_caps *caps= NULL; + char profile_name[80]; + + if(!xorriso->do_close) { + burn_disc_get_profile(drive, &profile_no, profile_name); + if(profile_no == 0x14) { /* DVD-RW sequential */ + ret= burn_disc_get_multi_caps(drive, BURN_WRITE_TAO, &caps, 0); + if(caps != NULL) + burn_disc_free_multi_caps(&caps); + if(ret == 0) { + if(flag & 1) { + sprintf(xorriso->info_text, + "This DVD-RW media can only be written without option -multi"); + Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "FAILURE", 0); + sprintf(xorriso->info_text, + "Possibly it was blanked by blank=deformat_quickest"); + Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "HINT", 0); + sprintf(xorriso->info_text, + "After writing a session without -multi, apply blank=all"); + Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "HINT", 0); + } else { + sprintf(xorriso->info_text, + "This DVD-RW media can only be written with -close \"on\""); + Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "FAILURE", 0); + sprintf(xorriso->info_text, + "Possibly it was blanked by -blank \"deformat_quickest\""); + Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "HINT", 0); + sprintf(xorriso->info_text, + "After writing a session with -closed \"on\", apply -blank \"all\""); + Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "HINT", 0); + } + return(0); + } + } else if(profile_no == 0x15) { /* DVD-RW DL */ + if(flag & 1) + sprintf(xorriso->info_text, + "DVD-R DL media can only be written without option -multi"); + else + sprintf(xorriso->info_text, + "DVD-R DL media can only be written with -close \"on\""); + Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "FAILURE", 0); + return(0); + } + } + return(1); +} + + int Xorriso_make_write_options( struct XorrisO *xorriso, struct burn_drive *drive, struct burn_write_opts **burn_options, int flag) @@ -634,6 +688,10 @@ int Xorriso_write_session(struct XorrisO *xorriso, int flag) else if(ret == 3) pacifier_speed= 2; + ret= Xorriso_check_multi(xorriso, drive, 0); + if(ret<=0) + goto ex; + ret= isoburn_igopt_new(&sopts, 0); if(ret<=0) { Xorriso_process_msg_queues(xorriso, 0); @@ -1668,6 +1726,10 @@ int Xorriso_burn_track(struct XorrisO *xorriso, off_t write_start_address, "on attempt to burn track", 2); if(ret<=0) {ret= 0; goto ex;} + + ret= Xorriso_check_multi(xorriso, drive, 1); + if(ret<=0) + goto ex; ret= Xorriso_make_write_options(xorriso, drive, &burn_options, 0); if(ret<=0) goto ex; diff --git a/libisoburn/trunk/xorriso/xorriso.1 b/libisoburn/trunk/xorriso/xorriso.1 index ccb5b25e..b5d6d453 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.0.9, May 16, 2011" +.TH XORRISO 1 "Version 1.0.9, May 29, 2011" .\" Please adjust this date whenever revising the manpage. .\" .\" Some roff macros, for reference: @@ -1978,7 +1978,10 @@ overwriteable ISO images. "all" might work more thoroughly and need more time. .br "deformat_quickest" is a faster way to deformat or blank DVD\-RW but produces media which are only suitable for a single session. -\fBxorriso\fR will write onto them only if option \-close is set to "on". +Some drives announce this state by not offering feature 21h, +but some drives offer it anyway. +If feature 21h is missing, then \fBxorriso\fR +will refuse to write on DVD\-RW if not option \-close is set to "on". .br The progress reports issued by some drives while blanking are quite unrealistic. Do not conclude success or failure from the diff --git a/libisoburn/trunk/xorriso/xorriso.info b/libisoburn/trunk/xorriso/xorriso.info index f69dc800..8c683b0b 100644 --- a/libisoburn/trunk/xorriso/xorriso.info +++ b/libisoburn/trunk/xorriso/xorriso.info @@ -1769,8 +1769,10 @@ File: xorriso.info, Node: Writing, Next: SetWrite, Prev: Filter, Up: Options "deformat" converts overwriteable DVD-RW into unformatted ones. "deformat_quickest" is a faster way to deformat or blank DVD-RW but produces media which are only suitable for a single session. - `xorriso' will write onto them only if option -close is set to - "on". + Some drives announce this state by not offering feature 21h, but + some drives offer it anyway. If feature 21h is missing, then + `xorriso' will refuse to write on DVD-RW if not option -close is + set to "on". 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 @@ -4234,7 +4236,7 @@ File: xorriso.info, Node: CommandIdx, Next: ConceptIdx, Prev: Legal, Up: Top * -findx traverses disk tree: Navigate. (line 105) * -follow softlinks and mount points: SetInsert. (line 76) * -for_backup -acl,-xattr,-hardlinks,-md5: Loading. (line 184) -* -format formats media: Writing. (line 70) +* -format formats media: Writing. (line 72) * -fs sets size of fifo: SetWrite. (line 255) * -getfacl shows ACL in ISO image: Navigate. (line 69) * -getfacl_r shows ACL in ISO image: Navigate. (line 76) @@ -4252,8 +4254,8 @@ File: xorriso.info, Node: CommandIdx, Next: ConceptIdx, Prev: Legal, Up: Top * -jigdo clears JTE or or adds parameter to JTE: Jigdo. (line 34) * -joliet enables production of Joliet tree: SetWrite. (line 10) * -list_delimiter replaces '--': Scripting. (line 42) -* -list_formats lists available formats: Writing. (line 108) -* -list_profiles lists supported media: Writing. (line 120) +* -list_formats lists available formats: Writing. (line 110) +* -list_profiles lists supported media: Writing. (line 122) * -load addresses a particular session as input: Loading. (line 11) * -local_charset sets terminal character set: Charset. (line 47) * -logfile logs output channels to file: Frontend. (line 20) @@ -4416,7 +4418,7 @@ File: xorriso.info, Node: ConceptIdx, Prev: CommandIdx, Up: Top * Drive, for input, -indev: AqDrive. (line 22) * Drive, for output, -outdev: AqDrive. (line 29) * Drive, get drive list, -devices: Inquiry. (line 7) -* Drive, list supported media, -list_profiles: Writing. (line 120) +* Drive, list supported media, -list_profiles: Writing. (line 122) * Drive, reduce activity, -calm_drive: Loading. (line 235) * Drive, report SCSI commands, -scsi_log: Scripting. (line 125) * Drive, write and eject, -commit_eject: Writing. (line 40) @@ -4486,8 +4488,8 @@ File: xorriso.info, Node: ConceptIdx, Prev: CommandIdx, Up: Top * MBR, set, -boot_image system_area=: Bootable. (line 123) * MD5, control handling, -md5: Loading. (line 155) * Media, erase, -blank: Writing. (line 45) -* Media, format, -format: Writing. (line 70) -* Media, list formats, -list_formats: Writing. (line 108) +* Media, format, -format: Writing. (line 72) +* Media, list formats, -list_formats: Writing. (line 110) * MIPS boot file, activation: Bootable. (line 178) * mkisofs, Emulation: Emulation. (line 16) * Modifying, _definition: Methods. (line 27) @@ -4632,41 +4634,41 @@ Node: Manip60375 Node: CmdFind69060 Node: Filter80363 Node: Writing84720 -Node: SetWrite91018 -Node: Bootable105064 -Node: Jigdo118384 -Node: Charset122648 -Node: Exception125407 -Node: DialogCtl131547 -Node: Inquiry134134 -Node: Navigate138517 -Node: Verify146457 -Node: Restore155052 -Node: Emulation161712 -Node: Scripting171585 -Node: Frontend177735 -Node: Examples179034 -Node: ExDevices180205 -Node: ExCreate180843 -Node: ExDialog182117 -Node: ExGrowing183379 -Node: ExModifying184181 -Node: ExBootable184682 -Node: ExCharset185231 -Node: ExPseudo186059 -Node: ExCdrecord186957 -Node: ExMkisofs187272 -Node: ExGrowisofs188610 -Node: ExException189745 -Node: ExTime190199 -Node: ExIncBackup190658 -Node: ExRestore194582 -Node: ExRecovery195551 -Node: Files196117 -Node: Seealso197415 -Node: Bugreport198003 -Node: Legal198584 -Node: CommandIdx199514 -Node: ConceptIdx214182 +Node: SetWrite91164 +Node: Bootable105210 +Node: Jigdo118530 +Node: Charset122794 +Node: Exception125553 +Node: DialogCtl131693 +Node: Inquiry134280 +Node: Navigate138663 +Node: Verify146603 +Node: Restore155198 +Node: Emulation161858 +Node: Scripting171731 +Node: Frontend177881 +Node: Examples179180 +Node: ExDevices180351 +Node: ExCreate180989 +Node: ExDialog182263 +Node: ExGrowing183525 +Node: ExModifying184327 +Node: ExBootable184828 +Node: ExCharset185377 +Node: ExPseudo186205 +Node: ExCdrecord187103 +Node: ExMkisofs187418 +Node: ExGrowisofs188756 +Node: ExException189891 +Node: ExTime190345 +Node: ExIncBackup190804 +Node: ExRestore194728 +Node: ExRecovery195697 +Node: Files196263 +Node: Seealso197561 +Node: Bugreport198149 +Node: Legal198730 +Node: CommandIdx199660 +Node: ConceptIdx214328  End Tag Table diff --git a/libisoburn/trunk/xorriso/xorriso.texi b/libisoburn/trunk/xorriso/xorriso.texi index 7e5d3846..cd0322b5 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.0.9, May 16, 2011" +@c man .TH XORRISO 1 "Version 1.0.9, May 29, 2011" @c man .\" Please adjust this date whenever revising the manpage. @c man .\" @c man .\" Some roff macros, for reference: @@ -2384,7 +2384,10 @@ overwriteable ISO images. "all" might work more thoroughly and need more time. @* "deformat_quickest" is a faster way to deformat or blank DVD-RW but produces media which are only suitable for a single session. -@command{xorriso} will write onto them only if option -close is set to "on". +Some drives announce this state by not offering feature 21h, +but some drives offer it anyway. +If feature 21h is missing, then @command{xorriso} +will refuse to write on DVD-RW if not option -close is set to "on". @* The progress reports issued by some drives while blanking are quite unrealistic. Do not conclude success or failure from the diff --git a/libisoburn/trunk/xorriso/xorriso_timestamp.h b/libisoburn/trunk/xorriso/xorriso_timestamp.h index 3e238aac..877ca94a 100644 --- a/libisoburn/trunk/xorriso/xorriso_timestamp.h +++ b/libisoburn/trunk/xorriso/xorriso_timestamp.h @@ -1 +1 @@ -#define Xorriso_timestamP "2011.05.29.095524" +#define Xorriso_timestamP "2011.05.29.100055"