Implemented options -outdev and -indev

This commit is contained in:
2007-11-14 14:28:44 +00:00
parent 556b40c264
commit 146debc163
5 changed files with 276 additions and 134 deletions

View File

@@ -4322,15 +4322,10 @@ int Xorriso_option_commit(struct XorrisO *xorriso, int flag)
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "WARNING", 0);
return(2);
}
/* >>> care for modifying */
ret= Xorriso_write_growing(xorriso, 0);
ret= Xorriso_write_session(xorriso, 0);
if(ret<=0)
return(ret);
xorriso->volset_change_pending= 0;
if(flag&1)
return(1);
strcpy(newdev, xorriso->outdev);
@@ -4387,14 +4382,17 @@ int Xorriso_option_dev(struct XorrisO *xorriso, char *adr, int flag)
return(0);
}
#ifdef NIX
if((flag&3)==0 || xorriso->in_drive_handle == xorriso->out_drive_handle)
flag|= 3;
if((flag&3)!=3) {
/* <<< for now only -dev */;
fprintf(stderr, ">>> XORRISO : would execute -%sdev %s\n",
((flag&3)==1 ? "in" : ((flag&3)==2 ? "out" : "")), adr);
return(1);
}
#endif
if(xorriso->volset_change_pending && (flag&1)) {
sprintf(xorriso->info_text,
@@ -5378,10 +5376,7 @@ int Xorriso_option_print_size(struct XorrisO *xorriso, int flag)
Xorriso_result(xorriso,0);
return(2);
}
/* >>> care for modifying */
ret= Xorriso_write_growing(xorriso, 1);
ret= Xorriso_write_session(xorriso, 1);
if(ret<=0) {
sprintf(xorriso->info_text,"-print-size: Failed to set up virtual -commit");
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "SORRY", 0);
@@ -5559,7 +5554,7 @@ int Xorriso_option_rollback(struct XorrisO *xorriso, int flag)
if(Sfile_str(indev, xorriso->indev, 0)<=0)
return(-1);
ret= Xorriso_give_up_drive(xorriso, 1);
ret= Xorriso_give_up_drive(xorriso, 1|8);
if(ret<=0)
return(ret);
ret= Xorriso_option_dev(xorriso, indev,
@@ -5657,7 +5652,7 @@ int Xorriso_option_tell_media_space(struct XorrisO *xorriso, int flag)
int ret, free_space= 0, media_space= 0;
ret= Xorriso_tell_media_space(xorriso, &media_space, &free_space, 0);
if(ret<0) {
if(ret<=0) {
sprintf(xorriso->info_text, "Cannot -tell_media_space");
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "SORRY", 0);
return(0);
@@ -5697,9 +5692,23 @@ int Xorriso_option_temp_mem_limit(struct XorrisO *xorriso, char *size,
/* Option -toc */
int Xorriso_option_toc(struct XorrisO *xorriso, int flag)
{
int ret;
int ret, in_ret= 1000;
ret= Xorriso_toc(xorriso, 0);
if(strcmp(xorriso->indev,xorriso->outdev)==0)
ret= Xorriso_toc(xorriso, 0);
else {
if(xorriso->indev[0]!=0)
in_ret= Xorriso_toc(xorriso, 0);
if(xorriso->indev[0]!=0 && xorriso->outdev[0]!=0) {
strcpy(xorriso->result_line, "-------------: ---------------------------------------------------------------\n");
Xorriso_result(xorriso,0);
}
ret= 1;
if(xorriso->outdev[0]!=0)
ret= Xorriso_toc(xorriso, 2);
if(in_ret<ret)
ret= in_ret;
}
return(ret);
}
@@ -5977,7 +5986,7 @@ next_command:;
} else if(strcmp(cmd,"-outdev")==0) {
(*idx)++;
ret= Xorriso_option_dev(xorriso, arg1, 1);
ret= Xorriso_option_dev(xorriso, arg1, 2);
} else if(strcmp(cmd,"-page")==0) {
(*idx)+= 2;