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; }
<QLITERAL>\" { BEGIN(TOKEN); return QUOTE; }
<QLITERAL>. { clixon_xpath_parselval.string = strdup(yytext);
return CHAR;}
<QLITERAL>[^"]+ { clixon_xpath_parselval.string = strdup(yytext);
return CHARS;}
<ALITERAL>\' { BEGIN(TOKEN); return APOST; }
<ALITERAL>. { clixon_xpath_parselval.string = strdup(yytext);
return CHAR;}
<ALITERAL>[^']+ { clixon_xpath_parselval.string = strdup(yytext);
return CHARS;}
%%

View file

@ -59,7 +59,7 @@
%token <string> X_EOF
%token <string> QUOTE
%token <string> APOST
%token <string> CHAR
%token <string> CHARS
%token <string> NAME
%token <string> NODETYPE
%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 "); }
;
string : string CHAR {
string : string CHARS {
int len = strlen($1);
$$ = realloc($1, len+strlen($2) + 1);
sprintf($$+len, "%s", $2);
free($2);
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
cat <<EOF > $cfg
<config>
<clixon-config xmlns="http://clicon.org/config">
<CLICON_CONFIGFILE>$cfg</CLICON_CONFIGFILE>
<CLICON_YANG_DIR>$dir</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_PLUGIN>/usr/local/lib/xmldb/text.so</CLICON_XMLDB_PLUGIN>
<CLICON_XMLDB_PRETTY>false</CLICON_XMLDB_PRETTY>
</config>
</clixon-config>
EOF
new "test params: -f $cfg -y $fyang"

View file

@ -2,7 +2,6 @@
# Run valgrind leak test for cli, restconf, netconf or background.
# Stop on first error
# Run valgrindtest once, args:
# what: cli|netconf|restconf|backend
memonce(){
@ -24,7 +23,7 @@ memonce(){
;;
'backend')
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
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")
let i=0;
for f in $files; do
echo "f:$f"
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"
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."