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

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

version 1.116, 2019/04/13 13:06:35 version 1.117, 2019/04/13 15:13:31
Line 442  pnode_printarg(struct format *f, struct pnode *n)
Line 442  pnode_printarg(struct format *f, struct pnode *n)
                         f->flags |= FMT_IMPL;                          f->flags |= FMT_IMPL;
                 }                  }
         }          }
   
         TAILQ_FOREACH(nc, &n->childq, child) {          TAILQ_FOREACH(nc, &n->childq, child) {
                 if (nc->node == NODE_TEXT)                  if (nc->node == NODE_TEXT)
                         macro_open(f, "Ar");                          macro_open(f, "Ar");
                 pnode_print(f, nc);                  pnode_print(f, nc);
                 if (isrep && nc->node == NODE_TEXT)  
                         macro_addarg(f, "...", ARG_SPACE);  
         }          }
           if (isrep && f->linestate == LINE_MACRO)
                   macro_addarg(f, "...", ARG_SPACE);
         if (isop) {          if (isop) {
                 if (was_impl)                  if (was_impl)
                         macro_open(f, "Oc");                          macro_open(f, "Oc");
Line 462  pnode_printarg(struct format *f, struct pnode *n)
Line 461  pnode_printarg(struct format *f, struct pnode *n)
 static void  static void
 pnode_printgroup(struct format *f, struct pnode *n)  pnode_printgroup(struct format *f, struct pnode *n)
 {  {
         struct pnode    *nc, *nn;          struct pnode    *nc;
         struct pattr    *a;          struct pattr    *a;
         int              isop, sv;          int              bar, isop, isrep, was_impl;
   
         isop = 1;          isop = 1;
         TAILQ_FOREACH(a, &n->attrq, child)          isrep = was_impl = 0;
           TAILQ_FOREACH(a, &n->attrq, child) {
                 if (a->key == ATTRKEY_CHOICE &&                  if (a->key == ATTRKEY_CHOICE &&
                     (a->val == ATTRVAL_PLAIN || a->val == ATTRVAL_REQ)) {                      (a->val == ATTRVAL_PLAIN || a->val == ATTRVAL_REQ))
                         isop = 0;                          isop = 0;
                         break;                  else if (a->key == ATTRKEY_REP && a->val == ATTRVAL_REPEAT)
                           isrep = 1;
           }
           if (isop) {
                   if (f->flags & FMT_IMPL) {
                           was_impl = 1;
                           macro_open(f, "Oo");
                   } else {
                           macro_open(f, "Op");
                           f->flags |= FMT_IMPL;
                 }                  }
           } else if (isrep) {
         /*                  if (f->flags & FMT_IMPL) {
          * Make sure we're on a macro line.                          was_impl = 1;
          * This will prevent pnode_print() for putting us on a                          macro_open(f, "Bro");
          * subsequent line.                  } else {
          */                          macro_open(f, "Brq");
         sv = f->linestate == LINE_NEW;                          f->flags |= FMT_IMPL;
         if (isop)                  }
                 macro_open(f, "Op");          }
         else if (sv)          bar = 0;
                 macro_open(f, "No");  
         f->flags |= FMT_IMPL;  
   
         /*  
          * Keep on printing text separated by the vertical bar as long  
          * as we're within the same origin node as the group.  
          * This is kind of a nightmare.  
          * Eh, DocBook...  
          * FIXME: if there's a "Fl", we don't cut off the leading "-"  
          * like we do in pnode_print().  
          */  
         TAILQ_FOREACH(nc, &n->childq, child) {          TAILQ_FOREACH(nc, &n->childq, child) {
                 pnode_print(f, nc);                  if (bar && f->linestate == LINE_MACRO)
                 nn = TAILQ_NEXT(nc, child);  
                 while (nn != NULL) {  
                         if (nc->node != nn->node)  
                                 break;  
                         macro_addarg(f, "|", ARG_SPACE);                          macro_addarg(f, "|", ARG_SPACE);
                         macro_addnode(f, nn, ARG_SPACE);                  pnode_print(f, nc);
                         nc = nn;                  bar = 1;
                         nn = TAILQ_NEXT(nn, child);  
                 }  
         }          }
         if (sv)          if (isop) {
                 macro_close(f);                  if (was_impl)
         f->flags &= ~FMT_IMPL;                          macro_open(f, "Oc");
                   else
                           f->flags &= ~FMT_IMPL;
           } else if (isrep) {
                   if (was_impl)
                           macro_open(f, "Brc");
                   else
                           f->flags &= ~FMT_IMPL;
           }
           if (isrep && f->linestate == LINE_MACRO)
                   macro_addarg(f, "...", ARG_SPACE);
         pnode_unlinksub(n);          pnode_unlinksub(n);
 }  }
   

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

CVSweb