Replaced some large local variables by other means in xorriso/parse_exec.c
This commit is contained in:
parent
7ed67018b7
commit
69909915df
@ -282,7 +282,6 @@ int Xorriso_cpmv_args(struct XorrisO *xorriso, char *cmd,
|
|||||||
{
|
{
|
||||||
int destc= 0, is_dir=0, end_idx, ret, i;
|
int destc= 0, is_dir=0, end_idx, ret, i;
|
||||||
char **destv= NULL;
|
char **destv= NULL;
|
||||||
char sfe[5*SfileadrL];
|
|
||||||
|
|
||||||
end_idx= Xorriso_end_idx(xorriso, argc, argv, *idx,
|
end_idx= Xorriso_end_idx(xorriso, argc, argv, *idx,
|
||||||
(xorriso->do_iso_rr_pattern==1)|(flag&2));
|
(xorriso->do_iso_rr_pattern==1)|(flag&2));
|
||||||
@ -318,8 +317,9 @@ int Xorriso_cpmv_args(struct XorrisO *xorriso, char *cmd,
|
|||||||
for(i= 0; i<*optc; i++)
|
for(i= 0; i<*optc; i++)
|
||||||
Xorriso_msgs_submit(xorriso, 0, (*optv)[i], 0, "ERRFILE", 0);
|
Xorriso_msgs_submit(xorriso, 0, (*optv)[i], 0, "ERRFILE", 0);
|
||||||
sprintf(xorriso->info_text,
|
sprintf(xorriso->info_text,
|
||||||
"%s: more than one origin given, destination is a non-directory: %s",
|
"%s: more than one origin given, destination is a non-directory: ",
|
||||||
cmd, Text_shellsafe(destv[0], sfe, 0));
|
cmd);
|
||||||
|
Text_shellsafe(destv[0], xorriso->info_text, 1);
|
||||||
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;}
|
||||||
}
|
}
|
||||||
@ -444,8 +444,8 @@ int Xorriso_normalize_command(struct XorrisO *xorriso, char *original_cmd,
|
|||||||
int Xorriso_count_args(struct XorrisO *xorriso, int argc, char **argv,
|
int Xorriso_count_args(struct XorrisO *xorriso, int argc, char **argv,
|
||||||
int *count, int flag)
|
int *count, int flag)
|
||||||
{
|
{
|
||||||
int ret, was_dashed= 0, i;
|
int ret, was_dashed= 0, i, cmd_data_size= 2 * SfileadrL;
|
||||||
char *cmd, cmd_data[2*SfileadrL];
|
char *cmd, *cmd_data= NULL;
|
||||||
static char arg0_commands[][40]= {
|
static char arg0_commands[][40]= {
|
||||||
"ban_stdio_write","close_filter_list","commit","devices","end",
|
"ban_stdio_write","close_filter_list","commit","devices","end",
|
||||||
"for_backup", "help",
|
"for_backup", "help",
|
||||||
@ -514,45 +514,47 @@ int Xorriso_count_args(struct XorrisO *xorriso, int argc, char **argv,
|
|||||||
""
|
""
|
||||||
};
|
};
|
||||||
|
|
||||||
|
Xorriso_alloc_meM(cmd_data, char, cmd_data_size);
|
||||||
|
|
||||||
*count= 0;
|
*count= 0;
|
||||||
if(argc<=0)
|
if(argc<=0)
|
||||||
return(-1);
|
{ret= -1; goto ex;}
|
||||||
ret= Xorriso_normalize_command(xorriso, argv[0], -1,
|
ret= Xorriso_normalize_command(xorriso, argv[0], -1,
|
||||||
cmd_data, sizeof(cmd_data), &cmd, 0);
|
cmd_data, cmd_data_size, &cmd, 0);
|
||||||
if(ret<0)
|
if(ret<0)
|
||||||
return(ret);
|
goto ex;
|
||||||
was_dashed= (ret>0);
|
was_dashed= (ret>0);
|
||||||
if(cmd[0]=='#' || cmd[0]==0 || strcmp(cmd, xorriso->list_delimiter) == 0) {
|
if(cmd[0]=='#' || cmd[0]==0 || strcmp(cmd, xorriso->list_delimiter) == 0) {
|
||||||
/* ignore: comment line , empty option , orphaned list delimiter */
|
/* ignore: comment line , empty option , orphaned list delimiter */
|
||||||
return(1);
|
{ret= 1; goto ex;}
|
||||||
}
|
}
|
||||||
for(i=0; arg0_commands[i][0]!=0; i++)
|
for(i=0; arg0_commands[i][0]!=0; i++)
|
||||||
if(strcmp(arg0_commands[i], cmd)==0)
|
if(strcmp(arg0_commands[i], cmd)==0)
|
||||||
return(1);
|
{ret= 1; goto ex;}
|
||||||
*count= 1;
|
*count= 1;
|
||||||
for(i=0; arg1_commands[i][0]!=0; i++)
|
for(i=0; arg1_commands[i][0]!=0; i++)
|
||||||
if(strcmp(arg1_commands[i], cmd)==0)
|
if(strcmp(arg1_commands[i], cmd)==0)
|
||||||
return(1);
|
{ret= 1; goto ex;}
|
||||||
*count= 2;
|
*count= 2;
|
||||||
for(i=0; arg2_commands[i][0]!=0; i++)
|
for(i=0; arg2_commands[i][0]!=0; i++)
|
||||||
if(strcmp(arg2_commands[i], cmd)==0)
|
if(strcmp(arg2_commands[i], cmd)==0)
|
||||||
return(1);
|
{ret= 1; goto ex;}
|
||||||
*count= 3;
|
*count= 3;
|
||||||
for(i=0; arg3_commands[i][0]!=0; i++)
|
for(i=0; arg3_commands[i][0]!=0; i++)
|
||||||
if(strcmp(arg3_commands[i], cmd)==0)
|
if(strcmp(arg3_commands[i], cmd)==0)
|
||||||
return(1);
|
{ret= 1; goto ex;}
|
||||||
*count= 4;
|
*count= 4;
|
||||||
for(i=0; arg4_commands[i][0]!=0; i++)
|
for(i=0; arg4_commands[i][0]!=0; i++)
|
||||||
if(strcmp(arg4_commands[i], cmd)==0)
|
if(strcmp(arg4_commands[i], cmd)==0)
|
||||||
return(1);
|
{ret= 1; goto ex;}
|
||||||
*count= 0;
|
*count= 0;
|
||||||
for(i=0; argn_commands[i][0]!=0; i++)
|
for(i=0; argn_commands[i][0]!=0; i++)
|
||||||
if(strcmp(argn_commands[i], cmd)==0) {
|
if(strcmp(argn_commands[i], cmd)==0) {
|
||||||
ret= Xorriso_end_idx(xorriso, argc, argv, 1, 1);
|
ret= Xorriso_end_idx(xorriso, argc, argv, 1, 1);
|
||||||
if(ret<1)
|
if(ret<1)
|
||||||
return(ret);
|
goto ex;
|
||||||
*count= ret-1;
|
*count= ret-1;
|
||||||
return(1);
|
{ret= 1; goto ex;}
|
||||||
}
|
}
|
||||||
|
|
||||||
if(!(flag&1)) {
|
if(!(flag&1)) {
|
||||||
@ -560,7 +562,10 @@ int Xorriso_count_args(struct XorrisO *xorriso, int argc, char **argv,
|
|||||||
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "WARNING", 0);
|
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "WARNING", 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
return(2+!was_dashed);
|
ret= 2 + !was_dashed;
|
||||||
|
ex:
|
||||||
|
Xorriso_free_meM(cmd_data);
|
||||||
|
return(ret);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -575,11 +580,13 @@ return:
|
|||||||
<=0 error , 1 = success , 2 = problem event ignored , 3 = end program run
|
<=0 error , 1 = success , 2 = problem event ignored , 3 = end program run
|
||||||
*/
|
*/
|
||||||
{
|
{
|
||||||
int ret, was_dashed, end_ret, num1, num2;
|
int ret, was_dashed, end_ret, num1, num2, cmd_data_size= 2 * SfileadrL;
|
||||||
char *cmd, *original_cmd, cmd_data[2*SfileadrL], *arg1, *arg2;
|
char *cmd, *original_cmd, *cmd_data= NULL, *arg1, *arg2;
|
||||||
|
|
||||||
|
Xorriso_alloc_meM(cmd_data, char, cmd_data_size);
|
||||||
|
|
||||||
if(xorriso==NULL)
|
if(xorriso==NULL)
|
||||||
return(0);
|
{ret= 0; goto ex;}
|
||||||
if(xorriso->is_dialog) {
|
if(xorriso->is_dialog) {
|
||||||
xorriso->result_line_counter= xorriso->result_page_counter= 0;
|
xorriso->result_line_counter= xorriso->result_page_counter= 0;
|
||||||
if(xorriso->result_page_length<0)
|
if(xorriso->result_page_length<0)
|
||||||
@ -616,7 +623,7 @@ next_command:;
|
|||||||
was_dashed= 0;
|
was_dashed= 0;
|
||||||
|
|
||||||
ret= Xorriso_normalize_command(xorriso, original_cmd, -1,
|
ret= Xorriso_normalize_command(xorriso, original_cmd, -1,
|
||||||
cmd_data, sizeof(cmd_data), &cmd, 0);
|
cmd_data, cmd_data_size, &cmd, 0);
|
||||||
if(ret<0)
|
if(ret<0)
|
||||||
goto eval_any_problems;
|
goto eval_any_problems;
|
||||||
was_dashed= ret;
|
was_dashed= ret;
|
||||||
@ -866,7 +873,7 @@ next_command:;
|
|||||||
end_ret= Xorriso_option_end(xorriso, 0);
|
end_ret= Xorriso_option_end(xorriso, 0);
|
||||||
ret= Xorriso_eval_problem_status(xorriso, ret, 0);
|
ret= Xorriso_eval_problem_status(xorriso, ret, 0);
|
||||||
if(ret<0)
|
if(ret<0)
|
||||||
return(ret);
|
goto ex;
|
||||||
if(end_ret!=2)
|
if(end_ret!=2)
|
||||||
{ret= 3; goto ex;}
|
{ret= 3; goto ex;}
|
||||||
|
|
||||||
@ -1231,7 +1238,7 @@ next_command:;
|
|||||||
end_ret= Xorriso_option_end(xorriso, 1);
|
end_ret= Xorriso_option_end(xorriso, 1);
|
||||||
ret= Xorriso_eval_problem_status(xorriso, ret, 0);
|
ret= Xorriso_eval_problem_status(xorriso, ret, 0);
|
||||||
if(ret<0)
|
if(ret<0)
|
||||||
return(ret);
|
goto ex;
|
||||||
if(end_ret!=2)
|
if(end_ret!=2)
|
||||||
{ret= 3; goto ex;}
|
{ret= 3; goto ex;}
|
||||||
|
|
||||||
@ -1413,13 +1420,14 @@ add_plain_argument:;
|
|||||||
eval_any_problems:
|
eval_any_problems:
|
||||||
ret= Xorriso_eval_problem_status(xorriso, ret, 0);
|
ret= Xorriso_eval_problem_status(xorriso, ret, 0);
|
||||||
if(ret<0)
|
if(ret<0)
|
||||||
return(ret);
|
goto ex;
|
||||||
|
|
||||||
if(*idx<argc)
|
if(*idx<argc)
|
||||||
goto next_command;
|
goto next_command;
|
||||||
|
|
||||||
ex:;
|
ex:;
|
||||||
fflush(stdout);
|
fflush(stdout);
|
||||||
|
Xorriso_free_meM(cmd_data);
|
||||||
return(ret);
|
return(ret);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1492,11 +1500,13 @@ ex:;
|
|||||||
|
|
||||||
int Xorriso_dialog(struct XorrisO *xorriso, int flag)
|
int Xorriso_dialog(struct XorrisO *xorriso, int flag)
|
||||||
{
|
{
|
||||||
int ret,first_round;
|
int ret,first_round, line_size= 2 * SfileadrL;
|
||||||
char line[2*SfileadrL];
|
char *line= NULL;
|
||||||
|
|
||||||
|
Xorriso_alloc_meM(line, char, line_size);
|
||||||
|
|
||||||
if(!xorriso->dialog)
|
if(!xorriso->dialog)
|
||||||
return(1);
|
{ret= 1; goto ex;}
|
||||||
if(xorriso->abort_on_is_default)
|
if(xorriso->abort_on_is_default)
|
||||||
Xorriso_option_abort_on(xorriso, "NEVER", 0);
|
Xorriso_option_abort_on(xorriso, "NEVER", 0);
|
||||||
xorriso->is_dialog= 1;
|
xorriso->is_dialog= 1;
|
||||||
@ -1514,7 +1524,7 @@ int Xorriso_dialog(struct XorrisO *xorriso, int flag)
|
|||||||
sprintf(xorriso->info_text,"enter option and arguments :\n");
|
sprintf(xorriso->info_text,"enter option and arguments :\n");
|
||||||
Xorriso_info(xorriso,0);
|
Xorriso_info(xorriso,0);
|
||||||
Xorriso_mark(xorriso,0);
|
Xorriso_mark(xorriso,0);
|
||||||
ret= Xorriso_dialog_input(xorriso,line,sizeof(line),4);
|
ret= Xorriso_dialog_input(xorriso,line, line_size, 4);
|
||||||
if(ret<=0)
|
if(ret<=0)
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@ -1533,6 +1543,7 @@ int Xorriso_dialog(struct XorrisO *xorriso, int flag)
|
|||||||
ret= 1;
|
ret= 1;
|
||||||
ex:;
|
ex:;
|
||||||
xorriso->is_dialog= 0;
|
xorriso->is_dialog= 0;
|
||||||
|
Xorriso_free_meM(line);
|
||||||
return(ret);
|
return(ret);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1551,17 +1562,19 @@ int Xorriso_prescan_args(struct XorrisO *xorriso, int argc, char **argv,
|
|||||||
{
|
{
|
||||||
int i, ret, was_dashed, num2, arg_count;
|
int i, ret, was_dashed, num2, arg_count;
|
||||||
int was_report_about= 0, was_abort_on= 0, was_return_with= 0;
|
int was_report_about= 0, was_abort_on= 0, was_return_with= 0;
|
||||||
int was_signal_handling= 0, was_scsi_log= 0;
|
int was_signal_handling= 0, was_scsi_log= 0, cmd_data_size= 5 * SfileadrL;
|
||||||
char *cmd, *original_cmd, cmd_data[5*SfileadrL], *arg1, *arg2;
|
char *cmd, *original_cmd, *cmd_data= NULL, *arg1, *arg2;
|
||||||
char mem_list_delimiter[81];
|
char mem_list_delimiter[81];
|
||||||
|
|
||||||
|
Xorriso_alloc_meM(cmd_data, char, cmd_data_size);
|
||||||
|
|
||||||
strcpy(mem_list_delimiter, xorriso->list_delimiter);
|
strcpy(mem_list_delimiter, xorriso->list_delimiter);
|
||||||
for(i=1+(flag&1);i<argc;i++) {
|
for(i=1+(flag&1);i<argc;i++) {
|
||||||
original_cmd= cmd= argv[i];
|
original_cmd= cmd= argv[i];
|
||||||
was_dashed= 0;
|
was_dashed= 0;
|
||||||
|
|
||||||
was_dashed= Xorriso_normalize_command(xorriso, original_cmd, i,
|
was_dashed= Xorriso_normalize_command(xorriso, original_cmd, i,
|
||||||
cmd_data, sizeof(cmd_data), &cmd, 0);
|
cmd_data, cmd_data_size, &cmd, 0);
|
||||||
if(was_dashed<0)
|
if(was_dashed<0)
|
||||||
{ret= -1; goto ex;}
|
{ret= -1; goto ex;}
|
||||||
|
|
||||||
@ -1669,6 +1682,7 @@ protect_stdout:;
|
|||||||
ret= 1;
|
ret= 1;
|
||||||
ex:;
|
ex:;
|
||||||
strcpy(xorriso->list_delimiter, mem_list_delimiter);
|
strcpy(xorriso->list_delimiter, mem_list_delimiter);
|
||||||
|
Xorriso_free_meM(cmd_data);
|
||||||
return(ret);
|
return(ret);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1677,7 +1691,9 @@ int Xorriso_read_as_mkisofsrc(struct XorrisO *xorriso, char *path, int flag)
|
|||||||
{
|
{
|
||||||
int ret, linecount= 0;
|
int ret, linecount= 0;
|
||||||
FILE *fp= NULL;
|
FILE *fp= NULL;
|
||||||
char *sret, line[SfileadrL], *cpt, *wpt;
|
char *sret, *line= NULL, *cpt, *wpt;
|
||||||
|
|
||||||
|
Xorriso_alloc_meM(line, char, SfileadrL);
|
||||||
|
|
||||||
ret= Xorriso_afile_fopen(xorriso, path, "rb", &fp, 1 | 2);
|
ret= Xorriso_afile_fopen(xorriso, path, "rb", &fp, 1 | 2);
|
||||||
if(ret <= 0)
|
if(ret <= 0)
|
||||||
@ -1757,6 +1773,7 @@ int Xorriso_read_as_mkisofsrc(struct XorrisO *xorriso, char *path, int flag)
|
|||||||
ex:
|
ex:
|
||||||
if(fp != NULL)
|
if(fp != NULL)
|
||||||
fclose(fp);
|
fclose(fp);
|
||||||
|
Xorriso_free_meM(line);
|
||||||
return(ret);
|
return(ret);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1766,19 +1783,21 @@ ex:
|
|||||||
*/
|
*/
|
||||||
int Xorriso_read_mkisofsrc(struct XorrisO *xorriso, int flag)
|
int Xorriso_read_mkisofsrc(struct XorrisO *xorriso, int flag)
|
||||||
{
|
{
|
||||||
char path[SfileadrL], *cpt;
|
char *path= NULL, *cpt;
|
||||||
int ret;
|
int ret;
|
||||||
|
|
||||||
|
Xorriso_alloc_meM(path, char, SfileadrL);
|
||||||
|
|
||||||
ret= Xorriso_read_as_mkisofsrc(xorriso, "./.mkisofsrc", 0);
|
ret= Xorriso_read_as_mkisofsrc(xorriso, "./.mkisofsrc", 0);
|
||||||
if(ret > 0)
|
if(ret > 0)
|
||||||
return(ret);
|
goto ex;
|
||||||
cpt= getenv("MKISOFSRC");
|
cpt= getenv("MKISOFSRC");
|
||||||
if(cpt != NULL) {
|
if(cpt != NULL) {
|
||||||
strncpy(path, cpt, SfileadrL - 1);
|
strncpy(path, cpt, SfileadrL - 1);
|
||||||
path[SfileadrL - 1]= 0;
|
path[SfileadrL - 1]= 0;
|
||||||
ret= Xorriso_read_as_mkisofsrc(xorriso, path, 0);
|
ret= Xorriso_read_as_mkisofsrc(xorriso, path, 0);
|
||||||
if(ret > 0)
|
if(ret > 0)
|
||||||
return(ret);
|
goto ex;
|
||||||
}
|
}
|
||||||
cpt= getenv("HOME");
|
cpt= getenv("HOME");
|
||||||
if(cpt != NULL) {
|
if(cpt != NULL) {
|
||||||
@ -1787,7 +1806,7 @@ int Xorriso_read_mkisofsrc(struct XorrisO *xorriso, int flag)
|
|||||||
strcat(path, "/.mkisofsrc");
|
strcat(path, "/.mkisofsrc");
|
||||||
ret= Xorriso_read_as_mkisofsrc(xorriso, path, 0);
|
ret= Xorriso_read_as_mkisofsrc(xorriso, path, 0);
|
||||||
if(ret > 0)
|
if(ret > 0)
|
||||||
return(ret);
|
goto ex;
|
||||||
}
|
}
|
||||||
strcpy(path, xorriso->progname);
|
strcpy(path, xorriso->progname);
|
||||||
cpt= strrchr(path, '/');
|
cpt= strrchr(path, '/');
|
||||||
@ -1795,10 +1814,13 @@ int Xorriso_read_mkisofsrc(struct XorrisO *xorriso, int flag)
|
|||||||
strcpy(cpt + 1, ".mkisofsrc");
|
strcpy(cpt + 1, ".mkisofsrc");
|
||||||
ret= Xorriso_read_as_mkisofsrc(xorriso, path, 0);
|
ret= Xorriso_read_as_mkisofsrc(xorriso, path, 0);
|
||||||
if(ret > 0)
|
if(ret > 0)
|
||||||
return(ret);
|
goto ex;
|
||||||
}
|
}
|
||||||
/* no .mkisofsrc file found */
|
/* no .mkisofsrc file found */
|
||||||
return(2);
|
ret= 2;
|
||||||
|
ex:;
|
||||||
|
Xorriso_free_meM(path);
|
||||||
|
return(ret);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -1872,9 +1894,11 @@ int Xorriso_program_arg_bsl(struct XorrisO *xorriso, int argc, char ***argv,
|
|||||||
int Xorriso_make_abs_adr(struct XorrisO *xorriso, char *wd, char *name,
|
int Xorriso_make_abs_adr(struct XorrisO *xorriso, char *wd, char *name,
|
||||||
char adr[], int flag)
|
char adr[], int flag)
|
||||||
{
|
{
|
||||||
char norm_adr[SfileadrL];
|
char *norm_adr= NULL;
|
||||||
int ret;
|
int ret;
|
||||||
|
|
||||||
|
Xorriso_alloc_meM(norm_adr, char, SfileadrL);
|
||||||
|
|
||||||
if((wd[0]!=0 || (flag&4)) && !((flag&1) && name[0]=='/')) {
|
if((wd[0]!=0 || (flag&4)) && !((flag&1) && name[0]=='/')) {
|
||||||
if(strlen(wd)+1>=SfileadrL)
|
if(strlen(wd)+1>=SfileadrL)
|
||||||
goto much_too_long;
|
goto much_too_long;
|
||||||
@ -1883,7 +1907,7 @@ int Xorriso_make_abs_adr(struct XorrisO *xorriso, char *wd, char *name,
|
|||||||
if(Sfile_add_to_path(adr, name, 0)<=0) {
|
if(Sfile_add_to_path(adr, name, 0)<=0) {
|
||||||
much_too_long:;
|
much_too_long:;
|
||||||
Xorriso_much_too_long(xorriso, (int) (strlen(adr)+strlen(name)+1), 2);
|
Xorriso_much_too_long(xorriso, (int) (strlen(adr)+strlen(name)+1), 2);
|
||||||
return(0);
|
{ret= 0; goto ex;}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if(strlen(name)+1>=SfileadrL)
|
if(strlen(name)+1>=SfileadrL)
|
||||||
@ -1894,12 +1918,15 @@ much_too_long:;
|
|||||||
ret= Xorriso_normalize_img_path(xorriso, "", adr, norm_adr,
|
ret= Xorriso_normalize_img_path(xorriso, "", adr, norm_adr,
|
||||||
1|2|((flag&8)>>1));
|
1|2|((flag&8)>>1));
|
||||||
if(ret<=0)
|
if(ret<=0)
|
||||||
return(ret);
|
goto ex;
|
||||||
if(norm_adr[0]==0)
|
if(norm_adr[0]==0)
|
||||||
strcpy(norm_adr, "/");
|
strcpy(norm_adr, "/");
|
||||||
strcpy(adr, norm_adr);
|
strcpy(adr, norm_adr);
|
||||||
}
|
}
|
||||||
return(1);
|
ret= 1;
|
||||||
|
ex:;
|
||||||
|
Xorriso_free_meM(norm_adr);
|
||||||
|
return(ret);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -1971,11 +1998,12 @@ int Xorriso_execv(struct XorrisO *xorriso, char *cmd, char *env_path,
|
|||||||
int *status, int flag)
|
int *status, int flag)
|
||||||
{
|
{
|
||||||
int ret, argc= 0;
|
int ret, argc= 0;
|
||||||
char **argv= NULL, *pathlist= NULL, *cpt, *npt, prog[SfileadrL];
|
char **argv= NULL, *pathlist= NULL, *cpt, *npt, *prog= NULL;
|
||||||
char sfe[5*SfileadrL];
|
|
||||||
pid_t child_pid;
|
pid_t child_pid;
|
||||||
struct stat stbuf;
|
struct stat stbuf;
|
||||||
|
|
||||||
|
Xorriso_alloc_meM(prog, char, 5 * SfileadrL);
|
||||||
|
|
||||||
wait3(NULL,WNOHANG,NULL); /* just to remove any old dead child */
|
wait3(NULL,WNOHANG,NULL); /* just to remove any old dead child */
|
||||||
|
|
||||||
ret= Sfile_make_argv("", cmd, &argc, &argv, 1|4|128);
|
ret= Sfile_make_argv("", cmd, &argc, &argv, 1|4|128);
|
||||||
@ -2005,8 +2033,8 @@ int Xorriso_execv(struct XorrisO *xorriso, char *cmd, char *env_path,
|
|||||||
prog[0]= 0;
|
prog[0]= 0;
|
||||||
}
|
}
|
||||||
if(prog[0] == 0) {
|
if(prog[0] == 0) {
|
||||||
sprintf(xorriso->info_text, "Cannot find external program %s",
|
sprintf(xorriso->info_text, "Cannot find external program ");
|
||||||
Text_shellsafe(argv[0], sfe, 0));
|
Text_shellsafe(argv[0], xorriso->info_text, 1);
|
||||||
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;
|
||||||
}
|
}
|
||||||
@ -2019,10 +2047,12 @@ int Xorriso_execv(struct XorrisO *xorriso, char *cmd, char *env_path,
|
|||||||
if(child_pid==0) {
|
if(child_pid==0) {
|
||||||
/* this is the child process */
|
/* this is the child process */
|
||||||
|
|
||||||
sprintf(xorriso->info_text, "Executing external program %s",
|
sprintf(xorriso->info_text, "Executing external program ");
|
||||||
Text_shellsafe(prog, sfe, 0));
|
Text_shellsafe(prog, xorriso->info_text, 1);
|
||||||
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "DEBUG", 0);
|
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "DEBUG", 0);
|
||||||
|
|
||||||
|
Xorriso_destroy(&xorriso, 0); /* reduce memory foot print */
|
||||||
|
|
||||||
execv(prog, argv); /* should never come back */
|
execv(prog, argv); /* should never come back */
|
||||||
fprintf(stderr,"--- execution of shell command failed:\n");
|
fprintf(stderr,"--- execution of shell command failed:\n");
|
||||||
fprintf(stderr," %s\n",cmd);
|
fprintf(stderr," %s\n",cmd);
|
||||||
@ -2062,6 +2092,7 @@ int Xorriso_execv(struct XorrisO *xorriso, char *cmd, char *env_path,
|
|||||||
ex:
|
ex:
|
||||||
Sfile_make_argv("", "", &argc, &argv, 2);
|
Sfile_make_argv("", "", &argc, &argv, 2);
|
||||||
Sregex_string(&pathlist, NULL, 0);
|
Sregex_string(&pathlist, NULL, 0);
|
||||||
|
Xorriso_free_meM(prog);
|
||||||
return(ret);
|
return(ret);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2071,7 +2102,6 @@ ex:
|
|||||||
int Xorriso_path_is_excluded(struct XorrisO *xorriso, char *path, int flag)
|
int Xorriso_path_is_excluded(struct XorrisO *xorriso, char *path, int flag)
|
||||||
{
|
{
|
||||||
int ret;
|
int ret;
|
||||||
char sfe[5*SfileadrL];
|
|
||||||
|
|
||||||
if(!(xorriso->disk_excl_mode&1)) /* exclusion is off */
|
if(!(xorriso->disk_excl_mode&1)) /* exclusion is off */
|
||||||
return(0);
|
return(0);
|
||||||
@ -2085,8 +2115,9 @@ int Xorriso_path_is_excluded(struct XorrisO *xorriso, char *path, int flag)
|
|||||||
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "FATAL", 0);
|
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "FATAL", 0);
|
||||||
}
|
}
|
||||||
if(ret>0 && (flag&1)) {
|
if(ret>0 && (flag&1)) {
|
||||||
sprintf(xorriso->info_text, "Disk path parameter excluded by %s : %s",
|
sprintf(xorriso->info_text, "Disk path parameter excluded by %s : ",
|
||||||
(ret==1 ? "-not_paths" : "-not_leaf"), Text_shellsafe(path, sfe, 0));
|
(ret==1 ? "-not_paths" : "-not_leaf"));
|
||||||
|
Text_shellsafe(path, xorriso->info_text, 1);
|
||||||
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "NOTE", 0);
|
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "NOTE", 0);
|
||||||
}
|
}
|
||||||
return(ret);
|
return(ret);
|
||||||
|
@ -1 +1 @@
|
|||||||
#define Xorriso_timestamP "2011.05.06.132058"
|
#define Xorriso_timestamP "2011.05.06.151905"
|
||||||
|
Loading…
Reference in New Issue
Block a user