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

Diff for /docbook2mdoc/docbook2mdoc.c between version 1.69 and 1.71

version 1.69, 2019/03/24 16:45:46 version 1.71, 2019/03/24 23:48:58
Line 711  macro_closepunct(struct parse *p, struct pnode *pn)
Line 711  macro_closepunct(struct parse *p, struct pnode *pn)
 }  }
   
 static void  static void
   print_text(struct parse *p, const char *word)
   {
           switch (p->linestate) {
           case LINE_NEW:
                   break;
           case LINE_TEXT:
                   putchar(' ');
                   break;
           case LINE_MACRO:
                   macro_close(p);
                   break;
           }
           fputs(word, stdout);
           p->linestate = LINE_TEXT;
   }
   
   static void
 pnode_printpara(struct parse *p, struct pnode *pn)  pnode_printpara(struct parse *p, struct pnode *pn)
 {  {
         struct pnode    *pp;          struct pnode    *pp;
Line 740  pnode_printpara(struct parse *p, struct pnode *pn)
Line 757  pnode_printpara(struct parse *p, struct pnode *pn)
 static void  static void
 pnode_printrefsynopsisdiv(struct parse *p, struct pnode *pn)  pnode_printrefsynopsisdiv(struct parse *p, struct pnode *pn)
 {  {
         struct pnode    *pp;          struct pnode    *pp, *pq;
   
         TAILQ_FOREACH(pp, &pn->childq, child)          TAILQ_FOREACH_SAFE(pp, &pn->childq, child, pq)
                 if (pp->node == NODE_TITLE) {                  if (pp->node == NODE_TITLE)
                         pnode_unlink(pp);                          pnode_unlink(pp);
                         return;  
                 }          macro_line(p, "Sh SYNOPSIS");
 }  }
   
 /*  /*
Line 850  pnode_printciterefentry(struct parse *p, struct pnode 
Line 867  pnode_printciterefentry(struct parse *p, struct pnode 
         else          else
                 macro_addnode(p, manvol, 0);                  macro_addnode(p, manvol, 0);
         macro_close(p);          macro_close(p);
           pnode_unlinksub(pn);
 }  }
   
 static void  static void
Line 874  pnode_printrefmeta(struct parse *p, struct pnode *pn)
Line 892  pnode_printrefmeta(struct parse *p, struct pnode *pn)
         else          else
                 macro_addnode(p, manvol, 0);                  macro_addnode(p, manvol, 0);
         macro_close(p);          macro_close(p);
           pnode_unlink(pn);
 }  }
   
 static void  static void
Line 944  pnode_printmathfenced(struct parse *p, struct pnode *p
Line 963  pnode_printmathfenced(struct parse *p, struct pnode *p
                 putchar(',');                  putchar(',');
                 pnode_print(p, pp);                  pnode_print(p, pp);
         }          }
   
         printf("right %s ", pnode_getattr_raw(pn, ATTRKEY_CLOSE, ")"));          printf("right %s ", pnode_getattr_raw(pn, ATTRKEY_CLOSE, ")"));
           pnode_unlinksub(pn);
 }  }
   
 /*  /*
Line 978  pnode_printmath(struct parse *p, struct pnode *pn)
Line 997  pnode_printmath(struct parse *p, struct pnode *pn)
   
         pp = TAILQ_NEXT(pp, child);          pp = TAILQ_NEXT(pp, child);
         pnode_print(p, pp);          pnode_print(p, pp);
           pnode_unlinksub(pn);
 }  }
   
 static void  static void
Line 999  pnode_printfuncprototype(struct parse *p, struct pnode
Line 1019  pnode_printfuncprototype(struct parse *p, struct pnode
                         pnode_printparamdef(p, pp);                          pnode_printparamdef(p, pp);
   
         macro_line(p, "Fc");          macro_line(p, "Fc");
           pnode_unlinksub(pn);
 }  }
   
 /*  /*
Line 1034  pnode_printarg(struct parse *p, struct pnode *pn)
Line 1055  pnode_printarg(struct parse *p, struct pnode *pn)
                 if (isrep && pp->node == NODE_TEXT)                  if (isrep && pp->node == NODE_TEXT)
                         macro_addarg(p, "...", 0);                          macro_addarg(p, "...", 0);
         }          }
           pnode_unlinksub(pn);
 }  }
   
 static void  static void
Line 1084  pnode_printgroup(struct parse *p, struct pnode *pn)
Line 1106  pnode_printgroup(struct parse *p, struct pnode *pn)
         }          }
         if (sv)          if (sv)
                 macro_close(p);                  macro_close(p);
           pnode_unlinksub(pn);
 }  }
   
 static void  static void
Line 1095  pnode_printprologue(struct parse *p, struct pnode *pn)
Line 1118  pnode_printprologue(struct parse *p, struct pnode *pn)
                 pnode_findfirst(p->root, NODE_REFMETA);                  pnode_findfirst(p->root, NODE_REFMETA);
   
         macro_line(p, "Dd $Mdocdate" "$");          macro_line(p, "Dd $Mdocdate" "$");
         if (pp != NULL) {          if (pp != NULL)
                 pnode_printrefmeta(p, pp);                  pnode_printrefmeta(p, pp);
                 pnode_unlink(pp);          else {
         } else {  
                 macro_open(p, "Dt");                  macro_open(p, "Dt");
                 macro_addarg(p,                  macro_addarg(p,
                     pnode_getattr_raw(p->root, ATTRKEY_ID, "UNKNOWN"), 0);                      pnode_getattr_raw(p->root, ATTRKEY_ID, "UNKNOWN"), 0);
Line 1109  pnode_printprologue(struct parse *p, struct pnode *pn)
Line 1131  pnode_printprologue(struct parse *p, struct pnode *pn)
   
         if (p->flags & PARSE_EQN) {          if (p->flags & PARSE_EQN) {
                 macro_line(p, "EQ");                  macro_line(p, "EQ");
                 puts("delim $$");                  print_text(p, "delim $$");
                 macro_line(p, "EN");                  macro_line(p, "EN");
         }          }
 }  }
Line 1129  pnode_printvarlistentry(struct parse *p, struct pnode 
Line 1151  pnode_printvarlistentry(struct parse *p, struct pnode 
                 if (pp->node != NODE_TERM)                  if (pp->node != NODE_TERM)
                         continue;                          continue;
                 if ( ! first)                  if ( ! first)
                         putchar(',');                          macro_addarg(p, ",", MACROLINE_NOWS);
                 pnode_print(p, pp);                  pnode_print(p, pp);
                 first = 0;                  first = 0;
         }          }
Line 1137  pnode_printvarlistentry(struct parse *p, struct pnode 
Line 1159  pnode_printvarlistentry(struct parse *p, struct pnode 
         TAILQ_FOREACH(pp, &pn->childq, child)          TAILQ_FOREACH(pp, &pn->childq, child)
                 if (pp->node != NODE_TERM)                  if (pp->node != NODE_TERM)
                         pnode_print(p, pp);                          pnode_print(p, pp);
           pnode_unlinksub(pn);
 }  }
   
 static void  static void
   pnode_printtitle(struct parse *p, struct pnode *pn)
   {
           struct pnode    *pp, *pq;
   
           TAILQ_FOREACH_SAFE(pp, &pn->childq, child, pq) {
                   if (pp->node == NODE_TITLE) {
                           pnode_printpara(p, pp);
                           pnode_print(p, pp);
                           pnode_unlink(pp);
                   }
           }
   }
   
   static void
 pnode_printrow(struct parse *p, struct pnode *pn)  pnode_printrow(struct parse *p, struct pnode *pn)
 {  {
         struct pnode    *pp;          struct pnode    *pp;
Line 1150  pnode_printrow(struct parse *p, struct pnode *pn)
Line 1187  pnode_printrow(struct parse *p, struct pnode *pn)
                 pnode_print(p, pp);                  pnode_print(p, pp);
         }          }
         macro_line(p, "El");          macro_line(p, "El");
           pnode_unlink(pn);
 }  }
   
 static void  static void
Line 1157  pnode_printtable(struct parse *p, struct pnode *pn)
Line 1195  pnode_printtable(struct parse *p, struct pnode *pn)
 {  {
         struct pnode    *pp;          struct pnode    *pp;
   
         TAILQ_FOREACH(pp, &pn->childq, child) {          pnode_printtitle(p, pn);
                 if (pp->node == NODE_TITLE) {  
                         pnode_printpara(p, pp);  
                         pnode_print(p, pp);  
                         pnode_unlink(pp);  
                 }  
         }  
         macro_line(p, "Bl -ohang");          macro_line(p, "Bl -ohang");
         while ((pp = pnode_findfirst(pn, NODE_ROW)) != NULL) {          while ((pp = pnode_findfirst(pn, NODE_ROW)) != NULL) {
                 macro_line(p, "It Table Row");                  macro_line(p, "It Table Row");
                 pnode_printrow(p, pp);                  pnode_printrow(p, pp);
                 pnode_unlink(pp);  
         }          }
         macro_line(p, "El");          macro_line(p, "El");
           pnode_unlinksub(pn);
 }  }
   
 static void  static void
Line 1178  pnode_printlist(struct parse *p, struct pnode *pn)
Line 1210  pnode_printlist(struct parse *p, struct pnode *pn)
 {  {
         struct pnode    *pp;          struct pnode    *pp;
   
         TAILQ_FOREACH(pp, &pn->childq, child) {          pnode_printtitle(p, pn);
                 if (pp->node == NODE_TITLE) {  
                         pnode_printpara(p, pp);  
                         pnode_print(p, pp);  
                         pnode_unlink(pp);  
                 }  
         }  
         macro_argline(p, "Bl",          macro_argline(p, "Bl",
             pn->node == NODE_ORDEREDLIST ? "-enum" : "-bullet");              pn->node == NODE_ORDEREDLIST ? "-enum" : "-bullet");
         TAILQ_FOREACH(pp, &pn->childq, child) {          TAILQ_FOREACH(pp, &pn->childq, child) {
Line 1192  pnode_printlist(struct parse *p, struct pnode *pn)
Line 1218  pnode_printlist(struct parse *p, struct pnode *pn)
                 pnode_print(p, pp);                  pnode_print(p, pp);
         }          }
         macro_line(p, "El");          macro_line(p, "El");
           pnode_unlinksub(pn);
 }  }
   
 static void  static void
Line 1199  pnode_printvariablelist(struct parse *p, struct pnode 
Line 1226  pnode_printvariablelist(struct parse *p, struct pnode 
 {  {
         struct pnode    *pp;          struct pnode    *pp;
   
         TAILQ_FOREACH(pp, &pn->childq, child) {          pnode_printtitle(p, pn);
                 if (pp->node == NODE_TITLE) {  
                         pnode_printpara(p, pp);  
                         pnode_print(p, pp);  
                         pnode_unlink(pp);  
                 }  
         }  
         macro_line(p, "Bl -tag -width Ds");          macro_line(p, "Bl -tag -width Ds");
         TAILQ_FOREACH(pp, &pn->childq, child) {          TAILQ_FOREACH(pp, &pn->childq, child) {
                 if (pp->node == NODE_VARLISTENTRY)                  if (pp->node == NODE_VARLISTENTRY)
Line 1214  pnode_printvariablelist(struct parse *p, struct pnode 
Line 1235  pnode_printvariablelist(struct parse *p, struct pnode 
                         macro_nodeline(p, "It", pp);                          macro_nodeline(p, "It", pp);
         }          }
         macro_line(p, "El");          macro_line(p, "El");
           pnode_unlinksub(pn);
 }  }
   
 /*  /*
Line 1245  pnode_print(struct parse *p, struct pnode *pn)
Line 1267  pnode_print(struct parse *p, struct pnode *pn)
                 return;                  return;
         case NODE_ARG:          case NODE_ARG:
                 pnode_printarg(p, pn);                  pnode_printarg(p, pn);
                 pnode_unlinksub(pn);  
                 break;                  break;
         case NODE_AUTHOR:          case NODE_AUTHOR:
                 macro_open(p, "An");                  macro_open(p, "An");
Line 1258  pnode_print(struct parse *p, struct pnode *pn)
Line 1279  pnode_print(struct parse *p, struct pnode *pn)
                 break;                  break;
         case NODE_CITEREFENTRY:          case NODE_CITEREFENTRY:
                 pnode_printciterefentry(p, pn);                  pnode_printciterefentry(p, pn);
                 pnode_unlinksub(pn);  
                 break;                  break;
         case NODE_CITETITLE:          case NODE_CITETITLE:
                 macro_open(p, "%T");                  macro_open(p, "%T");
Line 1273  pnode_print(struct parse *p, struct pnode *pn)
Line 1293  pnode_print(struct parse *p, struct pnode *pn)
                 macro_open(p, "Dv");                  macro_open(p, "Dv");
                 break;                  break;
         case NODE_EDITOR:          case NODE_EDITOR:
                 if (p->linestate != LINE_NEW)                  print_text(p, "editor:");
                         putchar('\n');  
                 puts("editor:");  
                 p->linestate = LINE_TEXT;  
                 macro_open(p, "An");                  macro_open(p, "An");
                 break;                  break;
         case NODE_EMAIL:          case NODE_EMAIL:
Line 1297  pnode_print(struct parse *p, struct pnode *pn)
Line 1314  pnode_print(struct parse *p, struct pnode *pn)
                 break;                  break;
         case NODE_FUNCPROTOTYPE:          case NODE_FUNCPROTOTYPE:
                 pnode_printfuncprototype(p, pn);                  pnode_printfuncprototype(p, pn);
                 pnode_unlinksub(pn);  
                 break;                  break;
         case NODE_FUNCSYNOPSISINFO:          case NODE_FUNCSYNOPSISINFO:
                 macro_open(p, "Fd");                  macro_open(p, "Fd");
Line 1314  pnode_print(struct parse *p, struct pnode *pn)
Line 1330  pnode_print(struct parse *p, struct pnode *pn)
                 break;                  break;
         case NODE_ITEMIZEDLIST:          case NODE_ITEMIZEDLIST:
                 pnode_printlist(p, pn);                  pnode_printlist(p, pn);
                 pnode_unlinksub(pn);  
                 break;                  break;
         case NODE_GROUP:          case NODE_GROUP:
                 pnode_printgroup(p, pn);                  pnode_printgroup(p, pn);
                 pnode_unlinksub(pn);  
                 break;                  break;
         case NODE_KEYSYM:          case NODE_KEYSYM:
                 macro_open(p, "Sy");                  macro_open(p, "Sy");
Line 1341  pnode_print(struct parse *p, struct pnode *pn)
Line 1355  pnode_print(struct parse *p, struct pnode *pn)
                 break;                  break;
         case NODE_MML_MFENCED:          case NODE_MML_MFENCED:
                 pnode_printmathfenced(p, pn);                  pnode_printmathfenced(p, pn);
                 pnode_unlinksub(pn);  
                 break;                  break;
         case NODE_MML_MROW:          case NODE_MML_MROW:
         case NODE_MML_MI:          case NODE_MML_MI:
Line 1355  pnode_print(struct parse *p, struct pnode *pn)
Line 1368  pnode_print(struct parse *p, struct pnode *pn)
         case NODE_MML_MSUB:          case NODE_MML_MSUB:
         case NODE_MML_MSUP:          case NODE_MML_MSUP:
                 pnode_printmath(p, pn);                  pnode_printmath(p, pn);
                 pnode_unlinksub(pn);  
                 break;                  break;
         case NODE_OPTION:          case NODE_OPTION:
                 macro_open(p, "Fl");                  macro_open(p, "Fl");
                 break;                  break;
         case NODE_ORDEREDLIST:          case NODE_ORDEREDLIST:
                 pnode_printlist(p, pn);                  pnode_printlist(p, pn);
                 pnode_unlinksub(pn);  
                 break;                  break;
         case NODE_PARA:          case NODE_PARA:
                 pnode_printpara(p, pn);                  pnode_printpara(p, pn);
Line 1391  pnode_print(struct parse *p, struct pnode *pn)
Line 1402  pnode_print(struct parse *p, struct pnode *pn)
                 break;                  break;
         case NODE_REFNAME:          case NODE_REFNAME:
                 /* Suppress non-text children... */                  /* Suppress non-text children... */
                 macro_nodeline(p, "Nm", pn);                  macro_open(p, "Nm");
                   macro_addnode(p, pn, 0);
                 pnode_unlinksub(pn);                  pnode_unlinksub(pn);
                 break;                  break;
         case NODE_REFNAMEDIV:          case NODE_REFNAMEDIV:
Line 1402  pnode_print(struct parse *p, struct pnode *pn)
Line 1414  pnode_print(struct parse *p, struct pnode *pn)
                 break;                  break;
         case NODE_REFSYNOPSISDIV:          case NODE_REFSYNOPSISDIV:
                 pnode_printrefsynopsisdiv(p, pn);                  pnode_printrefsynopsisdiv(p, pn);
                 macro_line(p, "Sh SYNOPSIS");  
                 break;                  break;
         case NODE_PREFACE:          case NODE_PREFACE:
         case NODE_SECTION:          case NODE_SECTION:
Line 1427  pnode_print(struct parse *p, struct pnode *pn)
Line 1438  pnode_print(struct parse *p, struct pnode *pn)
         case NODE_TABLE:          case NODE_TABLE:
         case NODE_INFORMALTABLE:          case NODE_INFORMALTABLE:
                 pnode_printtable(p, pn);                  pnode_printtable(p, pn);
                 pnode_unlinksub(pn);  
                 break;                  break;
         case NODE_TEXT:          case NODE_TEXT:
                 bufclear(p);                  bufclear(p);
Line 1486  pnode_print(struct parse *p, struct pnode *pn)
Line 1496  pnode_print(struct parse *p, struct pnode *pn)
                 break;                  break;
         case NODE_VARIABLELIST:          case NODE_VARIABLELIST:
                 pnode_printvariablelist(p, pn);                  pnode_printvariablelist(p, pn);
                 pnode_unlinksub(pn);  
                 break;                  break;
         case NODE_VARLISTENTRY:          case NODE_VARLISTENTRY:
                 pnode_printvarlistentry(p, pn);                  pnode_printvarlistentry(p, pn);
                 pnode_unlinksub(pn);  
                 break;                  break;
         case NODE_VARNAME:          case NODE_VARNAME:
                 macro_open(p, "Va");                  macro_open(p, "Va");
Line 1566  pnode_print(struct parse *p, struct pnode *pn)
Line 1574  pnode_print(struct parse *p, struct pnode *pn)
                     pn->parent->node == NODE_REFNAMEDIV &&                      pn->parent->node == NODE_REFNAMEDIV &&
                     TAILQ_NEXT(pn, child) != NULL &&                      TAILQ_NEXT(pn, child) != NULL &&
                     TAILQ_NEXT(pn, child)->node == NODE_REFNAME)                      TAILQ_NEXT(pn, child)->node == NODE_REFNAME)
                         fputs(" ,", stdout);                          macro_addarg(p, ",", 0);
                 if (sv == LINE_NEW)                  if (sv == LINE_NEW)
                         macro_close(p);                          macro_close(p);
                 break;                  break;

Legend:
Removed from v.1.69  
changed lines
  Added in v.1.71

CVSweb