version 1.45, 2019/04/16 14:58:19 |
version 1.49, 2019/04/23 14:01:55 |
Line 112 static const struct alias aliases[] = { |
|
Line 112 static const struct alias aliases[] = { |
|
{ "secondary", NODE_DELETE }, |
{ "secondary", NODE_DELETE }, |
{ "sect1", NODE_SECTION }, |
{ "sect1", NODE_SECTION }, |
{ "sect2", NODE_SECTION }, |
{ "sect2", NODE_SECTION }, |
|
{ "sect3", NODE_SECTION }, |
|
{ "sect4", NODE_SECTION }, |
{ "sgmltag", NODE_MARKUP }, |
{ "sgmltag", NODE_MARKUP }, |
{ "simpara", NODE_PARA }, |
{ "simpara", NODE_PARA }, |
{ "structfield", NODE_PARAMETER }, |
{ "structfield", NODE_PARAMETER }, |
{ "structname", NODE_TYPE }, |
{ "structname", NODE_TYPE }, |
{ "surname", NODE_PERSONNAME }, |
{ "surname", NODE_PERSONNAME }, |
{ "symbol", NODE_CONSTANT }, |
{ "symbol", NODE_CONSTANT }, |
|
{ "tag", NODE_MARKUP }, |
{ "trademark", NODE_IGNORE }, |
{ "trademark", NODE_IGNORE }, |
{ "ulink", NODE_LINK }, |
{ "ulink", NODE_LINK }, |
{ "userinput", NODE_LITERAL }, |
{ "userinput", NODE_LITERAL }, |
Line 380 xml_entity(struct parse *p, const char *name) |
|
Line 383 xml_entity(struct parse *p, const char *name) |
|
struct pnode *n; |
struct pnode *n; |
const char *ccp; |
const char *ccp; |
char *cp; |
char *cp; |
|
unsigned int codepoint; |
enum pstate pstate; |
enum pstate pstate; |
|
|
if (p->del > 0) |
if (p->del > 0) |
Line 424 xml_entity(struct parse *p, const char *name) |
|
Line 428 xml_entity(struct parse *p, const char *name) |
|
return; |
return; |
} |
} |
} |
} |
|
if (*name == '#') { |
|
codepoint = strtonum(name + 1, 0, 0x10ffff, &ccp); |
|
if (ccp == NULL) { |
|
if ((n = pnode_alloc(p->cur)) == NULL || |
|
asprintf(&n->b, "\\[u%4.4X]", |
|
codepoint) < 0) |
|
fatal(p); |
|
goto done; |
|
} |
|
} |
error_msg(p, "unknown entity &%s;", name); |
error_msg(p, "unknown entity &%s;", name); |
return; |
return; |
} |
} |
Line 432 xml_entity(struct parse *p, const char *name) |
|
Line 446 xml_entity(struct parse *p, const char *name) |
|
if ((n = pnode_alloc(p->cur)) == NULL || |
if ((n = pnode_alloc(p->cur)) == NULL || |
(n->b = strdup(entity->roff)) == NULL) |
(n->b = strdup(entity->roff)) == NULL) |
fatal(p); |
fatal(p); |
|
done: |
n->node = NODE_ESCAPE; |
n->node = NODE_ESCAPE; |
n->spc = (p->flags & PFLAG_SPC) != 0; |
n->spc = (p->flags & PFLAG_SPC) != 0; |
p->flags &= ~PFLAG_SPC; |
p->flags &= ~PFLAG_SPC; |
Line 517 xml_elem_start(struct parse *p, const char *name) |
|
Line 532 xml_elem_start(struct parse *p, const char *name) |
|
case NODE_DOCTYPE: |
case NODE_DOCTYPE: |
case NODE_ENTITY: |
case NODE_ENTITY: |
case NODE_SBR: |
case NODE_SBR: |
|
case NODE_VOID: |
p->flags |= PFLAG_EEND; |
p->flags |= PFLAG_EEND; |
break; |
break; |
default: |
default: |
Line 551 xml_attrkey(struct parse *p, const char *name) |
|
Line 567 xml_attrkey(struct parse *p, const char *name) |
|
const char *value; |
const char *value; |
enum attrkey key; |
enum attrkey key; |
|
|
if (p->del > 0 || p->ncur == NODE_IGNORE || *name == '\0') |
if (p->del > 0 || p->ncur >= NODE_UNKNOWN || *name == '\0') |
return; |
return; |
|
|
if ((p->ncur == NODE_DOCTYPE || p->ncur == NODE_ENTITY) && |
if ((p->ncur == NODE_DOCTYPE || p->ncur == NODE_ENTITY) && |
Line 588 xml_attrval(struct parse *p, const char *name) |
|
Line 604 xml_attrval(struct parse *p, const char *name) |
|
{ |
{ |
struct pattr *a; |
struct pattr *a; |
|
|
if (p->del > 0 || p->ncur == NODE_IGNORE || |
if (p->del > 0 || p->ncur >= NODE_UNKNOWN || |
(p->flags & PFLAG_ATTR) == 0) |
(p->flags & PFLAG_ATTR) == 0) |
return; |
return; |
if ((a = TAILQ_LAST(&p->cur->attrq, pattrq)) == NULL) |
if ((a = TAILQ_LAST(&p->cur->attrq, pattrq)) == NULL) |
Line 647 xml_elem_end(struct parse *p, const char *name) |
|
Line 663 xml_elem_end(struct parse *p, const char *name) |
|
break; |
break; |
case NODE_DOCTYPE: |
case NODE_DOCTYPE: |
case NODE_SBR: |
case NODE_SBR: |
|
case NODE_VOID: |
p->flags &= ~PFLAG_EEND; |
p->flags &= ~PFLAG_EEND; |
/* FALLTHROUGH */ |
/* FALLTHROUGH */ |
default: |
default: |