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

Diff for /mandoc/mdoc_man.c between version 1.84 and 1.88

version 1.84, 2015/02/01 23:10:35 version 1.88, 2015/02/17 20:37:17
Line 29 
Line 29 
 #include "mdoc.h"  #include "mdoc.h"
 #include "main.h"  #include "main.h"
   
 #define DECL_ARGS const struct mdoc_meta *meta, \  #define DECL_ARGS const struct mdoc_meta *meta, struct mdoc_node *n
                   const struct mdoc_node *n  
   
 struct  manact {  struct  manact {
         int             (*cond)(DECL_ARGS); /* DON'T run actions */          int             (*cond)(DECL_ARGS); /* DON'T run actions */
Line 186  static const struct manact manacts[MDOC_MAX + 1] = {
Line 185  static const struct manact manacts[MDOC_MAX + 1] = {
         { NULL, pre_bx, NULL, NULL, NULL }, /* Bx */          { NULL, pre_bx, NULL, NULL, NULL }, /* Bx */
         { NULL, pre_skip, NULL, NULL, NULL }, /* Db */          { NULL, pre_skip, NULL, NULL, NULL }, /* Db */
         { NULL, NULL, NULL, NULL, NULL }, /* Dc */          { NULL, NULL, NULL, NULL, NULL }, /* Dc */
         { cond_body, pre_enc, post_enc, "\\(lq", "\\(rq" }, /* Do */          { cond_body, pre_enc, post_enc, "\\(Lq", "\\(Rq" }, /* Do */
         { cond_body, pre_enc, post_enc, "\\(lq", "\\(rq" }, /* Dq */          { cond_body, pre_enc, post_enc, "\\(Lq", "\\(Rq" }, /* Dq */
         { NULL, NULL, NULL, NULL, NULL }, /* Ec */          { NULL, NULL, NULL, NULL, NULL }, /* Ec */
         { NULL, NULL, NULL, NULL, NULL }, /* Ef */          { NULL, NULL, NULL, NULL, NULL }, /* Ef */
         { NULL, pre_em, post_font, NULL, NULL }, /* Em */          { NULL, pre_em, post_font, NULL, NULL }, /* Em */
Line 548  void
Line 547  void
 man_mdoc(void *arg, const struct mdoc *mdoc)  man_mdoc(void *arg, const struct mdoc *mdoc)
 {  {
         const struct mdoc_meta *meta;          const struct mdoc_meta *meta;
         const struct mdoc_node *n;          struct mdoc_node *n;
   
         meta = mdoc_meta(mdoc);          meta = mdoc_meta(mdoc);
         n = mdoc_node(mdoc);          n = mdoc_node(mdoc)->child;
   
         printf(".TH \"%s\" \"%s\" \"%s\" \"%s\" \"%s\"\n",          printf(".TH \"%s\" \"%s\" \"%s\" \"%s\" \"%s\"\n",
             meta->title,              meta->title,
Line 567  man_mdoc(void *arg, const struct mdoc *mdoc)
Line 566  man_mdoc(void *arg, const struct mdoc *mdoc)
                 fontqueue.head = fontqueue.tail = mandoc_malloc(8);                  fontqueue.head = fontqueue.tail = mandoc_malloc(8);
                 *fontqueue.tail = 'R';                  *fontqueue.tail = 'R';
         }          }
         print_node(meta, n);          while (n != NULL) {
                   print_node(meta, n);
                   n = n->next;
           }
         putchar('\n');          putchar('\n');
 }  }
   
 static void  static void
 print_node(DECL_ARGS)  print_node(DECL_ARGS)
 {  {
         const struct mdoc_node  *sub;  
         const struct manact     *act;          const struct manact     *act;
           struct mdoc_node        *sub;
         int                      cond, do_sub;          int                      cond, do_sub;
   
         /*          /*
Line 588  print_node(DECL_ARGS)
Line 590  print_node(DECL_ARGS)
         act = NULL;          act = NULL;
         cond = 0;          cond = 0;
         do_sub = 1;          do_sub = 1;
           n->flags &= ~MDOC_ENDED;
   
         if (MDOC_TEXT == n->type) {          if (MDOC_TEXT == n->type) {
                 /*                  /*
Line 635  print_node(DECL_ARGS)
Line 638  print_node(DECL_ARGS)
                 (*act->post)(meta, n);                  (*act->post)(meta, n);
   
         if (ENDBODY_NOT != n->end)          if (ENDBODY_NOT != n->end)
                 n->pending->flags |= MDOC_ENDED;                  n->body->flags |= MDOC_ENDED;
   
         if (ENDBODY_NOSPACE == n->end)          if (ENDBODY_NOSPACE == n->end)
                 outflags &= ~(MMAN_spc | MMAN_nl);                  outflags &= ~(MMAN_spc | MMAN_nl);
Line 1140  pre_eo(DECL_ARGS)
Line 1143  pre_eo(DECL_ARGS)
             n->child->end != ENDBODY_NOT)              n->child->end != ENDBODY_NOT)
                 print_word("\\&");                  print_word("\\&");
         else if (n->end != ENDBODY_NOT ? n->child != NULL :          else if (n->end != ENDBODY_NOT ? n->child != NULL :
             n->parent->head->child != NULL &&              n->parent->head->child != NULL && (n->child != NULL ||
             (n->parent->body->child != NULL ||              (n->parent->tail != NULL && n->parent->tail->child != NULL)))
              n->parent->tail->child != NULL))  
                 outflags &= ~(MMAN_spc | MMAN_nl);                  outflags &= ~(MMAN_spc | MMAN_nl);
         return(1);          return(1);
 }  }
Line 1284  pre_fo(DECL_ARGS)
Line 1286  pre_fo(DECL_ARGS)
                 pre_syn(n);                  pre_syn(n);
                 break;                  break;
         case MDOC_HEAD:          case MDOC_HEAD:
                   if (n->child == NULL)
                           return(0);
                 if (MDOC_SYNPRETTY & n->flags)                  if (MDOC_SYNPRETTY & n->flags)
                         print_block(".HP 4n", MMAN_nl);                          print_block(".HP 4n", MMAN_nl);
                 font_push('B');                  font_push('B');
                 break;                  break;
         case MDOC_BODY:          case MDOC_BODY:
                 outflags &= ~MMAN_spc;                  outflags &= ~(MMAN_spc | MMAN_nl);
                 print_word("(");                  print_word("(");
                 outflags &= ~MMAN_spc;                  outflags &= ~MMAN_spc;
                 break;                  break;
Line 1305  post_fo(DECL_ARGS)
Line 1309  post_fo(DECL_ARGS)
   
         switch (n->type) {          switch (n->type) {
         case MDOC_HEAD:          case MDOC_HEAD:
                 font_pop();                  if (n->child != NULL)
                           font_pop();
                 break;                  break;
         case MDOC_BODY:          case MDOC_BODY:
                 post_fn(meta, n);                  post_fn(meta, n);

Legend:
Removed from v.1.84  
changed lines
  Added in v.1.88

CVSweb