Enabled use of Xorriso_parse_line() with xorriso==NULL
This commit is contained in:
@ -1778,7 +1778,7 @@ next_command:;
|
||||
ret= Xorriso_stop_msg_watcher(xorriso, 0);
|
||||
fprintf(stderr, "xorriso -test: Xorriso_stop_msg_watcher() = %d\n", ret);
|
||||
|
||||
} else if(strcmp(arg1, "parse") == 0) {
|
||||
} else if(strcmp(arg1, "parse") == 0 || strcmp(arg1, "nullparse") == 0) {
|
||||
(*idx)+= 5;
|
||||
pline= "";
|
||||
if(*idx - 5 < argc)
|
||||
@ -1795,7 +1795,8 @@ next_command:;
|
||||
pflag= 0;
|
||||
if(*idx - 1 < argc)
|
||||
sscanf(argv[*idx - 1], "%d", &pflag);
|
||||
ret= Xorriso_parse_line(xorriso, pline, prefix, separators, max_words,
|
||||
ret= Xorriso_parse_line(strcmp(arg1, "nullparse") == 0 ? NULL : xorriso,
|
||||
pline, prefix, separators, max_words,
|
||||
&pargc, &pargv, pflag);
|
||||
fprintf(stderr,
|
||||
"xorriso_test: Xorriso_parse_line: ret= %d , argc= %d , argv= 0x%lX\n",
|
||||
@ -1909,13 +1910,17 @@ int Xorriso_parse_line(struct XorrisO *xorriso, char *line,
|
||||
int *argc, char ***argv, int flag)
|
||||
{
|
||||
int ret, bsl_mode;
|
||||
char *to_parse;
|
||||
char *to_parse, *progname= "";
|
||||
|
||||
if(xorriso == NULL && (flag & (32 | 64))) {
|
||||
ret= -2; goto ex;
|
||||
}
|
||||
|
||||
*argc= 0;
|
||||
*argv= NULL;
|
||||
|
||||
to_parse= line;
|
||||
if(flag & 1)
|
||||
if((flag & 1) || xorriso == NULL)
|
||||
bsl_mode= (flag >> 1) & 3;
|
||||
else
|
||||
bsl_mode= xorriso->bsl_interpretation & 3;
|
||||
@ -1927,18 +1932,23 @@ int Xorriso_parse_line(struct XorrisO *xorriso, char *line,
|
||||
}
|
||||
}
|
||||
|
||||
ret= Sfile_sep_make_argv(xorriso->progname, to_parse, separators,
|
||||
if(xorriso != NULL)
|
||||
progname= xorriso->progname;
|
||||
ret= Sfile_sep_make_argv(progname, to_parse, separators,
|
||||
max_words, argc, argv,
|
||||
(!(flag & 32)) | 4 | (bsl_mode << 5));
|
||||
if(ret < 0) {
|
||||
Xorriso_msgs_submit(xorriso, 0,
|
||||
"Severe lack of resources during command line parsing", 0, "FATAL", 0);
|
||||
goto ex;
|
||||
if(xorriso != NULL)
|
||||
Xorriso_msgs_submit(xorriso, 0,
|
||||
"Severe lack of resources during command line parsing", 0, "FATAL", 0);
|
||||
ret= -1; 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);
|
||||
if((flag & 64) && xorriso != NULL) {
|
||||
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;
|
||||
|
Reference in New Issue
Block a user