Rectified usage of original xorriso options underneath growisofs

This commit is contained in:
2008-07-17 11:13:32 +00:00
parent 58ba5aeff6
commit 31809252e8
5 changed files with 50 additions and 32 deletions

View File

@@ -2947,10 +2947,12 @@ int Xorriso_new(struct XorrisO ** xorriso,char *progname, int flag)
else if(strcmp(leafname, "xorrisofs")==0 || strcmp(leafname, "genisofs")==0 ||
strcmp(leafname, "mkisofs")==0 || strcmp(leafname, "genisoimage")==0) {
m->argument_emulation= 1;
m->pacifier_style= 1;
Xorriso_protect_stdout(*xorriso, 0);
} else if(strcmp(leafname, "xorrecord")==0 || strcmp(leafname, "wodim")==0 ||
strcmp(leafname, "cdrecord")==0 || strcmp(leafname, "cdrskin")==0) {
m->argument_emulation= 2;
m->pacifier_style= 2;
}
ret= Exclusions_new(&(m->disk_exclusions), 0);
if(ret<=0)
@@ -4202,8 +4204,8 @@ int Xorriso_status(struct XorrisO *xorriso, char *filter, FILE *fp, int flag)
is_default= (xorriso->pacifier_style==0);
sprintf(line,"-pacifier '%s'\n",
xorriso->pacifier_style==2 ? "mkisofs" :
xorriso->pacifier_style==1 ? "cdrecord" : "xorriso");
xorriso->pacifier_style==1 ? "mkisofs" :
xorriso->pacifier_style==2 ? "cdrecord" : "xorriso");
if(!(is_default && no_defaults))
Xorriso_status_result(xorriso,filter,fp,flag&2);
@@ -7667,14 +7669,14 @@ int Xorriso_genisofs(struct XorrisO *xorriso, char *whom,
if(ret<=0)
goto ex;
}
if(!was_other_option)
{ret= 1; goto ex;}
if(xorriso->out_drive_handle==NULL) {
if(was_other_option && xorriso->out_drive_handle==NULL) {
ret= Xorriso_option_dev(xorriso, "-", 2|4); /* set outdev to stdout */
if(ret<=0)
return(ret);
}
/* MULTI : */
if(msc[0]) {
cpt= strchr(msc, ',');
if(cpt==NULL) {
@@ -7688,15 +7690,16 @@ illegal_c:;
goto illegal_c;
strncpy(sfe, msc, cpt-msc);
sfe[cpt-msc]= 0;
if(strcmp(sfe, "16")==0) /* growisofs uses 16 to avoid a bug in mkisofs */
strcpy(sfe, "0");
if(xorriso->in_drive_handle!=NULL && indev[0]) {
/* give up indev before setting the load address */
ret= Xorriso_option_dev(xorriso, "", 1);
if(ret<=0)
return(ret);
}
ret= Xorriso_option_load(xorriso, "sbsector", sfe, 0);
/* growisofs submits msc1+16 to avoid a theoretical bug in mkisofs.
Therefore this bug has to be emulated here. Sigh.
*/
ret= Xorriso_option_load(xorriso, "sbsector", sfe, 1);
if(ret<=0)
return(ret);
ret= Xorriso_option_grow_blindly(xorriso, cpt+1, 0);
@@ -7709,6 +7712,9 @@ illegal_c:;
goto ex;
}
if(!was_other_option)
{ret= 1; goto ex;}
xorriso->padding= 300*1024;
for(i= 0; i<argc; i++) {
@@ -7853,7 +7859,7 @@ not_enough_args:;
if(ret<=0)
goto ex;
was_path= 1;
xorriso->pacifier_style= 2;
xorriso->pacifier_style= 1;
}
}
if(do_print_size) {
@@ -10380,7 +10386,8 @@ int Xorriso_option_list_formats(struct XorrisO *xorriso, int flag)
/* Option -load session|track|sbsector value */
/* @return <=0 error , 1 success, 2 revoked by -reassure
/* @param flag bit0= with adr_mode sbsector: adr_value is possibly 16 too high
@return <=0 error , 1 success, 2 revoked by -reassure
*/
int Xorriso_option_load(struct XorrisO *xorriso, char *adr_mode,
char *adr_value, int flag)
@@ -10404,7 +10411,7 @@ int Xorriso_option_load(struct XorrisO *xorriso, char *adr_mode,
else if(strcmp(adr_mode, "track")==0)
xorriso->image_start_mode= 2;
else if(strcmp(adr_mode, "lba")==0 || strcmp(adr_mode, "sbsector")==0)
xorriso->image_start_mode= 3;
xorriso->image_start_mode= 3 | ((flag&1) << 16);
else if(strcmp(adr_mode, "volid")==0)
xorriso->image_start_mode= 4;
else {
@@ -11264,11 +11271,11 @@ int Xorriso_option_pacifier(struct XorrisO *xorriso, char *style, int flag)
{
if(strcmp(style, "xorriso")==0 || strcmp(style, "default")==0)
xorriso->pacifier_style= 0;
else if(strcmp(style, "cdrecord")==0 || strcmp(style, "cdrskin")==0 ||
strcmp(style, "wodim")==0 || strcmp(style, "xorrecord")==0)
xorriso->pacifier_style= 1;
else if(strcmp(style, "mkisofs")==0 || strcmp(style, "genisofs")==0 ||
strcmp(style, "genisoimage")==0 || strcmp(style, "xorrisofs")==0)
xorriso->pacifier_style= 1;
else if(strcmp(style, "cdrecord")==0 || strcmp(style, "cdrskin")==0 ||
strcmp(style, "wodim")==0 || strcmp(style, "xorrecord")==0)
xorriso->pacifier_style= 2;
else {
sprintf(xorriso->info_text, "-pacifier: unknown behavior code '%s'", style);