New bit7 with isoburn_drive_aquire(): pretend read-only
This commit is contained in:
parent
71edf5c2d3
commit
a45363ea3e
@ -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;
|
||||
|
||||
|
@ -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().
|
||||
|
@ -1 +1 @@
|
||||
#define Xorriso_timestamP "2009.10.07.072645"
|
||||
#define Xorriso_timestamP "2009.10.07.075634"
|
||||
|
Loading…
Reference in New Issue
Block a user