=================================================================== RCS file: /cvs/docbook2mdoc/parse.c,v retrieving revision 1.55 retrieving revision 1.57 diff -u -p -r1.55 -r1.57 --- docbook2mdoc/parse.c 2019/04/29 02:00:50 1.55 +++ docbook2mdoc/parse.c 2019/05/01 17:20:47 1.57 @@ -1,4 +1,4 @@ -/* $Id: parse.c,v 1.55 2019/04/29 02:00:50 schwarze Exp $ */ +/* $Id: parse.c,v 1.57 2019/05/01 17:20:47 schwarze Exp $ */ /* * Copyright (c) 2014 Kristaps Dzonsons * Copyright (c) 2019 Ingo Schwarze @@ -130,7 +130,6 @@ static const struct alias aliases[] = { { "trademark", NODE_IGNORE }, { "ulink", NODE_LINK }, { "userinput", NODE_LITERAL }, - { "year", NODE_IGNORE }, { NULL, NODE_IGNORE } }; @@ -269,8 +268,10 @@ xml_text(struct parse *p, const char *word, int sz) n = pnode_alloc(p->cur); n->node = NODE_TEXT; - n->flags = ((p->flags & PFLAG_LINE) ? NFLAG_LINE : 0) | - ((p->flags & PFLAG_SPC) ? NFLAG_SPC : 0); + if (p->flags & PFLAG_LINE && TAILQ_PREV(n, pnodeq, child) != NULL) + n->flags |= NFLAG_LINE; + if (p->flags & PFLAG_SPC) + n->flags |= NFLAG_SPC; p->flags &= ~(PFLAG_LINE | PFLAG_SPC); /* @@ -434,8 +435,10 @@ xml_entity(struct parse *p, const char *name) n->b = xstrdup(entity->roff); done: n->node = NODE_ESCAPE; - n->flags = ((p->flags & PFLAG_LINE) ? NFLAG_LINE : 0) | - ((p->flags & PFLAG_SPC) ? NFLAG_SPC : 0); + if (p->flags & PFLAG_LINE && TAILQ_PREV(n, pnodeq, child) != NULL) + n->flags |= NFLAG_LINE; + if (p->flags & PFLAG_SPC) + n->flags |= NFLAG_SPC; p->flags &= ~(PFLAG_LINE | PFLAG_SPC); } @@ -507,6 +510,10 @@ xml_elem_start(struct parse *p, const char *name) } n = pnode_alloc(p->cur); + if (p->flags & PFLAG_LINE && p->cur != NULL && + TAILQ_PREV(n, pnodeq, child) != NULL) + n->flags |= NFLAG_LINE; + p->flags &= ~PFLAG_LINE; /* * Some elements are self-closing. @@ -527,8 +534,8 @@ xml_elem_start(struct parse *p, const char *name) switch (pnode_class(p->ncur)) { case CLASS_LINE: case CLASS_ENCL: - n->flags = ((p->flags & PFLAG_LINE) ? NFLAG_LINE : 0) | - ((p->flags & PFLAG_SPC) ? NFLAG_SPC : 0); + if (p->flags & PFLAG_SPC) + n->flags |= NFLAG_SPC; break; case CLASS_NOFILL: p->nofill++;