xpath parser scan strings instead of characters

This commit is contained in:
Olof hagsand 2019-04-02 11:01:01 +02:00
parent a68174897d
commit ed62c33a79
5 changed files with 10 additions and 12 deletions

View file

@ -146,11 +146,11 @@ real ({digit}+[.]{digit}*)|({digit}*[.]{digit}+)
<TOKEN>. { fprintf(stderr,"LEXICAL ERROR\n"); return -1; } <TOKEN>. { fprintf(stderr,"LEXICAL ERROR\n"); return -1; }
<QLITERAL>\" { BEGIN(TOKEN); return QUOTE; } <QLITERAL>\" { BEGIN(TOKEN); return QUOTE; }
<QLITERAL>. { clixon_xpath_parselval.string = strdup(yytext); <QLITERAL>[^"]+ { clixon_xpath_parselval.string = strdup(yytext);
return CHAR;} return CHARS;}
<ALITERAL>\' { BEGIN(TOKEN); return APOST; } <ALITERAL>\' { BEGIN(TOKEN); return APOST; }
<ALITERAL>. { clixon_xpath_parselval.string = strdup(yytext); <ALITERAL>[^']+ { clixon_xpath_parselval.string = strdup(yytext);
return CHAR;} return CHARS;}
%% %%

View file

@ -59,7 +59,7 @@
%token <string> X_EOF %token <string> X_EOF
%token <string> QUOTE %token <string> QUOTE
%token <string> APOST %token <string> APOST
%token <string> CHAR %token <string> CHARS
%token <string> NAME %token <string> NAME
%token <string> NODETYPE %token <string> NODETYPE
%token <string> DOUBLEDOT %token <string> DOUBLEDOT
@ -276,14 +276,14 @@ args : args ',' expr { $$=xp_new(XP_EXP,A_NAN,0.0,NULL,NULL,$1, $3);
clicon_debug(2,"args -> expr "); } clicon_debug(2,"args -> expr "); }
; ;
string : string CHAR { string : string CHARS {
int len = strlen($1); int len = strlen($1);
$$ = realloc($1, len+strlen($2) + 1); $$ = realloc($1, len+strlen($2) + 1);
sprintf($$+len, "%s", $2); sprintf($$+len, "%s", $2);
free($2); free($2);
clicon_debug(2,"string-> string CHAR"); clicon_debug(2,"string-> string CHAR");
} }
| CHAR { clicon_debug(2,"string-> "); } | CHARS { clicon_debug(2,"string-> "); }
; ;

View file

@ -41,7 +41,7 @@ module scaling{
EOF EOF
cat <<EOF > $cfg cat <<EOF > $cfg
<config> <clixon-config xmlns="http://clicon.org/config">
<CLICON_CONFIGFILE>$cfg</CLICON_CONFIGFILE> <CLICON_CONFIGFILE>$cfg</CLICON_CONFIGFILE>
<CLICON_YANG_DIR>$dir</CLICON_YANG_DIR> <CLICON_YANG_DIR>$dir</CLICON_YANG_DIR>
<CLICON_YANG_DIR>/usr/local/share/clixon</CLICON_YANG_DIR> <CLICON_YANG_DIR>/usr/local/share/clixon</CLICON_YANG_DIR>
@ -53,7 +53,7 @@ cat <<EOF > $cfg
<CLICON_XMLDB_DIR>/usr/local/var/$APPNAME</CLICON_XMLDB_DIR> <CLICON_XMLDB_DIR>/usr/local/var/$APPNAME</CLICON_XMLDB_DIR>
<CLICON_XMLDB_PLUGIN>/usr/local/lib/xmldb/text.so</CLICON_XMLDB_PLUGIN> <CLICON_XMLDB_PLUGIN>/usr/local/lib/xmldb/text.so</CLICON_XMLDB_PLUGIN>
<CLICON_XMLDB_PRETTY>false</CLICON_XMLDB_PRETTY> <CLICON_XMLDB_PRETTY>false</CLICON_XMLDB_PRETTY>
</config> </clixon-config>
EOF EOF
new "test params: -f $cfg -y $fyang" new "test params: -f $cfg -y $fyang"

View file

@ -1,7 +1,6 @@
#!/bin/bash #!/bin/bash
# Run valgrind leak test for cli, restconf, netconf or background. # Run valgrind leak test for cli, restconf, netconf or background.
# Stop on first error # Stop on first error
# Run valgrindtest once, args: # Run valgrindtest once, args:
# what: cli|netconf|restconf|backend # what: cli|netconf|restconf|backend
@ -24,7 +23,7 @@ memonce(){
;; ;;
'backend') 'backend')
valgrindtest=2 # This means backend valgrind test valgrindtest=2 # This means backend valgrind test
: ${RCWAIT:=5} # valgrind backend needs some time to get up : ${RCWAIT:=10} # valgrind backend needs some time to get up
perfnr=100 # test_perf.sh restconf put more or less stops perfnr=100 # test_perf.sh restconf put more or less stops
perfreq=10 perfreq=10

View file

@ -89,7 +89,6 @@ expectfn "$clixon_cli -D $DBG -1f $cfg -o CLICON_YANG_MAIN_DIR=$YANGMODELS/stand
files=$(find $YANGMODELS/vendor/juniper/18.2/18.2R1/junos/conf -name "*.yang") files=$(find $YANGMODELS/vendor/juniper/18.2/18.2R1/junos/conf -name "*.yang")
let i=0; let i=0;
for f in $files; do for f in $files; do
echo "f:$f"
if [ -n "$(head -5 $f|grep '^ module')" ]; then if [ -n "$(head -5 $f|grep '^ module')" ]; then
new "$clixon_cli -1f $cfg -o CLICON_YANG_MAIN_FILE=$f -p $YANGMODELS/vendor/juniper/18.2/18.2R1/common -p $YANGMODELS/vendor/juniper/18.2/18.2R1/junos/conf show version" new "$clixon_cli -1f $cfg -o CLICON_YANG_MAIN_FILE=$f -p $YANGMODELS/vendor/juniper/18.2/18.2R1/common -p $YANGMODELS/vendor/juniper/18.2/18.2R1/junos/conf show version"
expectfn "$clixon_cli -1f $cfg -o CLICON_YANG_MAIN_FILE=$f -p $YANGMODELS/vendor/juniper/18.2/18.2R1/common -p $YANGMODELS/vendor/juniper/18.2/18.2R1/junos/conf -o CLICON_CLI_GENMODEL=0 show version" 0 "3." expectfn "$clixon_cli -1f $cfg -o CLICON_YANG_MAIN_FILE=$f -p $YANGMODELS/vendor/juniper/18.2/18.2R1/common -p $YANGMODELS/vendor/juniper/18.2/18.2R1/junos/conf -o CLICON_CLI_GENMODEL=0 show version" 0 "3."