=================================================================== RCS file: /cvs/docbook2mdoc/reorg.c,v retrieving revision 1.3 retrieving revision 1.5 diff -u -p -r1.3 -r1.5 --- docbook2mdoc/reorg.c 2019/04/28 19:59:01 1.3 +++ docbook2mdoc/reorg.c 2019/05/01 09:02:25 1.5 @@ -1,4 +1,4 @@ -/* $Id: reorg.c,v 1.3 2019/04/28 19:59:01 schwarze Exp $ */ +/* $Id: reorg.c,v 1.5 2019/05/01 09:02:25 schwarze Exp $ */ /* * Copyright (c) 2019 Ingo Schwarze * @@ -24,9 +24,9 @@ */ static void -reorg_root(struct pnode *root) +reorg_root(struct pnode *root, const char *sec) { - struct pnode *date, *descr, *name, *vol, *nc; + struct pnode *date, *info, *name, *vol, *nc; if (root == NULL) return; @@ -53,20 +53,24 @@ reorg_root(struct pnode *root) pnode_alloc_text(name, pnode_getattr_raw(root, ATTRKEY_ID, "UNKNOWN")); } - if (vol == NULL) { + if (vol == NULL || sec != NULL) { + pnode_unlink(vol); vol = pnode_alloc(NULL); vol->node = NODE_MANVOLNUM; vol->parent = root; - pnode_alloc_text(vol, "1"); + pnode_alloc_text(vol, sec == NULL ? "1" : sec); } /* Insert prologue information at the beginning. */ if (pnode_findfirst(root, NODE_REFNAMEDIV) == NULL && - ((nc = pnode_findfirst(root, NODE_BOOKINFO)) != NULL || - (nc = pnode_findfirst(root, NODE_REFENTRYINFO)) != NULL) && - (descr = pnode_takefirst(nc, NODE_TITLE)) != NULL) - TAILQ_INSERT_HEAD(&root->childq, descr, child); + ((info = pnode_findfirst(root, NODE_BOOKINFO)) != NULL || + (info = pnode_findfirst(root, NODE_REFENTRYINFO)) != NULL)) { + if ((nc = pnode_takefirst(info, NODE_ABSTRACT)) != NULL) + TAILQ_INSERT_HEAD(&root->childq, nc, child); + if ((nc = pnode_takefirst(info, NODE_TITLE)) != NULL) + TAILQ_INSERT_HEAD(&root->childq, nc, child); + } TAILQ_INSERT_HEAD(&root->childq, vol, child); TAILQ_INSERT_HEAD(&root->childq, name, child); TAILQ_INSERT_HEAD(&root->childq, date, child); @@ -215,6 +219,10 @@ reorg_recurse(struct pnode *n) return; switch (n->node) { + case NODE_ABSTRACT: + default_title(n, "Abstract"); + n->node = NODE_SECTION; + break; case NODE_APPENDIX: if (n->parent == NULL) reorg_refentry(n); @@ -264,8 +272,8 @@ reorg_recurse(struct pnode *n) } void -ptree_reorg(struct ptree *tree) +ptree_reorg(struct ptree *tree, const char *sec) { - reorg_root(tree->root); + reorg_root(tree->root, sec); reorg_recurse(tree->root); }