=================================================================== RCS file: /cvs/docbook2mdoc/docbook2mdoc.c,v retrieving revision 1.85 retrieving revision 1.90 diff -u -p -r1.85 -r1.90 --- docbook2mdoc/docbook2mdoc.c 2019/04/03 14:02:07 1.85 +++ docbook2mdoc/docbook2mdoc.c 2019/04/03 17:53:02 1.90 @@ -1,4 +1,4 @@ -/* $Id: docbook2mdoc.c,v 1.85 2019/04/03 14:02:07 schwarze Exp $ */ +/* $Id: docbook2mdoc.c,v 1.90 2019/04/03 17:53:02 schwarze Exp $ */ /* * Copyright (c) 2014 Kristaps Dzonsons * Copyright (c) 2019 Ingo Schwarze @@ -201,25 +201,17 @@ pnode_printrefmeta(struct format *p, struct pnode *pn) } static void -pnode_printfuncdef(struct format *p, struct pnode *pn) +pnode_printfuncdef(struct format *f, struct pnode *n) { - struct pnode *pp, *ftype, *func; + struct pnode *nc; - ftype = func = NULL; - TAILQ_FOREACH(pp, &pn->childq, child) { - if (pp->node == NODE_TEXT) - ftype = pp; - else if (pp->node == NODE_FUNCTION) - func = pp; + nc = TAILQ_FIRST(&n->childq); + if (nc != NULL && nc->node == NODE_TEXT) { + macro_argline(f, "Ft", nc->b); + pnode_unlink(nc); } - if (ftype != NULL) - macro_argline(p, "Ft", ftype->b); - macro_open(p, "Fo"); - if (func == NULL) - macro_addarg(p, "UNKNOWN", ARG_SPACE); - else - macro_addnode(p, func, ARG_SPACE | ARG_SINGLE); - macro_close(p); + macro_nodeline(f, "Fo", n, ARG_SINGLE); + pnode_unlinksub(n); } /* @@ -288,14 +280,14 @@ pnode_printfuncprototype(struct format *p, struct pnod if (fdef->node == NODE_FUNCDEF) break; - if (fdef != NULL) + if (fdef != NULL) { pnode_printfuncdef(p, fdef); - else + pnode_unlink(fdef); + } else macro_line(p, "Fo UNKNOWN"); TAILQ_FOREACH(pp, &pn->childq, child) - if (pp->node == NODE_PARAMDEF) - macro_nodeline(p, "Fa", pp, ARG_SINGLE); + macro_nodeline(p, "Fa", pp, ARG_SINGLE); macro_line(p, "Fc"); pnode_unlinksub(pn); @@ -674,9 +666,6 @@ pnode_print(struct format *p, struct pnode *pn) case NODE_CITETITLE: macro_open(p, "%T"); break; - case NODE_CODE: - macro_open(p, "Li"); - break; case NODE_COMMAND: macro_open(p, "Nm"); break; @@ -697,6 +686,9 @@ pnode_print(struct format *p, struct pnode *pn) case NODE_ENVAR: macro_open(p, "Ev"); break; + case NODE_ERRORNAME: + macro_open(p, "Er"); + break; case NODE_ESCAPE: if (p->linestate == LINE_NEW) p->linestate = LINE_TEXT; @@ -743,7 +735,7 @@ pnode_print(struct format *p, struct pnode *pn) macro_argline(p, "Sx", ccp); return; case NODE_LITERAL: - macro_open(p, "Li"); + macro_open(p, "Ql"); break; case NODE_LITERALLAYOUT: macro_argline(p, "Bd", pnode_getattr(pn, ATTRKEY_CLASS) == @@ -774,6 +766,7 @@ pnode_print(struct format *p, struct pnode *pn) case NODE_PARA: pnode_printpara(p, pn); break; + case NODE_PARAMDEF: case NODE_PARAMETER: macro_nodeline(p, "Fa", pn, ARG_SINGLE); pnode_unlinksub(pn); @@ -783,15 +776,13 @@ pnode_print(struct format *p, struct pnode *pn) break; case NODE_PROGRAMLISTING: case NODE_SCREEN: + case NODE_SYNOPSIS: macro_line(p, "Bd -literal"); break; case NODE_REFENTRYINFO: /* Suppress. */ pnode_unlinksub(pn); break; - case NODE_REFMETA: - abort(); - break; case NODE_REFNAME: /* Suppress non-text children... */ macro_open(p, "Nm"); @@ -822,11 +813,8 @@ pnode_print(struct format *p, struct pnode *pn) macro_line(p, "br"); break; case NODE_SGMLTAG: - macro_open(p, "Li"); + macro_open(p, "Ic"); break; - case NODE_STRUCTNAME: - macro_open(p, "Vt"); - break; case NODE_TEXT: if (pn->bsz == 0) { assert(pn->real != pn->b); @@ -885,9 +873,6 @@ pnode_print(struct format *p, struct pnode *pn) case NODE_TYPE: macro_open(p, "Vt"); break; - case NODE_USERINPUT: - macro_open(p, "Li"); - break; case NODE_VARIABLELIST: pnode_printvariablelist(p, pn); break; @@ -922,13 +907,13 @@ pnode_print(struct format *p, struct pnode *pn) case NODE_AUTHOR: case NODE_CITEREFENTRY: case NODE_CITETITLE: - case NODE_CODE: case NODE_COMMAND: case NODE_CONSTANT: case NODE_EDITOR: case NODE_EMAIL: case NODE_EMPHASIS: case NODE_ENVAR: + case NODE_ERRORNAME: case NODE_FILENAME: case NODE_FIRSTTERM: case NODE_FUNCTION: @@ -940,9 +925,7 @@ pnode_print(struct format *p, struct pnode *pn) case NODE_REPLACEABLE: case NODE_REFPURPOSE: case NODE_SGMLTAG: - case NODE_STRUCTNAME: case NODE_TYPE: - case NODE_USERINPUT: case NODE_VARNAME: if (sv != LINE_MACRO && p->linestate == LINE_MACRO) macro_closepunct(p, pn); @@ -980,6 +963,7 @@ pnode_print(struct format *p, struct pnode *pn) case NODE_LITERALLAYOUT: case NODE_PROGRAMLISTING: case NODE_SCREEN: + case NODE_SYNOPSIS: macro_line(p, "Ed"); break; case NODE_TITLE: