From 8f9a38d2aa8a7a549b7e733e7fea94d1d787ab1c Mon Sep 17 00:00:00 2001 From: Dave Cornejo Date: Thu, 7 Jun 2018 13:26:18 -1000 Subject: [PATCH] add handling of CDATA to XML parser --- lib/src/clixon_xml_parse.l | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/lib/src/clixon_xml_parse.l b/lib/src/clixon_xml_parse.l index e0c39884..770f6288 100644 --- a/lib/src/clixon_xml_parse.l +++ b/lib/src/clixon_xml_parse.l @@ -77,6 +77,7 @@ int clixon_xml_parsewrap(void) %x START %s STATEA %s AMPERSAND +%s CDATA %s CMNT %s STR %s TEXTDECL @@ -106,7 +107,9 @@ int clixon_xml_parsewrap(void) \< { BEGIN(START); return *clixon_xml_parsetext; } & { _YA->ya_lex_state =STATEA;BEGIN(AMPERSAND);} \n { clixon_xml_parselval.string = yytext;_YA->ya_linenum++; return (CHARDATA);} +"ya_lex_state = STATEA; clixon_xml_parselval.string = yytext; return CHARDATA;} . { clixon_xml_parselval.string = yytext; return CHARDATA; /*XXX:optimize*/} + /* @see xml_chardata_encode */ "amp; " {BEGIN(_YA->ya_lex_state); clixon_xml_parselval.string = "&"; return CHARDATA;} "lt; " {BEGIN(_YA->ya_lex_state); clixon_xml_parselval.string = "<"; return CHARDATA;} @@ -114,6 +117,8 @@ int clixon_xml_parsewrap(void) "apos; " {BEGIN(_YA->ya_lex_state); clixon_xml_parselval.string = "'"; return CHARDATA;} "aquot; " {BEGIN(_YA->ya_lex_state); clixon_xml_parselval.string = "'"; return CHARDATA;} +. { clixon_xml_parselval.string = yytext; return CHARDATA;} +"]]>" { BEGIN(_YA->ya_lex_state); clixon_xml_parselval.string = yytext; return CHARDATA;} "-->" { BEGIN(START); return ECOMMENT; } \n _YA->ya_linenum++;