Browse Source

New blank type as_needed

ZeroFourSix
Thomas Schmitt 14 years ago
parent
commit
12b0fbf17c
  1. 30
      cdrskin/cdrskin.1
  2. 61
      cdrskin/cdrskin.c
  3. 2
      cdrskin/cdrskin_timestamp.h

30
cdrskin/cdrskin.1

@ -2,7 +2,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 CDRSKIN 1 "April 26, 2008"
.TH CDRSKIN 1 "April 27, 2008"
.\" Please adjust this date whenever revising the manpage.
.\"
.\" Some roff macros, for reference:
@ -168,7 +168,7 @@ Multiple cycles of blanking and overwriting with random numbers might be.
Currently DVD-RW, DVD-R and DVD+R[/DL] can be used for the Sequential recording
model.
.br
DVD-RW must be in state "Sequential Recording".
This applies to DVD-RW only if they are in state "Sequential Recording".
The media must be either blank or appendable.
Newly purchased DVD-RW and DVD-R media are in this state.
Used DVD-RW get into blank sequential state by option
@ -218,10 +218,6 @@ Best reader compatibility is achieved without it
Currently types DVD+RW, DVD-RW, DVD-RAM and BD-RE can be overwritten via
cdrskin. BD-RE is supported only with option --allow_untested_media.
.br
DVD+RW and DVD-RAM media need no special initial formatting. They offer a
single continuous data area for blockwise random access. BD-RE need
explicit formatting before use. See blank=format_defectmgt .
.br
Option -audio is not allowed. Only one track is allowed.
Option -multi cannot mark a recognizeable end of overwriteable media.
Therefore -multi is banned unless ISO-9660 images shall be expandable by help
@ -233,6 +229,12 @@ media get treated as blank regardless wether they hold data or not.
.br
Currently there is no difference between -sao and -tao. If ever, then -tao
will be the mode which preserves the current behavior.
.PP
DVD+RW and DVD-RAM media need no special initial formatting. They offer a
single continuous data area for blockwise random access. BD-RE need
explicit formatting before use. See
.B blank=as_needed
or blank=format_defectmgt .
.br
DVD-RW are sold in state "Sequential Recording". To become suitable for the
Overwriteable DVD recording model they need to get formatted to state
@ -355,8 +357,16 @@ This is combinable with burning in the same run of cdrskin.
The type given with blank= selects the particular behavior:
.RS
.TP
help
Print this list of blanking types.
as_needed
Try to make the media ready for writing from scratch. If it needs formatting,
then format it. If it is not blank, then try to apply blank=fast.
It is a reason to abort if the media cannot assume thoroughly writeable state,
e.g. if it is non-blank write-once.
.br
This leaves unformatted DVD-RW in unformatted blank state. To format DVD-RW use
blank=format_overwriteable.
.TP
The following blank types are specific to particular media familes. Use them if special features are desired.
.TP
all
Blank an entire CD-RW or an unformatted DVD-RW.
@ -386,6 +396,7 @@ and if cdrskin supports formatting for the media type,
and if formatting will not happen automatically during write.
This currently applies to unformatted DVD-RW, DVD-RAM and BD-RE.
Eventually the appropriate default formatting is chosen.
If other media or states are encountered then nothing happens.
.br
Note: BD-RE currently is only supported with option --allow_untested_media .
.br
@ -466,6 +477,9 @@ The numbers after text "Format idx" are the ones to be used with
format_by_index_. Format descriptor lists are volatile. Do neither eject
nor write the media between the run of --list_formats and the run of
blank=format_by_index_ or else you may get a different format than desired.
.TP
help
Print this list of blanking types.
.RE
.TP
.BI \-checkdrive

61
cdrskin/cdrskin.c

