New command -use_immed_bit, new -as cdrecord option use_immed_bit=

This commit is contained in:
2016-07-31 07:38:41 +00:00
parent 21800fbf56
commit 07345cf49d
19 changed files with 284 additions and 86 deletions

View File

@@ -343,6 +343,10 @@ int Xorriso_aquire_drive(struct XorrisO *xorriso, char *adr, char *show_adr,
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "FAILURE", 0);
ret= 0; goto ex;
}
xorriso->use_immed_bit_default= burn_drive_get_immed(dinfo[0].drive) > 0 ?
1 : -1;
if(xorriso->use_immed_bit != 0)
burn_drive_set_immed(dinfo[0].drive, xorriso->use_immed_bit > 0);
state= isoburn_disc_get_status(dinfo[0].drive);
ret= isoburn_get_img_partition_offset(dinfo[0].drive, &offst);
if((state == BURN_DISC_APPENDABLE || state == BURN_DISC_FULL) && ret == 1) {
@@ -3412,3 +3416,36 @@ int Xorriso_scsi_dev_family(struct XorrisO *xorriso, int flag)
return(1);
}
int Xorriso_use_immed_bit(struct XorrisO *xorriso, int flag)
{
int enable= 1, ret;
struct burn_drive_info *dinfo;
struct burn_drive *drive;
/* It is not an error if no drive is acquired.
Xorriso_drive_aquire() will apply use_immed_bit.
*/
ret= Xorriso_get_drive_handles(xorriso, &dinfo, &drive,
"on attempt to control use of Immed bit", 2 | 16);
if(ret<0)
return(ret);
if(ret == 0)
return(1);
if(xorriso->use_immed_bit == -1) {
enable= 0;
} else if(xorriso->use_immed_bit == 1) {
enable= 1;
} else if(xorriso->use_immed_bit == 0) {
/* obtain default value as determined after drive aquiration */
if(xorriso->use_immed_bit_default == 0)
return(1);
enable= (xorriso->use_immed_bit_default > 0);
}
burn_drive_set_immed(drive, enable);
Xorriso_process_msg_queues(xorriso,0);
return(1);
}