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

Diff for /docbook2mdoc/docbook2mdoc.c between version 1.51 and 1.54

version 1.51, 2019/03/22 16:14:52 version 1.54, 2019/03/22 16:32:34
Line 45  struct parse {
Line 45  struct parse {
         char            *b; /* NUL-terminated buffer for pre-print */          char            *b; /* NUL-terminated buffer for pre-print */
         size_t           bsz; /* current length of b */          size_t           bsz; /* current length of b */
         size_t           mbsz; /* max bsz allocation */          size_t           mbsz; /* max bsz allocation */
           int              level; /* header level, starting at 1 */
         int              newln; /* output: are we on a fresh line */          int              newln; /* output: are we on a fresh line */
 };  };
   
Line 689  pnode_printmclosepunct(struct parse *p, struct pnode *
Line 690  pnode_printmclosepunct(struct parse *p, struct pnode *
         p->newln = 1;          p->newln = 1;
 }  }
   
   static void
   pnode_printpara(struct parse *p, struct pnode *pn)
   {
           struct pnode    *pp;
   
           assert(p->newln);
           if (NULL == pn->parent || NODE_LISTITEM == pn->parent->node)
                   return;
   
           pp = TAILQ_PREV(pn, pnodeq, child);
           if (NULL == pp)
                   pp = pn->parent;
           switch (pp->node) {
           case (NODE_CHAPTER):
           case (NODE_PREFACE):
           case (NODE_REFSECT1):
           case (NODE_REFSECT2):
           case (NODE_REFSECT3):
           case (NODE_REFSECTION):
           case (NODE_SECT1):
           case (NODE_SECT2):
           case (NODE_SECTION):
                   if (2 > p->level)
                           return;
                   break;
           default:
                   break;
           }
           puts(".Pp");
   }
   
 /*  /*
  * If the SYNOPSIS macro has a superfluous title, kill it.   * If the SYNOPSIS macro has a superfluous title, kill it.
  */   */
