version 1.32, 2019/04/11 04:23:22 |
version 1.34, 2019/04/12 04:39:24 |
Line 337 xml_char(struct parse *p, const char *word, int sz) |
|
Line 337 xml_char(struct parse *p, const char *word, int sz) |
|
} |
} |
|
|
if (n->node != NODE_TEXT) { |
if (n->node != NODE_TEXT) { |
if ((n = calloc(1, sizeof(*n))) == NULL) |
if ((n = pnode_alloc(p->cur)) == NULL) |
fatal(p); |
fatal(p); |
n->node = NODE_TEXT; |
n->node = NODE_TEXT; |
n->spc = (p->flags & PFLAG_SPC) != 0; |
n->spc = (p->flags & PFLAG_SPC) != 0; |
n->parent = p->cur; |
|
TAILQ_INIT(&n->childq); |
|
TAILQ_INIT(&n->attrq); |
|
TAILQ_INSERT_TAIL(&p->cur->childq, n, child); |
|
p->cur = n; |
p->cur = n; |
} |
} |
|
|
Line 440 xml_entity(struct parse *p, const char *name) |
|
Line 436 xml_entity(struct parse *p, const char *name) |
|
} |
} |
|
|
/* Create, append, and close out an entity node. */ |
/* Create, append, and close out an entity node. */ |
if ((n = calloc(1, sizeof(*n))) == NULL || |
if ((n = pnode_alloc(p->cur)) == NULL || |
(n->b = strdup(entity->roff)) == NULL) |
(n->b = strdup(entity->roff)) == NULL) |
fatal(p); |
fatal(p); |
n->node = NODE_ESCAPE; |
n->node = NODE_ESCAPE; |
n->spc = (p->flags & PFLAG_SPC) != 0; |
n->spc = (p->flags & PFLAG_SPC) != 0; |
n->parent = p->cur; |
|
TAILQ_INIT(&n->childq); |
|
TAILQ_INIT(&n->attrq); |
|
TAILQ_INSERT_TAIL(&p->cur->childq, n, child); |
|
p->flags &= ~PFLAG_SPC; |
p->flags &= ~PFLAG_SPC; |
} |
} |
|
|
Line 504 xml_elem_start(struct parse *p, const char *name) |
|
Line 496 xml_elem_start(struct parse *p, const char *name) |
|
if (p->tree->flags & TREE_CLOSED && p->cur->parent == NULL) |
if (p->tree->flags & TREE_CLOSED && p->cur->parent == NULL) |
warn_msg(p, "element after end of document: <%s>", name); |
warn_msg(p, "element after end of document: <%s>", name); |
|
|
if ((n = calloc(1, sizeof(*n))) == NULL) |
if ((n = pnode_alloc(p->cur)) == NULL) |
fatal(p); |
fatal(p); |
|
|
/* |
/* |
Line 556 xml_elem_start(struct parse *p, const char *name) |
|
Line 548 xml_elem_start(struct parse *p, const char *name) |
|
n->spc = (p->flags & PFLAG_SPC) != 0; |
n->spc = (p->flags & PFLAG_SPC) != 0; |
break; |
break; |
} |
} |
n->parent = p->cur; |
|
TAILQ_INIT(&n->childq); |
|
TAILQ_INIT(&n->attrq); |
|
|
|
if (p->cur != NULL) |
|
TAILQ_INSERT_TAIL(&p->cur->childq, n, child); |
|
|
|
p->cur = n; |
p->cur = n; |
if (n->node == NODE_DOCTYPE) { |
if (n->node == NODE_DOCTYPE) { |
if (p->doctype == NULL) |
if (p->doctype == NULL) |
Line 972 parse_string(struct parse *p, char *b, size_t rlen, |
|
Line 957 parse_string(struct parse *p, char *b, size_t rlen, |
|
|
|
} else { |
} else { |
advance(p, b, rlen, &pend, |
advance(p, b, rlen, &pend, |
p->ncur == NODE_DOCTYPE ? "<&]" : "<&", |
p->ncur == NODE_DOCTYPE ? "<&]\n" : "<&\n", |
refill); |
refill); |
xml_char(p, b + poff, pend - poff); |
xml_char(p, b + poff, pend - poff); |
|
if (b[pend] == '\n') |
|
pnode_closetext(p); |
} |
} |
} |
} |
return poff; |
return poff; |