@ -2391,6 +2391,8 @@ return:
fprintf(stderr,"\tdisk\t\tblank the entire disk\n");
fprintf(stderr,"\tfast\t\tminimally blank the entire disk\n");
fprintf(stderr,"\tminimal\t\tminimally blank the entire disk\n");
fprintf(stderr,
"\tas_needed\tblank or format media to make it ready for (re-)use\n");
fprintf(stderr,
"\tdeformat_sequential\t\tfully blank, even formatted DVD-RW\n");
fprintf(stderr,
@ -3170,6 +3172,10 @@ struct CdrskiN {
gets mapped to default variants of specialized
formats if the media state requires formatting
before writing
7=if_needed
gets mapped to 6 for DVD-RAM and BD-RE,
to 0 with all other non-blanks
bit8-15: bit0-7 of burn_disc_format(flag)
depending on job type
*/
@ -4302,11 +4308,13 @@ int Cdrskin_invalidate_iso_head(struct CdrskiN *skin, int flag)
@param flag Bitfield for control purposes:
bit0= permission to check for overwriteable ISO image
bit1= do not report media profile
bit2= do not report but only check for pseudo appendable
@return 1=ok, 2=ok, is pseudo appendable, <=0 error
*/
int Cdrskin_report_disc_status(struct CdrskiN *skin, enum burn_disc_status s,
int flag)
{
int ret, iso_size;
int ret, iso_size, pseudo_appendable= 0;
if(flag&1) {
if(skin->media_is_overwriteable && skin->grow_overwriteable_iso>0) {
@ -4314,10 +4322,14 @@ int Cdrskin_report_disc_status(struct CdrskiN *skin, enum burn_disc_status s,
ret= 1;
else
ret= Cdrskin_overwriteable_iso_size(skin,&iso_size,0);
if(ret>0)
if(ret>0) {
s= BURN_DISC_APPENDABLE;
pseudo_appendable= 1;
}
}
}
if(flag&4)
return(1+pseudo_appendable);
printf("cdrskin: status %d ",s);
if(s==BURN_DISC_FULL) {
@ -4345,7 +4357,7 @@ int Cdrskin_report_disc_status(struct CdrskiN *skin, enum burn_disc_status s,
printf("-unknown status code-\n");
if(flag&2)
return(1);
return(1+pseudo_appendable);
#ifdef Cdrskin_libburn_has_get_profilE
if((s==BURN_DISC_FULL || s==BURN_DISC_APPENDABLE || s==BURN_DISC_BLANK ||
@ -4367,7 +4379,7 @@ int Cdrskin_report_disc_status(struct CdrskiN *skin, enum burn_disc_status s,
}
#endif
return(1);
return(1+pseudo_appendable);
}
@ -5077,9 +5089,10 @@ int Cdrskin_blank(struct CdrskiN *skin, int flag)
char *verb= "blank", *presperf="blanking", *fmt_text= "...";
char profile_name[80];
static char fmtp[][40]= {
"format_default", "format_overwrite", "deformat_sequential",
"format_defectmgt", "format_by_index", "format_if_needed"};
static int fmtp_max= 6;
"...", "format_overwrite", "deformat_sequential",
"(-format)", "format_defectmgt", "format_by_index",
"format_if_needed", "as_needed"};
static int fmtp_max= 7;
start_time= Sfile_microtime(0); /* will be refreshed later */
ret= Cdrskin_grab_drive(skin,0);
@ -5093,14 +5106,11 @@ int Cdrskin_blank(struct CdrskiN *skin, int flag)
burn_disc_get_profile(skin->grabbed_drive,&profile_number,profile_name);
#endif
if(skin->verbosity>=Cdrskin_verbose_progresS)
Cdrskin_report_disc_status(skin,s,1);
ret= Cdrskin_report_disc_status(skin,s,
1|(4*!(skin->verbosity>=Cdrskin_verbose_progresS)));
if(ret==2)
s= BURN_DISC_APPENDABLE;
do_format= skin->blank_format_type & 0xff;
if(do_format == 1 || do_format == 3 || do_format == 4 || do_format == 5 ||
do_format ==6) {
verb= "format";
presperf= "formatting";
}
#ifdef Cdrskin_libburn_has_pretend_fulL
if(s==BURN_DISC_UNSUITABLE) {
@ -5121,11 +5131,11 @@ int Cdrskin_blank(struct CdrskiN *skin, int flag)
do_format= 4;
else
do_format= 1;
} else if(do_format==6) { /* format_if_needed */
} else if(do_format==6 || do_format==7) { /* format_if_needed , if_needed */
/* Find out whether format is needed at all.
Eventuelly set up a suitable formatting run
*/
if(profile_number == 0x14) { /* sequential DVD-RW */
if(profile_number == 0x14 && do_format==6) { /* sequential DVD-RW */
do_format= 1;
skin->blank_format_type= 1|(1<<8);
skin->blank_format_size= 128*1024*1024;
@ -5139,16 +5149,24 @@ int Cdrskin_blank(struct CdrskiN *skin, int flag)
skin->blank_format_size= 0;
}
#endif
} else if(do_format==7) { /* try to blank what is not blank yet */
if(s!=BURN_DISC_BLANK) {
do_format= 0;
skin->blank_fast= 1;
}
}
if(do_format==6) {
if(do_format==6 || do_format==7) {
if(skin->verbosity>=Cdrskin_verbose_cmD)
ClN(fprintf(stderr,
"cdrskin: NOTE : blank=format_if_needed : did not apply formatting\n"));
"cdrskin: NOTE : blank=%s : no need for action detected\n", fmt_text));
{ret= 2; goto ex;}
}
}
if(do_format == 1 || do_format == 3 || do_format == 4) {
verb= "format";
presperf= "formatting";
}
if(do_format==2) {
/* Forceful blanking to Sequential Recording for DVD-R[W] and CD-RW */
@ -7196,7 +7214,10 @@ set_blank:;
skin->blank_format_type= 2;
skin->blank_fast= 1;
skin->preskin->demands_cdrskin_caps= 1;
} else if(strcmp(cpt,"help")==0) {
} else if(strcmp(cpt,"as_needed")==0) {
skin->do_blank= 1;
skin->blank_format_type= 7;
} else if(strcmp(cpt,"help")==0) {
/* is handled in Cdrpreskin_setup() */;
continue;
} else {

2
cdrskin/cdrskin_timestamp.h

@ -1 +1 @@
#define Cdrskin_timestamP "2008.04.27.084704"
#define Cdrskin_timestamP "2008.04.27.140144"

Loading…
Cancel
Save