=================================================================== RCS file: /cvs/docbook2mdoc/docbook2mdoc.c,v retrieving revision 1.5 retrieving revision 1.6 diff -u -p -r1.5 -r1.6 --- docbook2mdoc/docbook2mdoc.c 2014/03/28 10:03:36 1.5 +++ docbook2mdoc/docbook2mdoc.c 2014/03/28 10:08:24 1.6 @@ -1,4 +1,4 @@ -/* $Id: docbook2mdoc.c,v 1.5 2014/03/28 10:03:36 kristaps Exp $ */ +/* $Id: docbook2mdoc.c,v 1.6 2014/03/28 10:08:24 kristaps Exp $ */ /* * Copyright (c) 2014 Kristaps Dzonsons * @@ -73,6 +73,8 @@ struct parse { int stop; /* should we stop now? */ struct pnode *root; /* root of parse tree */ struct pnode *cur; /* current node in tree */ + unsigned int flags; +#define PARSE_HAS_META 1 char *b; size_t bsz; size_t mbsz; @@ -638,6 +640,20 @@ pnode_printmacroline(struct parse *p, struct pnode *pn } static void +pnode_printrefsynopsisdiv(struct parse *p, struct pnode *pn) +{ + struct pnode *pp; + + TAILQ_FOREACH(pp, &pn->childq, child) + if (NODE_TITLE == pp->node) { + pnode_unlink(pp); + break; + } + + puts(".Sh SYNOPSIS"); +} + +static void pnode_printrefsect(struct parse *p, struct pnode *pn) { struct pnode *pp; @@ -872,6 +888,7 @@ pnode_print(struct parse *p, struct pnode *pn) case (NODE_REFMETA): pnode_printrefmeta(p, pn); pnode_unlinksub(pn); + p->flags |= PARSE_HAS_META; break; case (NODE_REFNAME): fputs(".Nm ", stdout); @@ -879,6 +896,11 @@ pnode_print(struct parse *p, struct pnode *pn) pnode_unlinksub(pn); return; case (NODE_REFNAMEDIV): + if ( ! (PARSE_HAS_META & p->flags)) { + puts(".Dd $Mdocdate" "$"); + puts(".Dt UNKNOWN 1"); + puts(".Os"); + } puts(".Sh NAME"); break; case (NODE_REFPURPOSE): @@ -887,7 +909,7 @@ pnode_print(struct parse *p, struct pnode *pn) pnode_unlinksub(pn); return; case (NODE_REFSYNOPSISDIV): - puts(".Sh SYNOPSIS"); + pnode_printrefsynopsisdiv(p, pn); break; case (NODE_REFSECT1): pnode_printrefsect(p, pn);