New option --prodvd_cli_compatible

This commit is contained in:
Thomas Schmitt 2007-02-08 21:09:10 +00:00
parent 8dccb584b4
commit cad7531058
3 changed files with 64 additions and 26 deletions

View File

@ -16,8 +16,8 @@
.\" .sp <n> insert n+1 empty lines .\" .sp <n> insert n+1 empty lines
.\" for manpage-specific macros, see man(7) .\" for manpage-specific macros, see man(7)
.SH NAME .SH NAME
cdrskin \- burns preformatted data to CD-R, CD-RW, DVD+/-RW, DVD-RAM cdrskin \- burns preformatted data to CD-R, CD-RW, DVD-R, DVD-RW, DVD+RW,
via libburn. DVD-RAM via libburn.
.SH SYNOPSIS .SH SYNOPSIS
.B cdrskin .B cdrskin
.RI [ options | track_source_addresses ] .RI [ options | track_source_addresses ]
@ -29,7 +29,7 @@ via libburn.
.\" respectively. .\" respectively.
.PP .PP
\fBcdrskin\fP is a program that provides some of cdrecord's options \fBcdrskin\fP is a program that provides some of cdrecord's options
in a compatible way for CD media. With DVD it has its own ways for now. in a compatible way for CD media. With DVD it has its own ways.
You do not need to be superuser for its daily usage. You do not need to be superuser for its daily usage.
.PP .PP
.B Overview of features: .B Overview of features:
@ -124,12 +124,6 @@ Multiple cycles of blanking and overwriting with random numbers might be.
.PP .PP
.B Sequentially Recordable DVD Media: .B Sequentially Recordable DVD Media:
.br .br
---------------
.br
Note: The support for sequentially recordable media is still emerging.
.br
---------------
.br
Currently only DVD-RW and DVD-R can be used for the Sequential recording model. Currently only DVD-RW and DVD-R can be used for the Sequential recording model.
DVD-RW must be in state "Sequential Recording". DVD-RW must be in state "Sequential Recording".
The media must be either blank or appendable. The media must be either blank or appendable.
@ -254,9 +248,11 @@ Print this list of blanking types.
.TP .TP
all all
Blank an entire CD-RW or an unformatted DVD-RW. Blank an entire CD-RW or an unformatted DVD-RW.
(See also --prodvd_cli_compatible)
.TP .TP
fast fast
Minimally blank an entire CD-RW or fully blank an unformatted DVD-RW. Minimally blank an entire CD-RW or blank an unformatted DVD-RW.
(See also --prodvd_cli_compatible)
.TP .TP
format_overwrite format_overwrite
Format a DVD-RW to "Restricted Overwrite". The user should bring some patience. Format a DVD-RW to "Restricted Overwrite". The user should bring some patience.
@ -389,6 +385,8 @@ is a -RW and gets blanked which causes loss of its content.
.br .br
The following sessions can only be written in -tao mode. -multi is prohibited The following sessions can only be written in -tao mode. -multi is prohibited
with overwriteable DVD media and with DVD-R[W] DAO write mode. with overwriteable DVD media and with DVD-R[W] DAO write mode.
Option --prodvd_cli_compatible eventually makes -multi tolerable but cannot
make it work.
.br .br
In order to have all filesystem content accessible, the eventual ISO-9660 In order to have all filesystem content accessible, the eventual ISO-9660
filesystem of a follow-up filesystem of a follow-up
@ -566,6 +564,17 @@ option which ends by "=". The list is ended by an empty line.
Only if used as first command line argument this option prevents reading and Only if used as first command line argument this option prevents reading and
interpretation of eventual startup files. See section FILES below. interpretation of eventual startup files. See section FILES below.
.TP .TP
.BI \--prodvd_cli_compatible
Activates behavior modifications with some DVD situations which bring cdrskin
nearer to the behavior of cdrecord-ProDVD:
.br
Option -multi with unsuitable media is not an error but simply has no effect.
.br
Options blank=fast and blank=all deformat overwriteable DVD-RW media.
.br
Option blank=fast does indeed minmal blanking with DVD-RW. This may yield media
which can only do DAO but not Incremental streaming.
.TP
.BI \--single_track .BI \--single_track
Accept only the last argument of the command line as track source address. Accept only the last argument of the command line as track source address.
.TP .TP

View File

