[BACK]Return to docbook2mdoc.c CVS log [TXT][DIR] Up to [cvsweb.bsd.lv] / docbook2mdoc

Diff for /docbook2mdoc/docbook2mdoc.c between version 1.115 and 1.116

version 1.115, 2019/04/12 21:37:07 version 1.116, 2019/04/13 13:06:35
Line 318  pnode_printciterefentry(struct format *f, struct pnode
Line 318  pnode_printciterefentry(struct format *f, struct pnode
 }  }
   
 static void  static void
 pnode_printrefmeta(struct format *f, struct pnode *n)  
 {  
         struct pnode    *nc, *title, *manvol;  
   
         title = manvol = NULL;  
         TAILQ_FOREACH(nc, &n->childq, child) {  
                 if (nc->node == NODE_MANVOLNUM)  
                         manvol = nc;  
                 else if (nc->node == NODE_REFENTRYTITLE)  
                         title = nc;  
         }  
         macro_close(f);  
         macro_open(f, "Dt");  
         if (title == NULL)  
                 macro_addarg(f, "UNKNOWN", ARG_SPACE);  
         else  
                 macro_addnode(f, title, ARG_SPACE | ARG_SINGLE | ARG_UPPER);  
         if (manvol == NULL)  
                 macro_addarg(f, "1", ARG_SPACE);  
         else  
                 macro_addnode(f, manvol, ARG_SPACE | ARG_SINGLE);  
         macro_close(f);  
         pnode_unlink(n);  
 }  
   
 static void  
 pnode_printfuncdef(struct format *f, struct pnode *n)  pnode_printfuncdef(struct format *f, struct pnode *n)
 {  {
         struct pnode    *nc;          struct pnode    *nc;
Line 658  pnode_printlink(struct format *f, struct pnode *n)
Line 632  pnode_printlink(struct format *f, struct pnode *n)
 }  }
   
 static void  static void
 pnode_printprologue(struct format *f, struct ptree *tree)  pnode_printprologue(struct format *f, struct pnode *root)
 {  {
         struct pnode    *refmeta;          struct pnode    *date, *refmeta, *name, *vol, *descr, *nc;
           const char      *sname;
   
         refmeta = tree->root == NULL ? NULL :          /* Collect information. */
             pnode_findfirst(tree->root, NODE_REFMETA);  
   
         macro_line(f, "Dd $Mdocdate" "$");          if ((date = pnode_takefirst(root, NODE_PUBDATE)) == NULL)
         if (refmeta == NULL) {                  date = pnode_takefirst(root, NODE_DATE);
                 macro_open(f, "Dt");  
                 macro_addarg(f,          name = vol = NULL;
                     pnode_getattr_raw(tree->root, ATTRKEY_ID, "UNKNOWN"),          if ((refmeta = pnode_takefirst(root, NODE_REFMETA)) != NULL) {
                     ARG_SPACE | ARG_SINGLE | ARG_UPPER);                  TAILQ_FOREACH(nc, &refmeta->childq, child) {
                 macro_addarg(f, "1", ARG_SPACE);                          switch (nc->node) {
                 macro_close(f);                          case NODE_REFENTRYTITLE:
                                   name = nc;
                                   break;
                           case NODE_MANVOLNUM:
                                   vol = nc;
                                   break;
                           default:
                                   break;
                           }
                   }
           }
   
           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);
           else
                   descr = NULL;
   
           /* Print prologue. */
   
           if (date == NULL)
                   macro_line(f, "Dd $Mdocdate" "$");
           else
                   macro_nodeline(f, "Dd", date, 0);
   
           macro_open(f, "Dt");
           if (name == NULL) {
                   sname = pnode_getattr_raw(root, ATTRKEY_ID, "UNKNOWN");
                   macro_addarg(f, sname, ARG_SPACE | ARG_SINGLE | ARG_UPPER);
         } else          } else
                 pnode_printrefmeta(f, refmeta);                  macro_addnode(f, name, ARG_SPACE | ARG_SINGLE | ARG_UPPER);
           if (vol == NULL)
                   macro_addarg(f, "1", ARG_SPACE);
           else
                   macro_addnode(f, vol, ARG_SPACE | ARG_SINGLE);
   
         macro_line(f, "Os");          macro_line(f, "Os");
   
           if (descr != NULL) {
                   macro_line(f, "Sh NAME");
                   if (name == NULL)
                           macro_argline(f, "Nm", sname);
                   else
                           macro_nodeline(f, "Nm", name, ARG_SINGLE);
                   macro_nodeline(f, "Nd", descr, 0);
           }
   
           /* Clean up. */
   
           pnode_unlink(date);
           pnode_unlink(refmeta);
           pnode_unlink(descr);
 }  }
   
 /*  /*
Line 876  pnode_print(struct format *f, struct pnode *n)
Line 899  pnode_print(struct format *f, struct pnode *n)
         case NODE_BLOCKQUOTE:          case NODE_BLOCKQUOTE:
                 macro_line(f, "Bd -ragged -offset indent");                  macro_line(f, "Bd -ragged -offset indent");
                 break;                  break;
         case NODE_BOOKINFO:  
                 macro_line(f, "Sh NAME");  
                 break;  
         case NODE_CITEREFENTRY:          case NODE_CITEREFENTRY:
                 pnode_printciterefentry(f, n);                  pnode_printciterefentry(f, n);
                 break;                  break;
Line 1046  pnode_print(struct format *f, struct pnode *n)
Line 1066  pnode_print(struct format *f, struct pnode *n)
                 pnode_printtgroup(f, n);                  pnode_printtgroup(f, n);
                 break;                  break;
         case NODE_TITLE:          case NODE_TITLE:
                 if (n->parent != NULL &&  
                     n->parent->node == NODE_BOOKINFO) {  
                         macro_open(f, "Nd");  
                         break;  
                 }  
                 pnode_printpara(f, n);                  pnode_printpara(f, n);
                 macro_nodeline(f, "Sy", n, 0);                  macro_nodeline(f, "Sy", n, 0);
                 pnode_unlinksub(n);                  pnode_unlinksub(n);
Line 1148  pnode_print(struct format *f, struct pnode *n)
Line 1163  pnode_print(struct format *f, struct pnode *n)
         case NODE_SYNOPSIS:          case NODE_SYNOPSIS:
                 macro_line(f, "Ed");                  macro_line(f, "Ed");
                 break;                  break;
         case NODE_TITLE:  
                 if (n->parent != NULL &&  
                     n->parent->node == NODE_BOOKINFO)  
                         macro_line(f, "Sh AUTHORS");  
                 break;  
         default:          default:
                 break;                  break;
         }          }
Line 1166  ptree_print_mdoc(struct ptree *tree)
Line 1176  ptree_print_mdoc(struct ptree *tree)
   
         formatter.level = 0;          formatter.level = 0;
         formatter.linestate = LINE_NEW;          formatter.linestate = LINE_NEW;
         pnode_printprologue(&formatter, tree);          pnode_printprologue(&formatter, tree->root);
         pnode_print(&formatter, tree->root);          pnode_print(&formatter, tree->root);
         if (formatter.linestate != LINE_NEW)          if (formatter.linestate != LINE_NEW)
                 putchar('\n');                  putchar('\n');

Legend:
Removed from v.1.115  
changed lines
  Added in v.1.116

CVSweb