|
|
|
@ -3385,6 +3385,7 @@ int Xorriso_option_cut_out(struct XorrisO *xorriso, char *disk_path,
|
|
|
|
|
int Xorriso_option_dev(struct XorrisO *xorriso, char *adr, int flag)
|
|
|
|
|
{
|
|
|
|
|
int ret;
|
|
|
|
|
char sfe[4*SfileadrL];
|
|
|
|
|
|
|
|
|
|
if(xorriso->ban_stdio_write && strncmp(adr, "stdio:", 6)==0) {
|
|
|
|
|
sprintf(xorriso->info_text,
|
|
|
|
@ -3394,7 +3395,7 @@ int Xorriso_option_dev(struct XorrisO *xorriso, char *adr, int flag)
|
|
|
|
|
return(0);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if((flag&3)==0)
|
|
|
|
|
if((flag&3)==0 || xorriso->in_drive_handle == xorriso->out_drive_handle)
|
|
|
|
|
flag|= 3;
|
|
|
|
|
if((flag&3)!=3) {
|
|
|
|
|
/* <<< for now only -dev */;
|
|
|
|
@ -3411,9 +3412,24 @@ int Xorriso_option_dev(struct XorrisO *xorriso, char *adr, int flag)
|
|
|
|
|
return(0);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if(adr[0]==0)
|
|
|
|
|
if(adr[0]==0) {
|
|
|
|
|
if((flag&1) && xorriso->in_drive_handle != NULL) {
|
|
|
|
|
if(xorriso->in_drive_handle == xorriso->out_drive_handle)
|
|
|
|
|
sprintf(xorriso->info_text,"Giving up -dev %s",
|
|
|
|
|
Text_shellsafe(xorriso->indev, sfe, 0));
|
|
|
|
|
else
|
|
|
|
|
sprintf(xorriso->info_text,"Giving up -indev %s",
|
|
|
|
|
Text_shellsafe(xorriso->indev, sfe, 0));
|
|
|
|
|
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "NOTE", 0);
|
|
|
|
|
}
|
|
|
|
|
if((flag&2) && xorriso->in_drive_handle != NULL &&
|
|
|
|
|
xorriso->in_drive_handle != xorriso->out_drive_handle) {
|
|
|
|
|
sprintf(xorriso->info_text,"Giving up -outdev %s",
|
|
|
|
|
Text_shellsafe(xorriso->indev, sfe, 0));
|
|
|
|
|
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "NOTE", 0);
|
|
|
|
|
}
|
|
|
|
|
ret= Xorriso_give_up_drive(xorriso, flag&3);
|
|
|
|
|
else
|
|
|
|
|
} else
|
|
|
|
|
ret= Xorriso_aquire_drive(xorriso, adr, flag&3);
|
|
|
|
|
if(ret<0)
|
|
|
|
|
return(ret);
|
|
|
|
@ -3481,28 +3497,22 @@ int Xorriso_option_dummy(struct XorrisO *xorriso, char *mode, int flag)
|
|
|
|
|
/* Option -eject */
|
|
|
|
|
int Xorriso_option_eject(struct XorrisO *xorriso, char *which, int flag)
|
|
|
|
|
{
|
|
|
|
|
/* <<< should become handles */
|
|
|
|
|
char *drive1="", *drive2="";
|
|
|
|
|
int gu_flag= 4, ret;
|
|
|
|
|
|
|
|
|
|
if(strncmp(which,"in",2)==0)
|
|
|
|
|
drive1= xorriso->indev;
|
|
|
|
|
gu_flag|= 1;
|
|
|
|
|
else if(strncmp(which,"out",3)==0)
|
|
|
|
|
drive1= xorriso->outdev;
|
|
|
|
|
else {
|
|
|
|
|
drive1= xorriso->indev;
|
|
|
|
|
drive2= xorriso->outdev;
|
|
|
|
|
}
|
|
|
|
|
if(drive1== xorriso->indev && xorriso->volset_change_pending) {
|
|
|
|
|
gu_flag|= 2;
|
|
|
|
|
else
|
|
|
|
|
gu_flag|= 3;
|
|
|
|
|
if((gu_flag&1) && xorriso->volset_change_pending) {
|
|
|
|
|
sprintf(xorriso->info_text,
|
|
|
|
|
"-eject: Image changes pending. -commit or -rollback first");
|
|
|
|
|
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "SORRY", 0);
|
|
|
|
|
return(0);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
fprintf(stderr, ">>> LIBBURN : eject media in drive%s %s %s\n",
|
|
|
|
|
(drive2[0]!=0 ? "s" : ""), drive1, drive2);
|
|
|
|
|
|
|
|
|
|
return(1);
|
|
|
|
|
ret= Xorriso_give_up_drive(xorriso, gu_flag);
|
|
|
|
|
return(ret);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|