@ -2012,6 +2012,8 @@ set_dev:;
" --no_rc as first argument: do not read startup files\n"); " --no_rc as first argument: do not read startup files\n");
printf(" --old_pseudo_scsi_adr use and report literal Bus,Target,Lun\n"); printf(" --old_pseudo_scsi_adr use and report literal Bus,Target,Lun\n");
printf(" rather than real SCSI and pseudo ATA.\n"); printf(" rather than real SCSI and pseudo ATA.\n");
printf(" --prodvd_cli_compatible react on some DVD types more like\n");
printf(" cdrecord-ProDVD with blank= and -multi\n");
printf( printf(
" --single_track accept only last argument as source_address\n"); " --single_track accept only last argument as source_address\n");
@ -2349,6 +2351,7 @@ struct CdrskiN {
int dummy_mode; int dummy_mode;
int force_is_set; int force_is_set;
int single_track; int single_track;
int prodvd_cli_compatible;
int do_devices; int do_devices;
@ -2488,6 +2491,7 @@ int Cdrskin_new(struct CdrskiN **skin, struct CdrpreskiN *preskin, int flag)
o->dummy_mode= 0; o->dummy_mode= 0;
o->force_is_set= 0; o->force_is_set= 0;
o->single_track= 0; o->single_track= 0;
o->prodvd_cli_compatible= 0;
o->do_devices= 0; o->do_devices= 0;
o->do_scanbus= 0; o->do_scanbus= 0;
o->do_checkdrive= 0; o->do_checkdrive= 0;
@ -4027,7 +4031,8 @@ int Cdrskin_blank(struct CdrskiN *skin, int flag)
/* Classical blanking of erasable media */ /* Classical blanking of erasable media */
if(s!=BURN_DISC_FULL && if(s!=BURN_DISC_FULL &&
(s!=BURN_DISC_APPENDABLE || skin->no_blank_appendable)) { (s!=BURN_DISC_APPENDABLE || skin->no_blank_appendable) &&
!(profile_number == 0x13 && skin->prodvd_cli_compatible)) {
Cdrskin_release_drive(skin,0); Cdrskin_release_drive(skin,0);
if(s==BURN_DISC_BLANK) { if(s==BURN_DISC_BLANK) {
fprintf(stderr, fprintf(stderr,
@ -4049,7 +4054,8 @@ int Cdrskin_blank(struct CdrskiN *skin, int flag)
fprintf(stderr,"cdrskin: FATAL : blank=... : media is not erasable\n"); fprintf(stderr,"cdrskin: FATAL : blank=... : media is not erasable\n");
return(0); return(0);
} }
if(profile_number == 0x14 || profile_number == 0x13) if((profile_number == 0x14 || profile_number == 0x13) &&
!skin->prodvd_cli_compatible)
skin->blank_fast= 0; /* only with deformat_sequential_quickest */ skin->blank_fast= 0; /* only with deformat_sequential_quickest */
} else { } else {
@ -4449,7 +4455,7 @@ int Cdrskin_activate_write_mode(struct CdrskiN *skin, enum burn_disc_status s,
int profile_number= -1, track_type_1, mixed_mode= 0, unpredicted_size= 0, ret; int profile_number= -1, track_type_1, mixed_mode= 0, unpredicted_size= 0, ret;
struct burn_drive_info *drive_info = NULL; struct burn_drive_info *drive_info = NULL;
char profile_name[80]; char profile_name[80];
int might_do_tao= 0, might_do_sao= 1; int might_do_tao= 0, might_do_sao= 1, allows_multi= 1;
double fixed_size= 0.0, tao_to_sao_tsize= 0.0, dummy; double fixed_size= 0.0, tao_to_sao_tsize= 0.0, dummy;
#ifdef Cdrskin_libburn_has_get_multi_capS #ifdef Cdrskin_libburn_has_get_multi_capS
struct burn_multi_caps *caps = NULL; struct burn_multi_caps *caps = NULL;
@ -4473,10 +4479,12 @@ int Cdrskin_activate_write_mode(struct CdrskiN *skin, enum burn_disc_status s,
} else if(ret==0) { } else if(ret==0) {
fprintf(stderr, fprintf(stderr,
"cdrskin: SORRY : Cannot find any suitable write mode for this media\n"); "cdrskin: SORRY : Cannot find any suitable write mode for this media\n");
burn_disc_free_multi_caps(&caps);
return(0); return(0);
} }
might_do_tao= caps->might_do_tao; might_do_tao= caps->might_do_tao;
might_do_sao= caps->might_do_sao; might_do_sao= caps->might_do_sao;
burn_disc_free_multi_caps(&caps);
#endif #endif
for(i=0;i<skin->track_counter;i++) { for(i=0;i<skin->track_counter;i++) {
@ -4610,6 +4618,25 @@ check_with_drive:;
return(0); return(0);
} }
} }
#ifdef Cdrskin_libburn_has_get_multi_capS
ret = burn_disc_get_multi_caps(skin->grabbed_drive,skin->write_type,&caps,0);
if (ret>0)
allows_multi= caps->multi_session;
burn_disc_free_multi_caps(&caps);
#endif
if(skin->multi && !allows_multi) {
if(skin->prodvd_cli_compatible) {
skin->multi= 0;
if(skin->verbosity>=Cdrskin_verbose_progresS)
fprintf(stderr, "cdrskin: NOTE : Ignored option -multi.\n");
} else {
fprintf(stderr,
"cdrskin: SORRY : Cannot keep this media appendable after write by -multi\n");
return(0);
}
}
it_is_done:; it_is_done:;
if(skin->write_type==BURN_WRITE_SAO && unpredicted_size==1) if(skin->write_type==BURN_WRITE_SAO && unpredicted_size==1)
for(i= 0; i<skin->track_counter; i++) { for(i= 0; i<skin->track_counter; i++) {
@ -4656,6 +4683,16 @@ int Cdrskin_burn(struct CdrskiN *skin, int flag)
s= burn_disc_get_status(drive); s= burn_disc_get_status(drive);
if(skin->verbosity>=Cdrskin_verbose_progresS) if(skin->verbosity>=Cdrskin_verbose_progresS)
Cdrskin_report_disc_status(skin,s,0); Cdrskin_report_disc_status(skin,s,0);
#ifdef Cdrskin_allow_libburn_taO
if (s!=BURN_DISC_APPENDABLE && s!=BURN_DISC_BLANK) {
#else
if (s!=BURN_DISC_BLANK) {
#endif
Cdrskin_release_drive(skin,0);
fprintf(stderr,"cdrskin: FATAL : no writeable media detected.\n");
goto burn_failed;
}
ret= Cdrskin_activate_write_mode(skin,s,0); ret= Cdrskin_activate_write_mode(skin,s,0);
if(ret<=0) { if(ret<=0) {
fprintf(stderr, fprintf(stderr,
@ -4689,9 +4726,7 @@ burn_failed:;
skin->fixed_size+= size+padding; skin->fixed_size+= size+padding;
} }
#ifdef Cdrskin_libburn_has_multI if (s==BURN_DISC_APPENDABLE) {
if (s == BURN_DISC_APPENDABLE) {
#ifdef Cdrskin_allow_sao_for_appendablE #ifdef Cdrskin_allow_sao_for_appendablE
; ;
#else #else
@ -4701,17 +4736,8 @@ burn_failed:;
goto burn_failed; goto burn_failed;
} }
#endif /* ! Cdrskin_allow_sao_for_appendablE */ #endif /* ! Cdrskin_allow_sao_for_appendablE */
} else if (s != BURN_DISC_BLANK) {
#else
if (s != BURN_DISC_BLANK) {
#endif
Cdrskin_release_drive(skin,0);
fprintf(stderr,"cdrskin: FATAL : no writeable media detected.\n");
goto burn_failed;
} }
#ifndef Cdrskin_extra_leaN #ifndef Cdrskin_extra_leaN
if(skin->verbosity>=Cdrskin_verbose_progresS) { if(skin->verbosity>=Cdrskin_verbose_progresS) {
@ -5546,6 +5572,9 @@ set_padsize:;
if(skin->verbosity>=Cdrskin_verbose_cmD) if(skin->verbosity>=Cdrskin_verbose_cmD)
printf("cdrskin: padding : %.f\n",skin->padding); printf("cdrskin: padding : %.f\n",skin->padding);
} else if(strcmp(argv[i],"--prodvd_cli_compatible")==0) {
skin->prodvd_cli_compatible= 1;
} else if(strcmp(argv[i],"-raw96r")==0) { } else if(strcmp(argv[i],"-raw96r")==0) {
/* is handled in Cdrpreskin_setup() */; /* is handled in Cdrpreskin_setup() */;

View File

@ -1 +1 @@
#define Cdrskin_timestamP "2007.02.07.162836" #define Cdrskin_timestamP "2007.02.08.210744"