|
|
|
@ -2396,9 +2396,15 @@ return:
|
|
|
|
|
fprintf(stderr, |
|
|
|
|
"\tformat_overwrite_quickest\tto \"Restricted Overwrite intermediate\"\n"); |
|
|
|
|
fprintf(stderr, |
|
|
|
|
"\tformat_overwrite_full\tfull-size format a DVD-RW or DVD+RW\n"); |
|
|
|
|
"\tformat_overwrite_full\t\tfull-size format a DVD-RW or DVD+RW\n"); |
|
|
|
|
fprintf(stderr, |
|
|
|
|
"\tdeformat_sequential\tfully blank, even formatted DVD-RW\n"); |
|
|
|
|
"\tformat_defectmgt[_max|_min|_none]\tformat DVD-RAM or BD-RE\n"); |
|
|
|
|
fprintf(stderr, |
|
|
|
|
"\tformat_defectmgt_payload_<size>\tformat DVD-RAM or BD-RE\n"); |
|
|
|
|
fprintf(stderr, |
|
|
|
|
"\tformat_by_index_<number>\tformat by index from --list_formats\n"); |
|
|
|
|
fprintf(stderr, |
|
|
|
|
"\tdeformat_sequential\t\tfully blank, even formatted DVD-RW\n"); |
|
|
|
|
fprintf(stderr, |
|
|
|
|
"\tdeformat_sequential_quickest\tminimally blank, even DVD-RW\n"); |
|
|
|
|
|
|
|
|
@ -3121,8 +3127,8 @@ struct CdrskiN {
|
|
|
|
|
int do_blank; |
|
|
|
|
int blank_fast; |
|
|
|
|
int no_blank_appendable; |
|
|
|
|
int blank_format_type; /* 0=blank
|
|
|
|
|
bit0-7: |
|
|
|
|
int blank_format_type; /* bit0-7: job type
|
|
|
|
|
0=blank |
|
|
|
|
1=format_overwrite for DVD+RW, DVD-RW |
|
|
|
|
bit8-15: bit0-7 of burn_disc_format(flag) |
|
|
|
|
bit8 = write zeros after formatting |
|
|
|
@ -3131,16 +3137,33 @@ struct CdrskiN {
|
|
|
|
|
bit11= - reserved - |
|
|
|
|
bit12= - reserved - |
|
|
|
|
bit13= - reserved - |
|
|
|
|
bit15= format by index |
|
|
|
|
2=deformat_sequential (blank_fast might matter) |
|
|
|
|
3=format (= format_overwrite restricted to DVD+RW) |
|
|
|
|
4=format_defectmgt for DVD-RAM, BD-RE |
|
|
|
|
bit8-15: bit0-7 of burn_disc_format(flag) |
|
|
|
|
bit8 = write zeros after formatting |
|
|
|
|
bit9 = - reserved - |
|
|
|
|
bit10= format to maximum available size |
|
|
|
|
bit9+10: size mode |
|
|
|
|
0 = use parameter size as far as it makes sense |
|
|
|
|
1 = (identical to size mode 0) |
|
|
|
|
2 = without bit7: format to maximum size |
|
|
|
|
with bit7 : take size from indexed format |
|
|
|
|
descriptor |
|
|
|
|
3 = without bit7: format to default size |
|
|
|
|
with bit7 : take size from indexed format |
|
|
|
|
descriptor |
|
|
|
|
bit11= - reserved - |
|
|
|
|
bit12= - reserved - |
|
|
|
|
bit13= try to disable defect management |
|
|
|
|
bit15= format by index |
|
|
|
|
5=format_by_index |
|
|
|
|
gets mapped to 4 with DVD-RAM and BD-RE else to 1, |
|
|
|
|
bit15 should be set and bit16-23 should contain |
|
|
|
|
a usable index number |
|
|
|
|
bit8-15: bit0-7 of burn_disc_format(flag) |
|
|
|
|
depending on job type |
|
|
|
|
*/ |
|
|
|
|
int blank_format_index; /* bit8-15 of burn_disc_format(flag) */ |
|
|
|
|
double blank_format_size; /* to be used with burn_disc_format() */ |
|
|
|
|
|
|
|
|
|
int do_direct_write; |
|
|
|
@ -3302,6 +3325,7 @@ int Cdrskin_new(struct CdrskiN **skin, struct CdrpreskiN *preskin, int flag)
|
|
|
|
|
o->blank_fast= 0; |
|
|
|
|
o->no_blank_appendable= 0; |
|
|
|
|
o->blank_format_type= 0; |
|
|
|
|
o->blank_format_index= -1; |
|
|
|
|
o->blank_format_size= 0.0; |
|
|
|
|
o->do_direct_write= 0; |
|
|
|
|
o->do_burn= 0; |
|
|
|
@ -5022,14 +5046,14 @@ int Cdrskin_blank(struct CdrskiN *skin, int flag)
|
|
|
|
|
struct burn_progress p; |
|
|
|
|
struct burn_drive *drive; |
|
|
|
|
int ret,loop_counter= 0,hint_force= 0,do_format= 0, profile_number= -1; |
|
|
|
|
int wrote_well= 1; |
|
|
|
|
int wrote_well= 1, format_flag= 0; |
|
|
|
|
double start_time; |
|
|
|
|
char *verb= "blank", *presperf="blanking", *fmt_text= "..."; |
|
|
|
|
char profile_name[80]; |
|
|
|
|
static char fmtp[][40]= { |
|
|
|
|
"format_default", "format_overwrite", "deformat_sequential", |
|
|
|
|
"format_defectmgt"}; |
|
|
|
|
static int fmtp_max= 3; |
|
|
|
|
"format_defectmgt", "format_by_index", ""}; |
|
|
|
|
static int fmtp_max= 5; |
|
|
|
|
|
|
|
|
|
start_time= Sfile_microtime(0); /* will be refreshed later */ |
|
|
|
|
ret= Cdrskin_grab_drive(skin,0); |
|
|
|
@ -5046,7 +5070,7 @@ int Cdrskin_blank(struct CdrskiN *skin, int flag)
|
|
|
|
|
if(skin->verbosity>=Cdrskin_verbose_progresS) |
|
|
|
|
Cdrskin_report_disc_status(skin,s,1); |
|
|
|
|
do_format= skin->blank_format_type & 0xff; |
|
|
|
|
if(do_format == 1 || do_format == 3 || do_format == 4) { |
|
|
|
|
if(do_format == 1 || do_format == 3 || do_format == 4 || do_format == 5) { |
|
|
|
|
verb= "format"; |
|
|
|
|
presperf= "formatting"; |
|
|
|
|
} |
|
|
|
@ -5065,6 +5089,12 @@ int Cdrskin_blank(struct CdrskiN *skin, int flag)
|
|
|
|
|
if(do_format) |
|
|
|
|
if(do_format>=0 && do_format<=fmtp_max) |
|
|
|
|
fmt_text= fmtp[do_format]; |
|
|
|
|
if(do_format==5) { |
|
|
|
|
if(profile_number == 0x12 || profile_number == 0x43) |
|
|
|
|
do_format= 4; |
|
|
|
|
else |
|
|
|
|
do_format= 1; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
if(do_format==2) { |
|
|
|
|
/* Forceful blanking to Sequential Recording for DVD-R[W] and CD-RW */ |
|
|
|
@ -5119,15 +5149,9 @@ int Cdrskin_blank(struct CdrskiN *skin, int flag)
|
|
|
|
|
|
|
|
|
|
} else if(do_format==4) { |
|
|
|
|
/* Formatting and influencing defect management of DVD-RAM , BD-RE */ |
|
|
|
|
if((profile_number == 0x12 && skin->preskin->allow_untested_media) || |
|
|
|
|
if(profile_number == 0x12 || |
|
|
|
|
(profile_number == 0x43 && skin->preskin->allow_untested_media)) { |
|
|
|
|
|
|
|
|
|
/* <<<
|
|
|
|
|
fprintf(stderr, |
|
|
|
|
"cdrskin: SORRY : Formatting of DVD-RAM and BD-RE is not implemented yet\n"); |
|
|
|
|
{ret= 0; goto ex;} |
|
|
|
|
*/ |
|
|
|
|
|
|
|
|
|
/* >>> check whether the current media is already formatted */; |
|
|
|
|
|
|
|
|
|
} else { |
|
|
|
@ -5213,9 +5237,12 @@ unsupported_format_type:;
|
|
|
|
|
|
|
|
|
|
#ifdef Cdrskin_libburn_has_burn_disc_formaT |
|
|
|
|
} else if(do_format==1 || do_format==3 || do_format==4) { |
|
|
|
|
burn_disc_format(drive,(off_t) skin->blank_format_size, |
|
|
|
|
((skin->blank_format_type>>8)&(1|2|4|32)) | |
|
|
|
|
((!!skin->force_is_set)<<4)); |
|
|
|
|
format_flag= (skin->blank_format_type>>8)&(1|2|4|32|128); |
|
|
|
|
if(skin->force_is_set) |
|
|
|
|
format_flag|= 16; |
|
|
|
|
if(format_flag&128) |
|
|
|
|
format_flag|= (skin->blank_format_index&255)<<8; |
|
|
|
|
burn_disc_format(drive,(off_t) skin->blank_format_size,format_flag); |
|
|
|
|
#endif |
|
|
|
|
|
|
|
|
|
} else { |
|
|
|
@ -6879,7 +6906,7 @@ sorry_failed_to_eject:;
|
|
|
|
|
*/ |
|
|
|
|
int Cdrskin_setup(struct CdrskiN *skin, int argc, char **argv, int flag) |
|
|
|
|
{ |
|
|
|
|
int i,k,l,ret,source_has_size=0; |
|
|
|
|
int i,k,l,ret,source_has_size=0, idx= -1; |
|
|
|
|
double value,grab_and_wait_value= -1.0; |
|
|
|
|
char *cpt,*value_pt,adr[Cdrskin_adrleN],*blank_mode= ""; |
|
|
|
|
struct stat stbuf; |
|
|
|
@ -7081,6 +7108,20 @@ set_blank:;
|
|
|
|
|
skin->blank_format_type= 4; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
skin->preskin->demands_cdrskin_caps= 1; |
|
|
|
|
} else if(strncmp(cpt,"format_by_index_",16)==0) { |
|
|
|
|
sscanf(cpt+16, "%d", &idx); |
|
|
|
|
if(idx<0 || idx>255) {
|
|
|
|
|
fprintf(stderr,"cdrskin: SORRY : blank=%s provides unusable index\n", |
|
|
|
|
cpt); |
|
|
|
|
return(0); |
|
|
|
|
} |
|
|
|
|
skin->do_blank= 1; |
|
|
|
|
skin->blank_format_type= 5|(2<<9)|(1<<15); |
|
|
|
|
skin->blank_format_index= idx; |
|
|
|
|
skin->blank_format_size= 0; |
|
|
|
|
skin->preskin->demands_cdrskin_caps= 1; |
|
|
|
|
|
|
|
|
|
} else if(strcmp(cpt,"deformat_sequential")==0) { |
|
|
|
|
skin->do_blank= 1; |
|
|
|
|
skin->blank_format_type= 2; |
|
|
|
@ -7360,9 +7401,11 @@ gracetime_equals:;
|
|
|
|
|
|
|
|
|
|
} else if(strcmp(argv[i],"--list_formats")==0) { |
|
|
|
|
skin->do_list_formats= 1; |
|
|
|
|
skin->preskin->demands_cdrskin_caps= 1; |
|
|
|
|
|
|
|
|
|
} else if(strcmp(argv[i],"--list_ignored_options")==0) { |
|
|
|
|
char line[80]; |
|
|
|
|
/* is also handled in Cdrpreskin_setup() */; |
|
|
|
|
|
|
|
|
|
line[0]= 0; |
|
|
|
|
printf("cdrskin: List of all ignored options:\n"); |
|
|
|
|