Fixed bug with -as mkisofs -x and pattern expansion
This commit is contained in:
parent
6797fdcce1
commit
74cb92535d
@ -7270,13 +7270,27 @@ no_volunteer:;
|
|||||||
strncpy(speed, cpt, 79);
|
strncpy(speed, cpt, 79);
|
||||||
speed[79]= 0;
|
speed[79]= 0;
|
||||||
} else if(strcmp(argv[i], "-multi")==0) {
|
} else if(strcmp(argv[i], "-multi")==0) {
|
||||||
|
|
||||||
|
/* >>> MULTI : allow -multi */
|
||||||
|
|
||||||
sprintf(xorriso->info_text, "-as %s: Option -multi not supported.", whom);
|
sprintf(xorriso->info_text, "-as %s: Option -multi not supported.", whom);
|
||||||
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "FAILURE", 0);
|
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "FAILURE", 0);
|
||||||
ret= 0; goto ex;
|
ret= 0; goto ex;
|
||||||
} else if(strcmp(argv[i], "-msinfo")==0) {
|
} else if(strcmp(argv[i], "-msinfo")==0) {
|
||||||
|
|
||||||
|
/* >>> MULTI : allow -msinfo */
|
||||||
|
|
||||||
sprintf(xorriso->info_text, "-as %s: Option -msinfo not supported.",whom);
|
sprintf(xorriso->info_text, "-as %s: Option -msinfo not supported.",whom);
|
||||||
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "FAILURE", 0);
|
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "FAILURE", 0);
|
||||||
ret= 0; goto ex;
|
ret= 0; goto ex;
|
||||||
|
|
||||||
|
|
||||||
|
/* >>> MULTI : allow --grow_overwriteable_iso */
|
||||||
|
|
||||||
|
/* >>> MULTI : allow write_start_address= */
|
||||||
|
/* >>> MULTI : combine write_start_address=32 with --grow_overwriteable_iso */
|
||||||
|
/* >>> MULTI : ??? how about cdrskin. shouldn't it combine too ? */
|
||||||
|
|
||||||
} else if(strcmp(argv[i], "--devices")==0) {
|
} else if(strcmp(argv[i], "--devices")==0) {
|
||||||
do_scanbus= 2;
|
do_scanbus= 2;
|
||||||
} else if(strcmp(argv[i], "-scanbus")==0) {
|
} else if(strcmp(argv[i], "-scanbus")==0) {
|
||||||
@ -7427,6 +7441,9 @@ no_volunteer:;
|
|||||||
goto ex;
|
goto ex;
|
||||||
}
|
}
|
||||||
if(track_source[0]) {
|
if(track_source[0]) {
|
||||||
|
|
||||||
|
/* >>> MULTI : do not close if -multi */
|
||||||
|
|
||||||
xorriso->do_close= 1;
|
xorriso->do_close= 1;
|
||||||
ret= Xorriso_burn_track(xorriso, track_source, 0);
|
ret= Xorriso_burn_track(xorriso, track_source, 0);
|
||||||
aq_ret= Xorriso_reaquire_outdev(xorriso, 2*(ret>0));
|
aq_ret= Xorriso_reaquire_outdev(xorriso, 2*(ret>0));
|
||||||
@ -7458,7 +7475,7 @@ ex:;
|
|||||||
int Xorriso_genisofs(struct XorrisO *xorriso, char *whom,
|
int Xorriso_genisofs(struct XorrisO *xorriso, char *whom,
|
||||||
int argc, char **argv, int flag)
|
int argc, char **argv, int flag)
|
||||||
{
|
{
|
||||||
int ret, i, k, was_path= 0, was_other_option= 0, mem_graft_points;
|
int ret, i, k, was_path= 0, was_other_option= 0, mem_graft_points, mem;
|
||||||
int do_print_size= 0, idx_offset= 0, fd, idx;
|
int do_print_size= 0, idx_offset= 0, fd, idx;
|
||||||
char sfe[5*SfileadrL], adr[SfileadrL+8], ra_text[80], pathspec[2*SfileadrL];
|
char sfe[5*SfileadrL], adr[SfileadrL+8], ra_text[80], pathspec[2*SfileadrL];
|
||||||
char *ept, *add_pt, eff_path[SfileadrL], indev[SfileadrL+8], msc[80], *cpt;
|
char *ept, *add_pt, eff_path[SfileadrL], indev[SfileadrL+8], msc[80], *cpt;
|
||||||
@ -7506,15 +7523,6 @@ int Xorriso_genisofs(struct XorrisO *xorriso, char *whom,
|
|||||||
|
|
||||||
strcpy(ra_text, xorriso->report_about_text);
|
strcpy(ra_text, xorriso->report_about_text);
|
||||||
|
|
||||||
#ifdef NIX
|
|
||||||
/* <<< MULTI : */
|
|
||||||
if(xorriso->in_drive_handle != NULL) {
|
|
||||||
ret= Xorriso_option_dev(xorriso, "", 1); /* give up indev */
|
|
||||||
if(ret!=1)
|
|
||||||
return(ret);
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
adr[0]= indev[0]= msc[0]= 0;
|
adr[0]= indev[0]= msc[0]= 0;
|
||||||
for(i= 0; i<argc; i++) {
|
for(i= 0; i<argc; i++) {
|
||||||
if(strcmp(argv[i], "-version")==0) {
|
if(strcmp(argv[i], "-version")==0) {
|
||||||
@ -7542,10 +7550,7 @@ int Xorriso_genisofs(struct XorrisO *xorriso, char *whom,
|
|||||||
if(i+1>=argc)
|
if(i+1>=argc)
|
||||||
goto not_enough_args;
|
goto not_enough_args;
|
||||||
i++;
|
i++;
|
||||||
indev[0]= 0;
|
strcpy(indev, "stdio:");
|
||||||
ret= Xorriso_libburn_adr(xorriso, argv[i], sfe, 0);
|
|
||||||
if(ret<=0)
|
|
||||||
strcpy(indev, "stdio:");
|
|
||||||
if(Sfile_str(indev+strlen(indev), argv[i], 0)<=0)
|
if(Sfile_str(indev+strlen(indev), argv[i], 0)<=0)
|
||||||
{ret= -1; goto ex;}
|
{ret= -1; goto ex;}
|
||||||
} else if(strcmp(argv[i], "-C")==0 ||
|
} else if(strcmp(argv[i], "-C")==0 ||
|
||||||
@ -7615,7 +7620,7 @@ illegal_c:;
|
|||||||
sfe[cpt-msc]= 0;
|
sfe[cpt-msc]= 0;
|
||||||
if(strcmp(sfe, "16")==0) /* growisofs uses 16 to avoid a bug in mkisofs */
|
if(strcmp(sfe, "16")==0) /* growisofs uses 16 to avoid a bug in mkisofs */
|
||||||
strcpy(sfe, "0");
|
strcpy(sfe, "0");
|
||||||
if(xorriso->in_drive_handle!=NULL) {
|
if(xorriso->in_drive_handle!=NULL && indev[0]) {
|
||||||
/* give up indev before setting the load address */
|
/* give up indev before setting the load address */
|
||||||
ret= Xorriso_option_dev(xorriso, "", 1);
|
ret= Xorriso_option_dev(xorriso, "", 1);
|
||||||
if(ret<=0)
|
if(ret<=0)
|
||||||
@ -7717,18 +7722,24 @@ not_enough_args:;
|
|||||||
if(i+1>=argc)
|
if(i+1>=argc)
|
||||||
goto not_enough_args;
|
goto not_enough_args;
|
||||||
i++;
|
i++;
|
||||||
|
mem= xorriso->do_disk_pattern;
|
||||||
|
xorriso->do_disk_pattern= 1;
|
||||||
if(strchr(argv[i], '/')!=NULL) {
|
if(strchr(argv[i], '/')!=NULL) {
|
||||||
idx= i;
|
idx= i;
|
||||||
ret= Xorriso_option_not_paths(xorriso, i+1, argv, &idx, 0);
|
ret= Xorriso_option_not_paths(xorriso, i+1, argv, &idx, 0);
|
||||||
} else
|
} else
|
||||||
ret= Xorriso_option_not_leaf(xorriso, argv[i], 0);
|
ret= Xorriso_option_not_leaf(xorriso, argv[i], 0);
|
||||||
|
xorriso->do_disk_pattern= mem;
|
||||||
if(ret<=0)
|
if(ret<=0)
|
||||||
goto ex;
|
goto ex;
|
||||||
} else if(strcmp(argv[i], "-exclude-list")==0) {
|
} else if(strcmp(argv[i], "-exclude-list")==0) {
|
||||||
if(i+1>=argc)
|
if(i+1>=argc)
|
||||||
goto not_enough_args;
|
goto not_enough_args;
|
||||||
i++;
|
i++;
|
||||||
ret= Xorriso_option_not_leaf(xorriso, argv[i], 0);
|
mem= xorriso->do_disk_pattern;
|
||||||
|
xorriso->do_disk_pattern= 1;
|
||||||
|
ret= Xorriso_option_not_list(xorriso, argv[i], 0);
|
||||||
|
xorriso->do_disk_pattern= mem;
|
||||||
if(ret<=0)
|
if(ret<=0)
|
||||||
goto ex;
|
goto ex;
|
||||||
} else if(strcmp(argv[i], "-v")==0 || strcmp(argv[i], "-quiet")==0) {
|
} else if(strcmp(argv[i], "-v")==0 || strcmp(argv[i], "-quiet")==0) {
|
||||||
@ -10956,7 +10967,7 @@ int Xorriso_option_not_paths(struct XorrisO *xorriso, int argc, char **argv,
|
|||||||
|
|
||||||
|
|
||||||
end_idx= Xorriso_end_idx(xorriso, argc, argv, *idx,
|
end_idx= Xorriso_end_idx(xorriso, argc, argv, *idx,
|
||||||
xorriso->do_disk_pattern==1);
|
(xorriso->do_disk_pattern==1) | 2);
|
||||||
if(end_idx<=0)
|
if(end_idx<=0)
|
||||||
return(end_idx);
|
return(end_idx);
|
||||||
num_descr= end_idx - *idx;
|
num_descr= end_idx - *idx;
|
||||||
|
@ -407,6 +407,9 @@ int Xorriso_option_no_rc(struct XorrisO *xorriso, int flag);
|
|||||||
/* Option -not_leaf */
|
/* Option -not_leaf */
|
||||||
int Xorriso_option_not_leaf(struct XorrisO *xorriso, char *pattern, int flag);
|
int Xorriso_option_not_leaf(struct XorrisO *xorriso, char *pattern, int flag);
|
||||||
|
|
||||||
|
/* Option -not_list */
|
||||||
|
int Xorriso_option_not_list(struct XorrisO *xorriso, char *adr, int flag);
|
||||||
|
|
||||||
/* Option -not_paths */
|
/* Option -not_paths */
|
||||||
int Xorriso_option_not_paths(struct XorrisO *xorriso, int argc, char **argv,
|
int Xorriso_option_not_paths(struct XorrisO *xorriso, int argc, char **argv,
|
||||||
int *idx, int flag);
|
int *idx, int flag);
|
||||||
|
Loading…
Reference in New Issue
Block a user