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

Diff for /docbook2mdoc/docbook2mdoc.c between version 1.41 and 1.43

version 1.41, 2014/10/12 15:34:44 version 1.43, 2014/10/19 19:11:29
Line 37  struct parse {
Line 37  struct parse {
         enum nodeid      node; /* current (NODE_ROOT if pre-tree) */          enum nodeid      node; /* current (NODE_ROOT if pre-tree) */
         const char      *fname; /* filename */          const char      *fname; /* filename */
         int              stop; /* should we stop now? */          int              stop; /* should we stop now? */
   #define PARSE_EQN        1
           unsigned int     flags; /* document-wide flags */
         struct pnode    *root; /* root of parse tree */          struct pnode    *root; /* root of parse tree */
         struct pnode    *cur; /* current node in tree */          struct pnode    *cur; /* current node in tree */
         char            *b; /* nil-terminated buffer for pre-print */          char            *b; /* nil-terminated buffer for pre-print */
Line 305  xml_elem_start(void *arg, const XML_Char *name, const 
Line 307  xml_elem_start(void *arg, const XML_Char *name, const 
                 ps->node = ps->cur->node;                  ps->node = ps->cur->node;
         }          }
   
   
         for (node = 0; node < NODE__MAX; node++)          for (node = 0; node < NODE__MAX; node++)
                 if (NULL == nodes[node].name)                  if (NULL == nodes[node].name)
                         continue;                          continue;
Line 341  xml_elem_start(void *arg, const XML_Char *name, const 
Line 342  xml_elem_start(void *arg, const XML_Char *name, const 
                 return;                  return;
         }          }
   
           if (NODE_INLINEEQUATION == node)
                   ps->flags |= PARSE_EQN;
   
         if (NULL == (dat = calloc(1, sizeof(struct pnode)))) {          if (NULL == (dat = calloc(1, sizeof(struct pnode)))) {
                 perror(NULL);                  perror(NULL);
                 exit(EXIT_FAILURE);                  exit(EXIT_FAILURE);
Line 917  pnode_printmath(struct parse *p, struct pnode *pn)
Line 921  pnode_printmath(struct parse *p, struct pnode *pn)
   
         switch (pn->node) {          switch (pn->node) {
         case (NODE_MML_MSUP):          case (NODE_MML_MSUP):
                 printf(" sup ");                  fputs(" sup ", stdout);
                 break;                  break;
         case (NODE_MML_MFRAC):          case (NODE_MML_MFRAC):
                 printf(" over ");                  fputs(" over ", stdout);
                 break;                  break;
         case (NODE_MML_MSUB):          case (NODE_MML_MSUB):
                 printf(" sub ");                  fputs(" sub ", stdout);
                 break;                  break;
         default:          default:
                 break;                  break;
Line 1066  pnode_printprologue(struct parse *p, struct pnode *pn)
Line 1070  pnode_printprologue(struct parse *p, struct pnode *pn)
                 puts(".Dt UNKNOWN 1");                  puts(".Dt UNKNOWN 1");
                 puts(".Os");                  puts(".Os");
         }          }
   
           if (PARSE_EQN & p->flags) {
                   puts(".EQ");
                   puts("delim $$");
                   puts(".EN");
           }
 }  }
   
   /*
    * We can have multiple <term> elements within a <varlistentry>, which
    * we should comma-separate as list headers.
    */
 static void  static void
 pnode_printvarlistentry(struct parse *p, struct pnode *pn)  pnode_printvarlistentry(struct parse *p, struct pnode *pn)
 {  {
         struct pnode    *pp;          struct pnode    *pp;
           int              first = 1;
   
         assert(p->newln);          assert(p->newln);
           fputs(".It", stdout);
           p->newln = 0;
   
         TAILQ_FOREACH(pp, &pn->childq, child)          TAILQ_FOREACH(pp, &pn->childq, child)
                 if (NODE_TERM == pp->node) {                  if (NODE_TERM == pp->node) {
                         assert(p->newln);                          if ( ! first)
                         fputs(".It", stdout);                                  putchar(',');
                         p->newln = 0;  
                         pnode_print(p, pp);                          pnode_print(p, pp);
                         pnode_unlink(pp);                          pnode_unlink(pp);
                         pnode_printmclose(p, 1);                          first = 0;
                         return;                  } else
                 }                          break;
   
         puts(".It");          putchar('\n');
         p->newln = 1;          p->newln = 1;
 }  }
   
Line 1260  pnode_print(struct parse *p, struct pnode *pn)
Line 1277  pnode_print(struct parse *p, struct pnode *pn)
                 pnode_printmopen(p);                  pnode_printmopen(p);
                 fputs("Fd", stdout);                  fputs("Fd", stdout);
                 break;                  break;
           case (NODE_INFORMALEQUATION):
                   if ( ! p->newln)
                           putchar('\n');
                   puts(".EQ");
                   p->newln = 0;
                   break;
           case (NODE_INLINEEQUATION):
                   fputc('$', stdout);
                   p->newln = 0;
                   break;
         case (NODE_ITEMIZEDLIST):          case (NODE_ITEMIZEDLIST):
                 assert(p->newln);                  assert(p->newln);
                 pnode_printlist(p, pn);                  pnode_printlist(p, pn);
Line 1273  pnode_print(struct parse *p, struct pnode *pn)
Line 1300  pnode_print(struct parse *p, struct pnode *pn)
                 pnode_printmopen(p);                  pnode_printmopen(p);
                 fputs("Li", stdout);                  fputs("Li", stdout);
                 break;                  break;
         case (NODE_MML_MATH):  
                 if ( ! p->newln)  
                         putchar('\n');  
                 puts(".EQ");  
                 p->newln = 0;  
                 break;  
         case (NODE_MML_MFENCED):          case (NODE_MML_MFENCED):
                 pnode_printmathfenced(p, pn);                  pnode_printmathfenced(p, pn);
                 pnode_unlinksub(pn);                  pnode_unlinksub(pn);
Line 1287  pnode_print(struct parse *p, struct pnode *pn)
Line 1308  pnode_print(struct parse *p, struct pnode *pn)
         case (NODE_MML_MI):          case (NODE_MML_MI):
         case (NODE_MML_MN):          case (NODE_MML_MN):
         case (NODE_MML_MO):          case (NODE_MML_MO):
                 putchar('{');                  if (TAILQ_EMPTY(&pn->childq))
                           break;
                   fputs(" { ", stdout);
                 break;                  break;
         case (NODE_MML_MFRAC):          case (NODE_MML_MFRAC):
         case (NODE_MML_MSUB):          case (NODE_MML_MSUB):
Line 1475  pnode_print(struct parse *p, struct pnode *pn)
Line 1498  pnode_print(struct parse *p, struct pnode *pn)
                 pnode_print(p, pp);                  pnode_print(p, pp);
   
         switch (pn->node) {          switch (pn->node) {
         case (NODE_MML_MATH):          case (NODE_INFORMALEQUATION):
                 if ( ! p->newln)                  if ( ! p->newln)
                         putchar('\n');                          putchar('\n');
                 puts(".EN");                  puts(".EN");
                 p->newln = 1;                  p->newln = 1;
                 break;                  break;
           case (NODE_INLINEEQUATION):
                   fputs("$ ", stdout);
                   p->newln = sv;
                   break;
         case (NODE_MML_MROW):          case (NODE_MML_MROW):
         case (NODE_MML_MI):          case (NODE_MML_MI):
         case (NODE_MML_MN):          case (NODE_MML_MN):
         case (NODE_MML_MO):          case (NODE_MML_MO):
                 putchar('}');                  if (TAILQ_EMPTY(&pn->childq))
                           break;
                   fputs(" } ", stdout);
                 break;                  break;
         case (NODE_APPLICATION):          case (NODE_APPLICATION):
         case (NODE_ARG):          case (NODE_ARG):

Legend:
Removed from v.1.41  
changed lines
  Added in v.1.43

CVSweb