From 3414e4eb78c4f858d50efa4a97b1aaa3addeac71 Mon Sep 17 00:00:00 2001 From: Thomas Schmitt Date: Sat, 29 Sep 2012 17:36:53 +0000 Subject: [PATCH] Corrected interpretation of flag in Xorriso_parse_line() --- xorriso/parse_exec.c | 69 ++++++++++++++++++++----------------- xorriso/xorriso_timestamp.h | 2 +- 2 files changed, 38 insertions(+), 33 deletions(-) diff --git a/xorriso/parse_exec.c b/xorriso/parse_exec.c index 7a8cfdfd..42543d84 100644 --- a/xorriso/parse_exec.c +++ b/xorriso/parse_exec.c @@ -1725,6 +1725,7 @@ next_command:; /* install temporary test code here */; /* Test setup for for Xorriso_push_outlists() et.al. */ +/* Test setup for Xorriso_parse_line */ { int stack_handle = -1, line_count= 0; struct Xorriso_lsT *result_list, *info_list; @@ -1732,6 +1733,8 @@ next_command:; struct Xorriso_lsT *result_list, struct Xorriso_lsT *info_list, int *line_count, int flag); + int pargc, pflag, max_words; + char **pargv= NULL, *pline, *prefix, *separators; (*idx)++; if(strcmp(arg1, "push") == 0) { @@ -1774,41 +1777,39 @@ next_command:; } else if(strcmp(arg1, "stop") == 0) { ret= Xorriso_stop_msg_watcher(xorriso, 0); fprintf(stderr, "xorriso -test: Xorriso_stop_msg_watcher() = %d\n", ret); + + } else if(strcmp(arg1, "parse") == 0) { + (*idx)+= 5; + pline= ""; + if(*idx - 5 < argc) + pline= argv[*idx - 5]; + prefix= ""; + if(*idx - 4 < argc) + prefix= argv[*idx - 4]; + separators= ""; + 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 { fprintf(stderr, "xorriso -test: unknwon mode: %s\n", arg1); } ret= 0; } - -/* Test setup for Xorriso_parse_line */ -if(0){ - int pargc, pflag, max_words; - char **pargv= NULL, *pline, *prefix, *separators; - - (*idx)+= 5; - pline= arg1; - prefix= arg2; - separators= ""; - 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); @@ -1907,13 +1908,17 @@ int Xorriso_parse_line(struct XorrisO *xorriso, char *line, char *prefix, char *separators, int max_words, int *argc, char ***argv, int flag) { - int ret; + int ret, bsl_mode; char *to_parse; *argc= 0; *argv= NULL; to_parse= line; + if(flag & 1) + bsl_mode= (flag >> 1) & 3; + else + bsl_mode= xorriso->bsl_interpretation & 3; if(prefix[0]) { if(strncmp(line, prefix, strlen(prefix)) == 0) { to_parse= line + strlen(prefix); @@ -1923,8 +1928,8 @@ int Xorriso_parse_line(struct XorrisO *xorriso, char *line, } ret= Sfile_sep_make_argv(xorriso->progname, to_parse, separators, - max_words, argc, argv, - (!(flag & 32)) | 4 | ((xorriso->bsl_interpretation & 3) << 5)); + 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); diff --git a/xorriso/xorriso_timestamp.h b/xorriso/xorriso_timestamp.h index 74d5a48f..2e0e3012 100644 --- a/xorriso/xorriso_timestamp.h +++ b/xorriso/xorriso_timestamp.h @@ -1 +1 @@ -#define Xorriso_timestamP "2012.09.21.120245" +#define Xorriso_timestamP "2012.09.29.173546"