Line 711  static void
Line 743  static void
 pnode_printrefsect(struct parse *p, struct pnode *pn)  pnode_printrefsect(struct parse *p, struct pnode *pn)
 {  {
         struct pnode    *pp;          struct pnode    *pp;
           const char      *title;
           int              flags, level;
   
           level = ++p->level;
           flags = 1 == level ? MACROLINE_UPPER : 0;
           if (3 > level) {
                   switch (pn->node) {
                   case (NODE_CAUTION):
                   case (NODE_NOTE):
                   case (NODE_TIP):
                   case (NODE_WARNING):
                           level = 3;
                           break;
                   default:
                           break;
                   }
           }
   
         TAILQ_FOREACH(pp, &pn->childq, child)          TAILQ_FOREACH(pp, &pn->childq, child)
                 if (NODE_TITLE == pp->node)                  if (NODE_TITLE == pp->node)
                         break;                          break;
   
         switch (pn->node) {          if (NULL == pp) {
         case (NODE_REFSECT1):                  switch (pn->node) {
                 /* FALLTHROUGH */                  case (NODE_PREFACE):
         case (NODE_SECT1):                          title = "Preface";
                 /* FALLTHROUGH */                          break;
         case (NODE_CHAPTER):                  case (NODE_CAUTION):
                           title = "Caution";
                           break;
                   case (NODE_NOTE):
                           title = "Note";
                           break;
                   case (NODE_TIP):
                           title = "Tip";
                           break;
                   case (NODE_WARNING):
                           title = "Warning";
                           break;
                   default:
                           title = "Unknown";
                           break;
                   }
           }
   
           switch (level) {
           case (1):
                 fputs(".Sh", stdout);                  fputs(".Sh", stdout);
                 break;                  break;
         case (NODE_REFSECT2):          case (2):
                 /* FALLTHROUGH */  
         case (NODE_SECT2):  
                 fputs(".Ss", stdout);                  fputs(".Ss", stdout);
                 break;                  break;
         case (NODE_REFSECT3):          default:
                 puts(".Pp");                  pnode_printpara(p, pn);
                 fputs(".Sy", stdout);                  fputs(".Sy", stdout);
                 break;                  break;
         case (NODE_NOTE):  
                 /* FALLTHROUGH */  
         case (NODE_REFSECTION):  
                 /* FALLTHROUGH */  
         case (NODE_TIP):  
                 /* FALLTHROUGH */  
         case (NODE_CAUTION):  
                 /* FALLTHROUGH */  
         case (NODE_WARNING):  
                 puts(".Pp");  
                 if (NULL == pp)  
                         return;  
                 fputs(".Em", stdout);  
                 break;  
         default:  
                 break;  
         }          }
   
         p->newln = 0;  
   
         if (NULL != pp) {          if (NULL != pp) {
                 pnode_printmacrolinetext(p, pp,                  p->newln = 0;
                         NODE_REFSECT1 == pn->node || NODE_SECT1 == pn->node ?                  pnode_printmacrolinetext(p, pp, flags);
                         MACROLINE_UPPER : 0);  
                 pnode_printmclose(p, 1);                  pnode_printmclose(p, 1);
                 pnode_unlink(pp);                  pnode_unlink(pp);
         } else {          } else
                 puts(NODE_REFSECT1 == pn->node || NODE_SECT1 == pn->node ?                  printf(" %s\n", title);
                         "UNKNOWN" : "unknown");  
                 p->newln = 1;  
         }  
 }  }
   
 /*  /*
Line 1148  pnode_printtable(struct parse *p, struct pnode *pn)
Line 1192  pnode_printtable(struct parse *p, struct pnode *pn)
         assert(p->newln);          assert(p->newln);
         TAILQ_FOREACH(pp, &pn->childq, child)          TAILQ_FOREACH(pp, &pn->childq, child)
                 if (NODE_TITLE == pp->node) {                  if (NODE_TITLE == pp->node) {
                         puts(".Pp");                          pnode_printpara(p, pp);
                         pnode_print(p, pp);                          pnode_print(p, pp);
                         pnode_unlink(pp);                          pnode_unlink(pp);
                 }                  }
Line 1172  pnode_printlist(struct parse *p, struct pnode *pn)
Line 1216  pnode_printlist(struct parse *p, struct pnode *pn)
         assert(p->newln);          assert(p->newln);
         TAILQ_FOREACH(pp, &pn->childq, child)          TAILQ_FOREACH(pp, &pn->childq, child)
                 if (NODE_TITLE == pp->node) {                  if (NODE_TITLE == pp->node) {
                         puts(".Pp");                          pnode_printpara(p, pp);
                         pnode_print(p, pp);                          pnode_print(p, pp);
                         pnode_unlink(pp);                          pnode_unlink(pp);
                 }                  }
Line 1181  pnode_printlist(struct parse *p, struct pnode *pn)
Line 1225  pnode_printlist(struct parse *p, struct pnode *pn)
         if (NODE_ORDEREDLIST == pn->node)          if (NODE_ORDEREDLIST == pn->node)
                 puts(".Bl -enum");                  puts(".Bl -enum");
         else          else
                 puts(".Bl -item");                  puts(".Bl -bullet");
   
         TAILQ_FOREACH(pp, &pn->childq, child) {          TAILQ_FOREACH(pp, &pn->childq, child) {
                 assert(p->newln);                  assert(p->newln);
Line 1201  pnode_printvariablelist(struct parse *p, struct pnode 
Line 1245  pnode_printvariablelist(struct parse *p, struct pnode 
         assert(p->newln);          assert(p->newln);
         TAILQ_FOREACH(pp, &pn->childq, child)          TAILQ_FOREACH(pp, &pn->childq, child)
                 if (NODE_TITLE == pp->node) {                  if (NODE_TITLE == pp->node) {
                         puts(".Pp");                          pnode_printpara(p, pp);
                         pnode_print(p, pp);                          pnode_print(p, pp);
                         pnode_unlink(pp);                          pnode_unlink(pp);
                 }                  }
Line 1367  pnode_print(struct parse *p, struct pnode *pn)
Line 1411  pnode_print(struct parse *p, struct pnode *pn)
                 pnode_unlinksub(pn);                  pnode_unlinksub(pn);
                 break;                  break;
         case (NODE_PARA):          case (NODE_PARA):
                 assert(p->newln);                  pnode_printpara(p, pn);
                 if (NULL != pn->parent &&  
                         NODE_LISTITEM == pn->parent->node)  
                         break;  
                 puts(".Pp");  
                 break;                  break;
         case (NODE_PARAMETER):          case (NODE_PARAMETER):
                 /* Suppress non-text children... */                  /* Suppress non-text children... */
