Browse Source

New option --prodvd_cli_compatible

ZeroThreeEight
Thomas Schmitt 16 years ago
parent
commit
cad7531058
  1. 29
      cdrskin/cdrskin.1
  2. 59
      cdrskin/cdrskin.c
  3. 2
      cdrskin/cdrskin_timestamp.h

29
cdrskin/cdrskin.1

@ -16,8 +16,8 @@
.\" .sp <n> insert n+1 empty lines
.\" for manpage-specific macros, see man(7)
.SH NAME
cdrskin \- burns preformatted data to CD-R, CD-RW, DVD+/-RW, DVD-RAM
via libburn.
cdrskin \- burns preformatted data to CD-R, CD-RW, DVD-R, DVD-RW, DVD+RW,
DVD-RAM via libburn.
.SH SYNOPSIS
.B cdrskin
.RI [ options | track_source_addresses ]
@ -29,7 +29,7 @@ via libburn.
.\" respectively.
.PP
\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.
.PP
.B Overview of features:
@ -124,12 +124,6 @@ Multiple cycles of blanking and overwriting with random numbers might be.
.PP
.B Sequentially Recordable DVD Media:
.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.
DVD-RW must be in state "Sequential Recording".
The media must be either blank or appendable.
@ -254,9 +248,11 @@ Print this list of blanking types.
.TP
all
Blank an entire CD-RW or an unformatted DVD-RW.
(See also --prodvd_cli_compatible)
.TP
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
format_overwrite
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
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.
Option --prodvd_cli_compatible eventually makes -multi tolerable but cannot
make it work.
.br
In order to have all filesystem content accessible, the eventual ISO-9660
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
interpretation of eventual startup files. See section FILES below.
.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
Accept only the last argument of the command line as track source address.
.TP

59
cdrskin/cdrskin.c

@ -2012,6 +2012,8 @@ set_dev:;
" --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(" 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(
" --single_track accept only last argument as source_address\n");
@ -2349,6 +2351,7 @@ struct CdrskiN {
int dummy_mode;
int force_is_set;
int single_track;
int prodvd_cli_compatible;
int do_devices;
@ -2488,6 +2491,7 @@ int Cdrskin_new(struct CdrskiN **skin, struct CdrpreskiN *preskin, int flag)
o->dummy_mode= 0;
o->force_is_set= 0;
o->single_track= 0;
o->prodvd_cli_compatible= 0;
o->do_devices= 0;
o->do_scanbus= 0;
o->do_checkdrive= 0;
@ -4027,7 +4031,8 @@ int Cdrskin_blank(struct CdrskiN *skin, int flag)
/* Classical blanking of erasable media */
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);
if(s==BURN_DISC_BLANK) {
fprintf(stderr,
@ -4049,7 +4054,8 @@ int Cdrskin_blank(struct CdrskiN *skin, int flag)
fprintf(stderr,"cdrskin: FATAL : blank=... : media is not erasable\n");
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 */
} 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;
struct burn_drive_info *drive_info = NULL;
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;
#ifdef Cdrskin_libburn_has_get_multi_capS
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) {
fprintf(stderr,
"cdrskin: SORRY : Cannot find any suitable write mode for this media\n");
burn_disc_free_multi_caps(&caps);
return(0);
}
might_do_tao= caps->might_do_tao;
might_do_sao= caps->might_do_sao;
burn_disc_free_multi_caps(&caps);
#endif
for(i=0;i<skin->track_counter;i++) {
@ -4610,6 +4618,25 @@ check_with_drive:;
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:;
if(skin->write_type==BURN_WRITE_SAO && unpredicted_size==1)
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);
if(skin->verbosity>=Cdrskin_verbose_progresS)
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);
if(ret<=0) {
fprintf(stderr,
@ -4689,9 +4726,7 @@ burn_failed:;
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
;
#else
@ -4701,16 +4736,7 @@ burn_failed:;
goto burn_failed;
}
#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
@ -5546,6 +5572,9 @@ set_padsize:;
if(skin->verbosity>=Cdrskin_verbose_cmD)
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) {
/* is handled in Cdrpreskin_setup() */;

2
cdrskin/cdrskin_timestamp.h

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

Loading…
Cancel
Save