Implemented reassure for -blank, -format, -dev, -indev, -devices

This commit is contained in:
2008-02-05 19:15:43 +00:00
parent 146f28b6ef
commit e947087b0d
4 changed files with 62 additions and 21 deletions

View File

@ -5962,6 +5962,8 @@ int Xorriso_reassure(struct XorrisO *xorriso, char *cmd, char *which_will,
{
int ret;
if(!xorriso->do_reassure)
return(1);
sprintf(xorriso->info_text, "Really perform %s which will %s ? (y/n)\n",
cmd, which_will);
Xorriso_info(xorriso, 4);
@ -6183,7 +6185,9 @@ int Xorriso_option_ban_stdio_write(struct XorrisO *xorriso, int flag)
/* Option -blank and -format */
/* @param flag bit0= format rather than blank */
/* @param flag bit0= format rather than blank
@return <=0 error , 1 success, 2 revoked by -reassure
*/
int Xorriso_option_blank(struct XorrisO *xorriso, char *mode, int flag)
{
char drive_name[SfileadrL], *cmd= "-blank", sfe[5*SfileadrL];
@ -6206,6 +6210,10 @@ int Xorriso_option_blank(struct XorrisO *xorriso, char *mode, int flag)
}
aq_flag= 3;
}
ret= Xorriso_reassure(xorriso, cmd,
"possibly make unreadable data on outdev", 0);
if(ret<=0)
return(2);
if(strcmp(mode, "all")==0 || strcmp(mode, "full")==0)
mode_flag= 0;
@ -6557,7 +6565,7 @@ int Xorriso_option_commit(struct XorrisO *xorriso, int flag)
if(flag&1)
return(1);
strcpy(newdev, xorriso->outdev);
ret= Xorriso_option_dev(xorriso, newdev, 3);
ret= Xorriso_option_dev(xorriso, newdev, 3|4);
return(ret);
}
@ -6576,7 +6584,7 @@ int Xorriso_option_commit_eject(struct XorrisO *xorriso, char *which, int flag)
eret= 1;
else
eret= Xorriso_option_eject(xorriso, which, 0);
ret= Xorriso_option_dev(xorriso, "", 3);
ret= Xorriso_option_dev(xorriso, "", 3|4);
if(eret<ret)
return(eret);
return(ret);
@ -6658,7 +6666,11 @@ int Xorriso_option_cut_out(struct XorrisO *xorriso, char *disk_path,
/* Options -dev , -indev, -outdev */
/** @param flag bit0=use as indev , bit1= use as outdev */
/** @param flag bit0=use as indev
bit1= use as outdev
bit2= do not -reassure
@return <=0 error , 1 success, 2 revoked by -reassure
*/
int Xorriso_option_dev(struct XorrisO *xorriso, char *in_adr, int flag)
{
int ret;
@ -6691,6 +6703,12 @@ int Xorriso_option_dev(struct XorrisO *xorriso, char *in_adr, int flag)
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "SORRY", 0);
return(0);
}
if((flag&1) && !(flag&4)) {
ret= Xorriso_reassure(xorriso, (flag&2) ? "-dev" : "-indev",
"eventually discard the current image", 0);
if(ret<=0)
return(2);
}
if(adr[0]==0) {
if((flag&1) && xorriso->in_drive_handle != NULL) {
@ -6718,6 +6736,8 @@ int Xorriso_option_dev(struct XorrisO *xorriso, char *in_adr, int flag)
/* Option -devices */
/* @return <=0 error , 1 success, 2 revoked by -reassure
*/
int Xorriso_option_devices(struct XorrisO *xorriso, int flag)
{
int ret;
@ -6729,6 +6749,10 @@ int Xorriso_option_devices(struct XorrisO *xorriso, int flag)
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "SORRY", 0);
return(0);
}
ret= Xorriso_reassure(xorriso, "-devices",
"eventually discard the current image", 0);
if(ret<=0)
return(2);
xorriso->info_text[0]= 0;
if(xorriso->in_drive_handle!=NULL || xorriso->out_drive_handle!=NULL) {
if(xorriso->in_drive_handle == xorriso->out_drive_handle) {
@ -6812,6 +6836,7 @@ int Xorriso_option_eject(struct XorrisO *xorriso, char *which, int flag)
/* Options -end , and -rollback_end */
/* @param flag bit0= discard pending changes
bit1= do not -reassure
@return <=0 error , 1 success, 2 revoked by -reassure
*/
int Xorriso_option_end(struct XorrisO *xorriso, int flag)
@ -6831,9 +6856,11 @@ int Xorriso_option_end(struct XorrisO *xorriso, int flag)
} else {
which_will= "end the program";
}
ret= Xorriso_reassure(xorriso, cmd, which_will, 0);
if(ret<=0)
return(2);
if(!(flag&2)) {
ret= Xorriso_reassure(xorriso, cmd, which_will, 0);
if(ret<=0)
return(2);
}
if(xorriso->volset_change_pending) {
if(flag&1) {
@ -8194,7 +8221,7 @@ int Xorriso_option_rollback(struct XorrisO *xorriso, int flag)
ret= Xorriso_give_up_drive(xorriso, 1|8);
if(ret<=0)
return(ret);
ret= Xorriso_option_dev(xorriso, indev, 1);
ret= Xorriso_option_dev(xorriso, indev, 1|4);
/*
1|((xorriso->out_drive_handle==NULL)<<1));
*/
@ -8435,7 +8462,7 @@ return:
bit0= recursion
*/
{
int ret, was_dashed;
int ret, was_dashed, end_ret;
int num1, num2;
double d1, d2;
char *cmd, *arg1, *arg2, *arg4;
@ -8593,11 +8620,12 @@ next_command:;
ret= Xorriso_option_eject(xorriso, arg1, 0);
} else if(strcmp(cmd,"end")==0) {
Xorriso_option_end(xorriso, 0);
end_ret= Xorriso_option_end(xorriso, 0);
ret= Xorriso_eval_problem_status(xorriso, ret, 0);
if(ret<0)
return(ret);
{ret= 3; goto ex;}
if(end_ret!=2)
{ret= 3; goto ex;}
} else if(strcmp(cmd,"iso_rr_pattern")==0) {
(*idx)++;
@ -8757,11 +8785,12 @@ next_command:;
ret= Xorriso_option_rollback(xorriso, 0);
} else if(strcmp(cmd,"rollback_end")==0) {
Xorriso_option_end(xorriso, 1);
end_ret= Xorriso_option_end(xorriso, 1);
ret= Xorriso_eval_problem_status(xorriso, ret, 0);
if(ret<0)
return(ret);
{ret= 3; goto ex;}
if(end_ret!=2)
{ret= 3; goto ex;}
} else if(strcmp(cmd,"speed")==0) {
(*idx)++;
@ -9165,7 +9194,7 @@ int Xorriso_main(int argc, char **argv)
end_sucessfully:;
Xorriso_process_msg_queues(xorriso, 0);
if(xorriso->volset_change_pending)
Xorriso_option_end(xorriso, 0);
Xorriso_option_end(xorriso, 2);
Xorriso_process_msg_queues(xorriso, 0);
Xorriso_destroy(&xorriso,1);
exit(0);