=================================================================== RCS file: /cvs/docbook2mdoc/docbook2mdoc.c,v retrieving revision 1.19 retrieving revision 1.20 diff -u -p -r1.19 -r1.20 --- docbook2mdoc/docbook2mdoc.c 2014/03/30 16:44:13 1.19 +++ docbook2mdoc/docbook2mdoc.c 2014/03/30 16:57:06 1.20 @@ -1,4 +1,4 @@ -/* $Id: docbook2mdoc.c,v 1.19 2014/03/30 16:44:13 kristaps Exp $ */ +/* $Id: docbook2mdoc.c,v 1.20 2014/03/30 16:57:06 kristaps Exp $ */ /* * Copyright (c) 2014 Kristaps Dzonsons * @@ -120,7 +120,8 @@ static const struct node nodes[NODE__MAX] = { { "refname", 0 }, { "refnamediv", NODE_IGNTEXT }, { "refpurpose", 0 }, - { "refsect1", 0 }, + { "refsect1", NODE_IGNTEXT }, + { "refsect2", NODE_IGNTEXT }, { "refsynopsisdiv", NODE_IGNTEXT }, { "replaceable", 0 }, { "sbr", NODE_IGNTEXT }, @@ -584,11 +585,17 @@ pnode_printrefsect(struct parse *p, struct pnode *pn) if (NODE_TITLE == pp->node) break; - fputs(".Sh", stdout); + if (NODE_REFSECT1 == pn->node) + fputs(".Sh", stdout); + else + fputs(".Ss", stdout); + p->newln = 0; if (NULL != pp) { - pnode_printmacrolinetext(p, pp, MACROLINE_UPPER); + pnode_printmacrolinetext(p, pp, + NODE_REFSECT1 == pn->node ? + MACROLINE_UPPER : 0); pnode_printmclose(p, 1); pnode_unlink(pp); } else { @@ -957,7 +964,6 @@ pnode_print(struct parse *p, struct pnode *pn) case (NODE_OPTION): pnode_printmopen(p); fputs("Fl", stdout); - /* FIXME: bogus leading '-'? */ break; case (NODE_PARA): assert(p->newln); @@ -1008,6 +1014,8 @@ pnode_print(struct parse *p, struct pnode *pn) puts(".Sh SYNOPSIS"); break; case (NODE_REFSECT1): + /* FALLTHROUGH */ + case (NODE_REFSECT2): assert(p->newln); pnode_printrefsect(p, pn); break; @@ -1035,7 +1043,17 @@ pnode_print(struct parse *p, struct pnode *pn) * Remember to escape control characters and escapes. */ assert(p->bsz); - for (last = '\n', cp = p->b; '\0' != *cp; ) { + cp = p->b; + /* + * There's often a superfluous "-" in its