* No space after ampersand escaped characters in XML https://github.com/clicon/clixon/issues/52
* Thanks @SCadilhac
This commit is contained in:
parent
f273f52148
commit
7450eae046
5 changed files with 17 additions and 15 deletions
|
|
@ -356,7 +356,7 @@ xml_chardata_encode(char **escp,
|
|||
else
|
||||
switch (str[i]){
|
||||
case '&':
|
||||
len += strlen("& ");
|
||||
len += strlen("&");
|
||||
break;
|
||||
case '<':
|
||||
if (strncmp(&str[i], "<![CDATA[", strlen("<![CDATA[")) == 0){
|
||||
|
|
@ -364,10 +364,10 @@ xml_chardata_encode(char **escp,
|
|||
cdata++;
|
||||
}
|
||||
else
|
||||
len += strlen("< ");
|
||||
len += strlen("<");
|
||||
break;
|
||||
case '>':
|
||||
len += strlen("> ");
|
||||
len += strlen(">");
|
||||
break;
|
||||
default:
|
||||
len++;
|
||||
|
|
@ -395,7 +395,7 @@ xml_chardata_encode(char **escp,
|
|||
else
|
||||
switch (str[i]){
|
||||
case '&':
|
||||
if ((l=snprintf(&esc[j], 7, "& ")) < 0){
|
||||
if ((l=snprintf(&esc[j], 6, "&")) < 0){
|
||||
clicon_err(OE_UNIX, errno, "snprintf");
|
||||
goto done;
|
||||
}
|
||||
|
|
@ -407,14 +407,14 @@ xml_chardata_encode(char **escp,
|
|||
cdata++;
|
||||
break;
|
||||
}
|
||||
if ((l=snprintf(&esc[j], 6, "< ")) < 0){
|
||||
if ((l=snprintf(&esc[j], 5, "<")) < 0){
|
||||
clicon_err(OE_UNIX, errno, "snprintf");
|
||||
goto done;
|
||||
}
|
||||
j += l;
|
||||
break;
|
||||
case '>':
|
||||
if ((l=snprintf(&esc[j], 6, "> ")) < 0){
|
||||
if ((l=snprintf(&esc[j], 5, ">")) < 0){
|
||||
clicon_err(OE_UNIX, errno, "snprintf");
|
||||
goto done;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -113,11 +113,11 @@ int clixon_xml_parsewrap(void)
|
|||
<STATEA>. { clixon_xml_parselval.string = yytext; return CHARDATA; /*XXX:optimize*/}
|
||||
|
||||
/* @see xml_chardata_encode */
|
||||
<AMPERSAND>"amp; " { BEGIN(_YA->ya_lex_state); clixon_xml_parselval.string = "&"; return CHARDATA;}
|
||||
<AMPERSAND>"lt; " { BEGIN(_YA->ya_lex_state); clixon_xml_parselval.string = "<"; return CHARDATA;}
|
||||
<AMPERSAND>"gt; " { BEGIN(_YA->ya_lex_state); clixon_xml_parselval.string = ">"; return CHARDATA;}
|
||||
<AMPERSAND>"apos; " { BEGIN(_YA->ya_lex_state); clixon_xml_parselval.string = "'"; return CHARDATA;}
|
||||
<AMPERSAND>"quot; " { BEGIN(_YA->ya_lex_state); clixon_xml_parselval.string = "\""; return CHARDATA;}
|
||||
<AMPERSAND>"amp;" { BEGIN(_YA->ya_lex_state); clixon_xml_parselval.string = "&"; return CHARDATA;}
|
||||
<AMPERSAND>"lt;" { BEGIN(_YA->ya_lex_state); clixon_xml_parselval.string = "<"; return CHARDATA;}
|
||||
<AMPERSAND>"gt;" { BEGIN(_YA->ya_lex_state); clixon_xml_parselval.string = ">"; return CHARDATA;}
|
||||
<AMPERSAND>"apos;" { BEGIN(_YA->ya_lex_state); clixon_xml_parselval.string = "'"; return CHARDATA;}
|
||||
<AMPERSAND>"quot;" { BEGIN(_YA->ya_lex_state); clixon_xml_parselval.string = "\""; return CHARDATA;}
|
||||
|
||||
<CDATA>. { clixon_xml_parselval.string = yytext; return CHARDATA;}
|
||||
<CDATA>\n { clixon_xml_parselval.string = yytext;_YA->ya_linenum++; return (CHARDATA);}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue