New bit7 with isoburn_drive_aquire(): pretend read-only

This commit is contained in:
Thomas Schmitt 2009-10-07 07:55:23 +00:00
parent 71edf5c2d3
commit a45363ea3e
3 changed files with 15 additions and 6 deletions

View File

@ -267,6 +267,7 @@ int isoburn_is_intermediate_dvd_rw(struct burn_drive *d, int flag)
bit4= do not emulate TOC on overwriteable media
bit5= ignore ACL from external filesystems
bit6= ignore POSIX Extended Attributes from external filesystems
bit7= pretend -ROM and scan for table of content
*/
static int isoburn_welcome_media(struct isoburn **o, struct burn_drive *d,
int flag)
@ -288,8 +289,11 @@ static int isoburn_welcome_media(struct isoburn **o, struct burn_drive *d,
ret= burn_disc_get_multi_caps(d, BURN_WRITE_NONE, &caps, 0);
if(ret<0) /* == 0 is read-only media, but it is too early to reject it here */
goto ex;
if(ret==0)
if(ret==0 || (flag & 128))
readonly= 1;
if(flag & 128)
flag = (flag & ~ 16) | 8;
ret= isoburn_new(o, 0);
if(ret<=0)
goto ex;
@ -305,7 +309,7 @@ static int isoburn_welcome_media(struct isoburn **o, struct burn_drive *d,
(*o)->fabricated_disc_status= BURN_DISC_APPENDABLE;
#endif
if(caps->start_adr) { /* set emulation to overwriteable */
if(caps->start_adr && !readonly) { /* set emulation to overwriteable */
(*o)->emulation_mode= 1;
ret= isoburn_is_intermediate_dvd_rw(d, 0);
if(ret>0) {
@ -334,6 +338,7 @@ static int isoburn_welcome_media(struct isoburn **o, struct burn_drive *d,
/* >>> recognize unsuitable media (but allow read-only media) */;
if(readonly) {
(*o)->fabricated_disc_status= BURN_DISC_FULL;
/* This might be overwriteable media in a -ROM drive.
Pitfall:
Multi-session media which bear a xorriso image for overwriteables
@ -364,8 +369,10 @@ static int isoburn_welcome_media(struct isoburn **o, struct burn_drive *d,
ret= isoburn_emulate_toc(d, 1);
if(ret<0)
goto ex;
else if(ret > 0)
(*o)->emulation_mode= 1;
}
if(ret == 0 && profile != 0x08 && (flag&8)) {
if(ret == 0 && (profile != 0x08 || (flag & 128)) && (flag & 8)) {
/* This might also be multi-session media which do not
get shown with a decent TOC.
CD-R TOC (profile 0x08) can be trusted. Others not.
@ -412,6 +419,7 @@ ex:
bit4= do not emulate TOC on overwriteable media
bit5= ignore ACL from external filesystems
bit6= ignore POSIX Extended Attributes from external filesystems
bit7= pretend -ROM profile and scan for table of content
*/
int isoburn_drive_aquire(struct burn_drive_info *drive_infos[],
char *adr, int flag)
@ -442,7 +450,7 @@ int isoburn_drive_aquire(struct burn_drive_info *drive_infos[],
goto ex;
drive_grabbed= 1;
ret= isoburn_welcome_media(&o, (*drive_infos)[0].drive,
(flag & (8 | 16 | 32 | 64)) | !!(flag&2));
(flag & (8 | 16 | 32 | 64 | 128)) | !!(flag&2));
if(ret<=0)
goto ex;

View File

@ -386,10 +386,11 @@ int isoburn_drive_scan_and_grab(struct burn_drive_info *drive_infos[],
bit5= ignore ACL from external filesystems
bit6= ignore POSIX Extended Attributes from external
filesystems
bit7= pretend read-only profile and scan for table of content
@return 1 = success , 0 = drive not found , <0 = other error
*/
int isoburn_drive_aquire(struct burn_drive_info *drive_infos[],
char* adr, int flag);
char* adr, int flag);
/** Aquire a drive from the burn_drive_info[] array which was obtained by
a previous call of burn_drive_scan().

View File

@ -1 +1 @@
#define Xorriso_timestamP "2009.10.07.072645"
#define Xorriso_timestamP "2009.10.07.075634"