Complaining and refusing more early with unformatted BD-RE

This commit is contained in:
Thomas Schmitt 2009-01-06 12:28:20 +00:00
parent 1bda3b83a9
commit 1895419a97
3 changed files with 27 additions and 11 deletions

View File

@ -1 +1 @@
#define Cdrskin_timestamP "2009.01.06.122534" #define Cdrskin_timestamP "2009.01.06.122808"

View File

@ -527,12 +527,15 @@ void burn_disc_write(struct burn_write_opts *opts, struct burn_disc *disc)
{ {
struct write_opts o; struct write_opts o;
char reasons[BURN_REASONS_LEN+80]; char reasons[BURN_REASONS_LEN+80];
struct burn_drive *d;
d = opts->drive;
/* ts A61006 */ /* ts A61006 */
/* a ssert(!SCAN_GOING()); */ /* a ssert(!SCAN_GOING()); */
/* a ssert(!find_worker(opts->drive)); */ /* a ssert(!find_worker(opts->drive)); */
if ((SCAN_GOING()) || find_worker(opts->drive) != NULL) { if ((SCAN_GOING()) || find_worker(opts->drive) != NULL) {
libdax_msgs_submit(libdax_messenger, opts->drive->global_index, libdax_msgs_submit(libdax_messenger, d->global_index,
0x00020102, 0x00020102,
LIBDAX_MSGS_SEV_SORRY, LIBDAX_MSGS_PRIO_HIGH, LIBDAX_MSGS_SEV_SORRY, LIBDAX_MSGS_PRIO_HIGH,
"A drive operation is still going on (want to write)", "A drive operation is still going on (want to write)",
@ -541,14 +544,14 @@ void burn_disc_write(struct burn_write_opts *opts, struct burn_disc *disc)
} }
/* For the next lines any return indicates failure */ /* For the next lines any return indicates failure */
opts->drive->cancel = 1; d->cancel = 1;
/* ts A70203 : people have been warned in API specs */ /* ts A70203 : people have been warned in API specs */
if (opts->write_type == BURN_WRITE_NONE) if (opts->write_type == BURN_WRITE_NONE)
return; return;
if (opts->drive->drive_role == 0) { if (d->drive_role == 0) {
libdax_msgs_submit(libdax_messenger, opts->drive->global_index, libdax_msgs_submit(libdax_messenger, d->global_index,
0x00020146, 0x00020146,
LIBDAX_MSGS_SEV_FATAL, LIBDAX_MSGS_PRIO_HIGH, LIBDAX_MSGS_SEV_FATAL, LIBDAX_MSGS_PRIO_HIGH,
"Drive is a virtual placeholder (null-drive)", 0, 0); "Drive is a virtual placeholder (null-drive)", 0, 0);
@ -556,9 +559,9 @@ void burn_disc_write(struct burn_write_opts *opts, struct burn_disc *disc)
} }
/* ts A61007 : obsolete Assert in spc_select_write_params() */ /* ts A61007 : obsolete Assert in spc_select_write_params() */
if (opts->drive->drive_role == 1 && !opts->drive->mdata->valid) { if (d->drive_role == 1 && !d->mdata->valid) {
libdax_msgs_submit(libdax_messenger, libdax_msgs_submit(libdax_messenger,
opts->drive->global_index, 0x00020113, d->global_index, 0x00020113,
LIBDAX_MSGS_SEV_SORRY, LIBDAX_MSGS_PRIO_HIGH, LIBDAX_MSGS_SEV_SORRY, LIBDAX_MSGS_PRIO_HIGH,
"Drive capabilities not inquired yet", 0, 0); "Drive capabilities not inquired yet", 0, 0);
return; return;
@ -571,21 +574,33 @@ void burn_disc_write(struct burn_write_opts *opts, struct burn_disc *disc)
if (burn_precheck_write(opts, disc, reasons + strlen(reasons), 1) if (burn_precheck_write(opts, disc, reasons + strlen(reasons), 1)
<= 0) { <= 0) {
libdax_msgs_submit(libdax_messenger, libdax_msgs_submit(libdax_messenger,
opts->drive->global_index, 0x00020139, d->global_index, 0x00020139,
LIBDAX_MSGS_SEV_SORRY, LIBDAX_MSGS_PRIO_HIGH, LIBDAX_MSGS_SEV_SORRY, LIBDAX_MSGS_PRIO_HIGH,
reasons, 0, 0); reasons, 0, 0);
return; return;
} }
opts->drive->cancel = 0; /* End of the return = failure area */ /* ts A90106 : early catching of unformatted BD-RE */
if (d->current_profile == 0x43)
if (d->read_format_capacities(d, 0x00) > 0 &&
d->format_descr_type != BURN_FORMAT_IS_FORMATTED) {
libdax_msgs_submit(libdax_messenger,
d->global_index, 0x00020168,
LIBDAX_MSGS_SEV_SORRY, LIBDAX_MSGS_PRIO_HIGH,
"Media not properly formatted. Cannot write.",
0, 0);
return;
}
o.drive = opts->drive; d->cancel = 0; /* End of the return = failure area */
o.drive = d;
o.opts = opts; o.opts = opts;
o.disc = disc; o.disc = disc;
opts->refcount++; opts->refcount++;
add_worker(Burnworker_type_writE, opts->drive, add_worker(Burnworker_type_writE, d,
(WorkerFunc) write_disc_worker_func, &o); (WorkerFunc) write_disc_worker_func, &o);
} }

View File

@ -540,6 +540,7 @@ Range "scdbackup" : 0x00020000 to 0x0002ffff
0x00020165 (WARNING,HIGH) = Drive does not support fast formatting 0x00020165 (WARNING,HIGH) = Drive does not support fast formatting
0x00020166 (WARNING,HIGH) = Drive does not support full formatting 0x00020166 (WARNING,HIGH) = Drive does not support full formatting
0x00020167 (SORRY,HIGH) = Drive does not support non-default formatting 0x00020167 (SORRY,HIGH) = Drive does not support non-default formatting
0x00020168 (FAILURE,HIGH) = Media not properly formatted
libdax_audioxtr: libdax_audioxtr:
0x00020200 (SORRY,HIGH) = Cannot open audio source file 0x00020200 (SORRY,HIGH) = Cannot open audio source file