=================================================================== RCS file: /cvs/docbook2mdoc/docbook2mdoc.c,v retrieving revision 1.145 retrieving revision 1.147 diff -u -p -r1.145 -r1.147 --- docbook2mdoc/docbook2mdoc.c 2019/05/01 12:52:05 1.145 +++ docbook2mdoc/docbook2mdoc.c 2019/05/01 17:20:47 1.147 @@ -1,4 +1,4 @@ -/* $Id: docbook2mdoc.c,v 1.145 2019/05/01 12:52:05 schwarze Exp $ */ +/* $Id: docbook2mdoc.c,v 1.147 2019/05/01 17:20:47 schwarze Exp $ */ /* * Copyright (c) 2014 Kristaps Dzonsons * Copyright (c) 2019 Ingo Schwarze @@ -40,6 +40,7 @@ pnode_printtext(struct format *f, struct pnode *n) char *cp; int accept_arg; + para_check(f); cp = n->b; accept_arg = f->flags & FMT_ARG; if (f->linestate == LINE_MACRO && !accept_arg && @@ -930,6 +931,10 @@ pnode_print(struct format *f, struct pnode *n) if (n == NULL) return; + if (n->flags & NFLAG_LINE && + (f->nofill || (f->flags & (FMT_ARG | FMT_IMPL)) == 0)) + macro_close(f); + was_impl = f->flags & FMT_IMPL; if (n->flags & NFLAG_SPC) f->flags &= ~FMT_NOSPC; @@ -1193,6 +1198,9 @@ pnode_print(struct format *f, struct pnode *n) break; } + if (pnode_class(n->node) == CLASS_NOFILL) + f->nofill++; + TAILQ_FOREACH(nc, &n->childq, child) pnode_print(f, nc); @@ -1306,6 +1314,8 @@ pnode_print(struct format *f, struct pnode *n) break; } f->flags &= ~FMT_ARG; + if (pnode_class(n->node) == CLASS_NOFILL) + f->nofill--; } void @@ -1313,7 +1323,7 @@ ptree_print_mdoc(struct ptree *tree) { struct format formatter; - formatter.level = 0; + formatter.level = formatter.nofill = 0; formatter.linestate = LINE_NEW; formatter.parastate = PARA_HAVE; pnode_printprologue(&formatter, tree->root);