|
|
|
@ -1682,6 +1682,32 @@ next_command:;
|
|
|
|
|
} else if(strcmp(cmd,"test")==0) { /* This option does not exist. */
|
|
|
|
|
/* install temporary test code here */;
|
|
|
|
|
|
|
|
|
|
{
|
|
|
|
|
int pargc, pflag, max_words;
|
|
|
|
|
char **pargv= NULL, *pline, *prefix, *separators;
|
|
|
|
|
|
|
|
|
|
(*idx)+= 5;
|
|
|
|
|
pline= arg1;
|
|
|
|
|
prefix= arg2;
|
|
|
|
|
if(*idx - 3 < argc)
|
|
|
|
|
separators= argv[*idx - 3];
|
|
|
|
|
max_words= 0;
|
|
|
|
|
if(*idx - 2 < argc)
|
|
|
|
|
sscanf(argv[*idx - 2], "%d", &max_words);
|
|
|
|
|
pflag= 0;
|
|
|
|
|
if(*idx - 1 < argc)
|
|
|
|
|
sscanf(argv[*idx - 1], "%d", &pflag);
|
|
|
|
|
ret= Xorriso_parse_line(xorriso, pline, prefix, separators, max_words,
|
|
|
|
|
&pargc, &pargv, pflag);
|
|
|
|
|
fprintf(stderr,
|
|
|
|
|
"xorriso_test: Xorriso_parse_line: ret= %d , argc= %d , argv= 0x%lX\n",
|
|
|
|
|
ret, pargc, (unsigned long) pargv);
|
|
|
|
|
if(ret == 1)
|
|
|
|
|
for(i= 0; i < pargc; i++)
|
|
|
|
|
fprintf(stderr, "xorriso_test: argv[%d]= '%s'\n", i, pargv[i]);
|
|
|
|
|
Xorriso__dispose_words(&pargc, &pargv);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
} else if(strcmp(cmd,"toc")==0) {
|
|
|
|
|
Xorriso_option_toc(xorriso, 0);
|
|
|
|
|
|
|
|
|
@ -1776,6 +1802,53 @@ ex:;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
int Xorriso_parse_line(struct XorrisO *xorriso, char *line,
|
|
|
|
|
char *prefix, char *separators, int max_words,
|
|
|
|
|
int *argc, char ***argv, int flag)
|
|
|
|
|
{
|
|
|
|
|
int ret;
|
|
|
|
|
char *to_parse;
|
|
|
|
|
|
|
|
|
|
*argc= 0;
|
|
|
|
|
*argv= NULL;
|
|
|
|
|
|
|
|
|
|
to_parse= line;
|
|
|
|
|
if(prefix[0]) {
|
|
|
|
|
if(strncmp(line, prefix, strlen(prefix)) == 0) {
|
|
|
|
|
to_parse= line + strlen(prefix);
|
|
|
|
|
} else {
|
|
|
|
|
ret= 2; goto ex;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
ret= Sfile_sep_make_argv(xorriso->progname, to_parse, separators,
|
|
|
|
|
max_words, argc, argv,
|
|
|
|
|
(!(flag & 32)) | 4 | ((xorriso->bsl_interpretation & 3) << 5));
|
|
|
|
|
if(ret < 0) {
|
|
|
|
|
Xorriso_msgs_submit(xorriso, 0,
|
|
|
|
|
"Severe lack of resources during command line parsing", 0, "FATAL", 0);
|
|
|
|
|
goto ex;
|
|
|
|
|
}
|
|
|
|
|
if(ret == 0) {
|
|
|
|
|
sprintf(xorriso->info_text, "Incomplete quotation in %s line: %s",
|
|
|
|
|
(flag & 32) ? "command" : "parsed", to_parse);
|
|
|
|
|
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "FAILURE", 0);
|
|
|
|
|
goto ex;
|
|
|
|
|
}
|
|
|
|
|
ret= 1;
|
|
|
|
|
ex:;
|
|
|
|
|
if(ret <= 0)
|
|
|
|
|
Sfile_sep_make_argv("", "", "", 0, argc, argv, 2); /* release memory */
|
|
|
|
|
return(ret);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
void Xorriso__dispose_words(int *argc, char ***argv)
|
|
|
|
|
{
|
|
|
|
|
Sfile_make_argv("", "", argc, argv, 2); /* release memory */
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
int Xorriso_execute_option(struct XorrisO *xorriso, char *line, int flag)
|
|
|
|
|
/*
|
|
|
|
|
bit0-bit15 are forwarded to Xorriso_interpreter
|
|
|
|
@ -1795,20 +1868,10 @@ int Xorriso_execute_option(struct XorrisO *xorriso, char *line, int flag)
|
|
|
|
|
xorriso->idle_time= 0.0;
|
|
|
|
|
tdiff= tv.tv_sec+(1.e-6*(double) tv.tv_usec);
|
|
|
|
|
|
|
|
|
|
/* parse line into args */
|
|
|
|
|
ret= Sfile_make_argv(xorriso->progname, line, &argc, &argv,
|
|
|
|
|
4 | ((xorriso->bsl_interpretation & 3) << 5));
|
|
|
|
|
if(ret < 0) {
|
|
|
|
|
Xorriso_msgs_submit(xorriso, 0,
|
|
|
|
|
"Severe lack of resources during command line parsing", 0, "FATAL", 0);
|
|
|
|
|
goto ex;
|
|
|
|
|
}
|
|
|
|
|
if(ret == 0) {
|
|
|
|
|
sprintf(xorriso->info_text, "Incomplete quotation in command line: %s",
|
|
|
|
|
line);
|
|
|
|
|
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "FAILURE", 0);
|
|
|
|
|
ret= Xorriso_parse_line(xorriso, line, "", "", 0, &argc, &argv, 32 | 64);
|
|
|
|
|
if(ret <= 0)
|
|
|
|
|
goto ex;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if(argc<2)
|
|
|
|
|
{ret= 1; goto ex;}
|
|
|
|
|
if(argv[1][0]=='#')
|
|
|
|
@ -1931,7 +1994,7 @@ int Xorriso_prescan_args(struct XorrisO *xorriso, int argc, char **argv,
|
|
|
|
|
arg1= argv[i+1];
|
|
|
|
|
arg2= "";
|
|
|
|
|
if(i+2<argc)
|
|
|
|
|
arg2= argv[2+1];
|
|
|
|
|
arg2= argv[i+2];
|
|
|
|
|
if(i>1)
|
|
|
|
|
xorriso->did_something_useful= 1;
|
|
|
|
|
if(i==1 && argc==2) {
|
|
|
|
|