Line 1422  pnode_print(struct parse *p, struct pnode *pn)
Line 1462  pnode_print(struct parse *p, struct pnode *pn)
                 pnode_printrefsynopsisdiv(p, pn);                  pnode_printrefsynopsisdiv(p, pn);
                 puts(".Sh SYNOPSIS");                  puts(".Sh SYNOPSIS");
                 break;                  break;
           case (NODE_PREFACE):
         case (NODE_REFSECT1):          case (NODE_REFSECT1):
                 /* FALLTHROUGH */  
         case (NODE_REFSECT2):          case (NODE_REFSECT2):
                 /* FALLTHROUGH */  
         case (NODE_REFSECT3):          case (NODE_REFSECT3):
                 /* FALLTHROUGH */  
         case (NODE_REFSECTION):          case (NODE_REFSECTION):
                 /* FALLTHROUGH */  
         case (NODE_CHAPTER):          case (NODE_CHAPTER):
                 /* FALLTHROUGH */  
         case (NODE_SECT1):          case (NODE_SECT1):
                 /* FALLTHROUGH */  
         case (NODE_SECT2):          case (NODE_SECT2):
                 /* FALLTHROUGH */          case (NODE_SECTION):
         case (NODE_NOTE):          case (NODE_NOTE):
                 /* FALLTHROUGH */  
         case (NODE_TIP):          case (NODE_TIP):
                 /* FALLTHROUGH */  
         case (NODE_CAUTION):          case (NODE_CAUTION):
                 /* FALLTHROUGH */  
         case (NODE_WARNING):          case (NODE_WARNING):
                 assert(p->newln);                  assert(p->newln);
                 pnode_printrefsect(p, pn);                  pnode_printrefsect(p, pn);
Line 1614  pnode_print(struct parse *p, struct pnode *pn)
Line 1646  pnode_print(struct parse *p, struct pnode *pn)
                         NODE_REFNAME == TAILQ_NEXT(pn, child)->node)                          NODE_REFNAME == TAILQ_NEXT(pn, child)->node)
                         fputs(" ,", stdout);                          fputs(" ,", stdout);
                 pnode_printmclose(p, sv);                  pnode_printmclose(p, sv);
                   break;
           case (NODE_PREFACE):
           case (NODE_REFSECT1):
           case (NODE_REFSECT2):
           case (NODE_REFSECT3):
           case (NODE_REFSECTION):
           case (NODE_CHAPTER):
           case (NODE_SECT1):
           case (NODE_SECT2):
           case (NODE_SECTION):
           case (NODE_NOTE):
           case (NODE_TIP):
           case (NODE_CAUTION):
           case (NODE_WARNING):
                   p->level--;
                 break;                  break;
         case (NODE_LITERALLAYOUT):          case (NODE_LITERALLAYOUT):
                 /* FALLTHROUGH */                  /* FALLTHROUGH */

Legend:
Removed from v.1.51  
changed lines
  Added in v.1.54

CVSweb