Re-enabled -force with write modes which seem unavailable
This commit is contained in:
parent
e955d50198
commit
b6c7fd7478
@ -135,6 +135,7 @@ or
|
||||
#define Cdrskin_libburn_has_get_spacE 1
|
||||
#define Cdrskin_libburn_write_mode_ruleS 1
|
||||
#define Cdrskin_libburn_has_allow_untested_profileS 1
|
||||
#define Cdrskin_libburn_has_set_forcE 1
|
||||
|
||||
#endif /* Cdrskin_libburn_0_3_3 */
|
||||
|
||||
@ -4786,6 +4787,9 @@ burn_failed:;
|
||||
#ifdef Cdrskin_libburn_has_set_filluP
|
||||
burn_write_opts_set_fillup(o, skin->fill_up_media);
|
||||
#endif
|
||||
#ifdef Cdrskin_libburn_has_set_forcE
|
||||
burn_write_opts_set_force(o, !!skin->force_is_set);
|
||||
#endif
|
||||
|
||||
if(skin->dummy_mode) {
|
||||
fprintf(stderr,
|
||||
|
@ -1 +1 @@
|
||||
#define Cdrskin_timestamP "2007.03.03.141240"
|
||||
#define Cdrskin_timestamP "2007.03.03.141435"
|
||||
|
@ -877,6 +877,8 @@ off_t burn_disc_available_space(struct burn_drive *d,
|
||||
libburn currently writes only to profiles 0x09 "CD-R", 0x0a "CD-RW",
|
||||
0x11 "DVD-R", 0x12 "DVD-RAM", 0x13 "DVD-RW restricted overwrite",
|
||||
0x14 "DVD-RW Sequential Recording" or 0x1a "DVD+RW".
|
||||
If enabled by burn_allow_untested_profiles() it also writes to profile
|
||||
0x15 "DVD-R/DL Sequential Recording".
|
||||
@param d The drive where the media is inserted.
|
||||
@param pno Profile Number as of mmc5r03c.pdf, table 89
|
||||
@param name Profile Name (e.g "CD-RW", unknown profiles have empty name)
|
||||
@ -929,6 +931,7 @@ void burn_read_opts_free(struct burn_read_opts *opts);
|
||||
@param drive The drive with which to erase a disc.
|
||||
@param fast Nonzero to do a fast erase, where only the disc's headers are
|
||||
erased; zero to erase the entire disc.
|
||||
With DVD-RW, fast blanking yields media capable only of DAO.
|
||||
*/
|
||||
void burn_disc_erase(struct burn_drive *drive, int fast);
|
||||
|
||||
@ -1041,7 +1044,7 @@ int burn_precheck_write(struct burn_write_opts *o, struct burn_disc *disc,
|
||||
|
||||
/** Write a disc in the drive. The drive must be grabbed successfully before
|
||||
calling this function. Always ensure that the drive reports a status of
|
||||
BURN_DISC_BLANK before calling this function.
|
||||
BURN_DISC_BLANK ot BURN_DISC_APPENDABLE before calling this function.
|
||||
Note: write_type BURN_WRITE_SAO is currently not capable of writing a mix
|
||||
of data and audio tracks. You must use BURN_WRITE_TAO for such sessions.
|
||||
To be set by burn_write_opts_set_write_type().
|
||||
@ -1387,6 +1390,14 @@ void burn_write_opts_set_fillup(struct burn_write_opts *opts,
|
||||
int fill_up_media);
|
||||
|
||||
|
||||
/* ts A70303 */
|
||||
/** Eventually makes libburn ignore the failure of some conformance checks:
|
||||
- the check wether CD write+block type is supported by the drive
|
||||
@param opts The write opts to change
|
||||
@param use_force 1=ignore above checks, 0=refuse work on failed check
|
||||
*/
|
||||
void burn_write_opts_set_force(struct burn_write_opts *opts, int use_force);
|
||||
|
||||
|
||||
/** Sets whether to read in raw mode or not
|
||||
@param opts The read opts to change
|
||||
|
@ -37,6 +37,7 @@ struct burn_write_opts *burn_write_opts_new(struct burn_drive *drive)
|
||||
opts->obs_pad = 0;
|
||||
opts->start_byte = -1;
|
||||
opts->fill_up_media = 0;
|
||||
opts->force_is_set = 0;
|
||||
opts->has_mediacatalog = 0;
|
||||
opts->format = BURN_CDROM;
|
||||
opts->multi = 0;
|
||||
@ -288,7 +289,7 @@ try_tao:;
|
||||
strcat(reasons, "multi track capability lacking, ");
|
||||
if (demands.exotic_track)
|
||||
strcat(reasons, "non-audio, non-data track, ");
|
||||
if (d->current_is_cd_profile)
|
||||
if (d->current_is_cd_profile && !opts->force_is_set)
|
||||
if ((d->block_types[BURN_WRITE_TAO] & demands.block_types) !=
|
||||
demands.block_types)
|
||||
strcat(reasons, "drive dislikes block type, ");
|
||||
@ -350,6 +351,13 @@ void burn_write_opts_set_fillup(struct burn_write_opts *opts,int fill_up_media)
|
||||
}
|
||||
|
||||
|
||||
/* ts A70303: API */
|
||||
void burn_write_opts_set_force(struct burn_write_opts *opts, int use_force)
|
||||
{
|
||||
opts->force_is_set = !!use_force;
|
||||
}
|
||||
|
||||
|
||||
void burn_read_opts_set_raw(struct burn_read_opts *opts, int raw)
|
||||
{
|
||||
opts->raw = raw;
|
||||
|
@ -41,9 +41,14 @@ struct burn_write_opts
|
||||
/* ts A61222 : Start address for media which allow a choice */
|
||||
off_t start_byte;
|
||||
|
||||
/* ts A70213 : Wether to fill up the while available space on media */
|
||||
/* ts A70213 : Wether to fill up the available space on media */
|
||||
int fill_up_media;
|
||||
|
||||
/* ts A70303 : Wether to override conformance checks:
|
||||
- the check wether CD write+block type is supported by the drive
|
||||
*/
|
||||
int force_is_set;
|
||||
|
||||
/** A disc can have a media catalog number */
|
||||
int has_mediacatalog;
|
||||
unsigned char mediacatalog[13];
|
||||
|
@ -1089,7 +1089,11 @@ int burn_disc_close_track_dvd_plus_r(struct burn_write_opts *o,
|
||||
|
||||
d->busy = BURN_DRIVE_CLOSING_SESSION;
|
||||
d->close_track_session(d, 0, d->last_track_no); /* CLOSE TRACK, 001b */
|
||||
|
||||
/* Each session becomes a single logical track. So to distinguish them,
|
||||
it is mandatory to close the session together with each track. */
|
||||
d->close_track_session(d, 1, 0); /* CLOSE SESSION, 010b */
|
||||
|
||||
d->busy = BURN_DRIVE_WRITING;
|
||||
d->last_track_no++;
|
||||
return 1;
|
||||
|
Loading…
Reference in New Issue
Block a user