version 1.24, 2019/04/08 22:47:34 |
version 1.28, 2019/04/09 13:35:29 |
Line 213 static const struct element elements[] = { |
|
Line 213 static const struct element elements[] = { |
|
{ "varname", NODE_VARNAME }, |
{ "varname", NODE_VARNAME }, |
{ "warning", NODE_WARNING }, |
{ "warning", NODE_WARNING }, |
{ "wordasword", NODE_WORDASWORD }, |
{ "wordasword", NODE_WORDASWORD }, |
{ "xi:include", NODE_DELETE_WARN }, |
{ "xi:include", NODE_INCLUDE }, |
{ "year", NODE_YEAR }, |
{ "year", NODE_YEAR }, |
{ NULL, NODE_IGNORE } |
{ NULL, NODE_IGNORE } |
}; |
}; |
Line 409 xml_entity(struct parse *p, const char *name) |
|
Line 409 xml_entity(struct parse *p, const char *name) |
|
TAILQ_FOREACH(dat, &p->doctype->childq, child) { |
TAILQ_FOREACH(dat, &p->doctype->childq, child) { |
if ((ccp = pnode_getattr_raw(dat, |
if ((ccp = pnode_getattr_raw(dat, |
ATTRKEY_NAME, NULL)) == NULL || |
ATTRKEY_NAME, NULL)) == NULL || |
strcmp(ccp, name) != 0 || |
strcmp(ccp, name) != 0) |
(ccp = pnode_getattr_raw(dat, |
continue; |
|
if ((ccp = pnode_getattr_raw(dat, |
|
ATTRKEY_SYSTEM, NULL)) != NULL) { |
|
parse_file(p, -1, ccp); |
|
p->flags &= ~PFLAG_SPC; |
|
return; |
|
} |
|
if ((ccp = pnode_getattr_raw(dat, |
ATTRKEY_DEFINITION, NULL)) == NULL) |
ATTRKEY_DEFINITION, NULL)) == NULL) |
continue; |
continue; |
if ((cp = strdup(ccp)) == NULL) { |
if ((cp = strdup(ccp)) == NULL) { |
Line 624 xml_attrval(struct parse *ps, const char *name) |
|
Line 631 xml_attrval(struct parse *ps, const char *name) |
|
perror(NULL); |
perror(NULL); |
exit(1); |
exit(1); |
} |
} |
|
ps->flags &= ~PFLAG_ATTR; |
} |
} |
|
|
/* |
/* |
|
|
xml_elem_end(struct parse *ps, const char *name) |
xml_elem_end(struct parse *ps, const char *name) |
{ |
{ |
const struct element *elem; |
const struct element *elem; |
|
struct pnode *n; |
|
const char *cp; |
enum nodeid node; |
enum nodeid node; |
|
|
/* |
/* |
Line 664 xml_elem_end(struct parse *ps, const char *name) |
|
Line 674 xml_elem_end(struct parse *ps, const char *name) |
|
break; |
break; |
case NODE_IGNORE: |
case NODE_IGNORE: |
break; |
break; |
|
case NODE_INCLUDE: |
|
n = ps->cur; |
|
ps->cur = ps->cur->parent; |
|
cp = pnode_getattr_raw(n, ATTRKEY_HREF, NULL); |
|
if (cp == NULL) |
|
error_msg(ps, "<xi:include> element " |
|
"without href attribute"); |
|
else |
|
parse_file(ps, -1, cp); |
|
pnode_unlink(n); |
|
ps->flags &= ~PFLAG_SPC; |
|
break; |
case NODE_DOCTYPE: |
case NODE_DOCTYPE: |
ps->flags &= ~PFLAG_EEND; |
ps->flags &= ~PFLAG_EEND; |
/* FALLTHROUGH */ |
/* FALLTHROUGH */ |
Line 954 parse_string(struct parse *p, char *b, size_t rlen, |
|
Line 976 parse_string(struct parse *p, char *b, size_t rlen, |
|
/* Process text up to the next tag, entity, or EOL. */ |
/* Process text up to the next tag, entity, or EOL. */ |
|
|
} else { |
} else { |
advance(p, b, rlen, &pend, "<&", refill); |
advance(p, b, rlen, &pend, |
|
p->ncur == NODE_DOCTYPE ? "<&]" : "<&", |
|
refill); |
xml_char(p, b + poff, pend - poff); |
xml_char(p, b + poff, pend - poff); |
} |
} |
} |
} |