New bit7 with isoburn_drive_aquire(): pretend read-only
This commit is contained in:
parent
cf046f9533
commit
a811361577
@ -267,6 +267,7 @@ int isoburn_is_intermediate_dvd_rw(struct burn_drive *d, int flag)
|
|||||||
bit4= do not emulate TOC on overwriteable media
|
bit4= do not emulate TOC on overwriteable media
|
||||||
bit5= ignore ACL from external filesystems
|
bit5= ignore ACL from external filesystems
|
||||||
bit6= ignore POSIX Extended Attributes 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,
|
static int isoburn_welcome_media(struct isoburn **o, struct burn_drive *d,
|
||||||
int flag)
|
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);
|
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 */
|
if(ret<0) /* == 0 is read-only media, but it is too early to reject it here */
|
||||||
goto ex;
|
goto ex;
|
||||||
if(ret==0)
|
if(ret==0 || (flag & 128))
|
||||||
readonly= 1;
|
readonly= 1;
|
||||||
|
if(flag & 128)
|
||||||
|
flag = (flag & ~ 16) | 8;
|
||||||
|
|
||||||
ret= isoburn_new(o, 0);
|
ret= isoburn_new(o, 0);
|
||||||
if(ret<=0)
|
if(ret<=0)
|
||||||
goto ex;
|
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;
|
(*o)->fabricated_disc_status= BURN_DISC_APPENDABLE;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
if(caps->start_adr) { /* set emulation to overwriteable */
|
if(caps->start_adr && !readonly) { /* set emulation to overwriteable */
|
||||||
(*o)->emulation_mode= 1;
|
(*o)->emulation_mode= 1;
|
||||||
ret= isoburn_is_intermediate_dvd_rw(d, 0);
|
ret= isoburn_is_intermediate_dvd_rw(d, 0);
|
||||||
if(ret>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) */;
|
/* >>> recognize unsuitable media (but allow read-only media) */;
|
||||||
|
|
||||||
if(readonly) {
|
if(readonly) {
|
||||||
|
(*o)->fabricated_disc_status= BURN_DISC_FULL;
|
||||||
/* This might be overwriteable media in a -ROM drive.
|
/* This might be overwriteable media in a -ROM drive.
|
||||||
Pitfall:
|
Pitfall:
|
||||||
Multi-session media which bear a xorriso image for overwriteables
|
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);
|
ret= isoburn_emulate_toc(d, 1);
|
||||||
if(ret<0)
|
if(ret<0)
|
||||||
goto ex;
|
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
|
/* This might also be multi-session media which do not
|
||||||
get shown with a decent TOC.
|
get shown with a decent TOC.
|
||||||
CD-R TOC (profile 0x08) can be trusted. Others not.
|
CD-R TOC (profile 0x08) can be trusted. Others not.
|
||||||
@ -412,6 +419,7 @@ ex:
|
|||||||
bit4= do not emulate TOC on overwriteable media
|
bit4= do not emulate TOC on overwriteable media
|
||||||
bit5= ignore ACL from external filesystems
|
bit5= ignore ACL from external filesystems
|
||||||
bit6= ignore POSIX Extended Attributes 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[],
|
int isoburn_drive_aquire(struct burn_drive_info *drive_infos[],
|
||||||
char *adr, int flag)
|
char *adr, int flag)
|
||||||
@ -442,7 +450,7 @@ int isoburn_drive_aquire(struct burn_drive_info *drive_infos[],
|
|||||||
goto ex;
|
goto ex;
|
||||||
drive_grabbed= 1;
|
drive_grabbed= 1;
|
||||||
ret= isoburn_welcome_media(&o, (*drive_infos)[0].drive,
|
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)
|
if(ret<=0)
|
||||||
goto ex;
|
goto ex;
|
||||||
|
|
||||||
|
@ -386,6 +386,7 @@ int isoburn_drive_scan_and_grab(struct burn_drive_info *drive_infos[],
|
|||||||
bit5= ignore ACL from external filesystems
|
bit5= ignore ACL from external filesystems
|
||||||
bit6= ignore POSIX Extended Attributes from external
|
bit6= ignore POSIX Extended Attributes from external
|
||||||
filesystems
|
filesystems
|
||||||
|
bit7= pretend read-only profile and scan for table of content
|
||||||
@return 1 = success , 0 = drive not found , <0 = other error
|
@return 1 = success , 0 = drive not found , <0 = other error
|
||||||
*/
|
*/
|
||||||
int isoburn_drive_aquire(struct burn_drive_info *drive_infos[],
|
int isoburn_drive_aquire(struct burn_drive_info *drive_infos[],
|
||||||
|
@ -1 +1 @@
|
|||||||
#define Xorriso_timestamP "2009.10.07.072645"
|
#define Xorriso_timestamP "2009.10.07.075634"
|
||||||
|
Loading…
Reference in New Issue
Block a user