[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.95 and 1.98

version 1.95, 2015/10/12 00:08:15 version 1.98, 2017/01/10 13:47:00
Line 1 
Line 1 
 /*      $Id$ */  /*      $Id$ */
 /*  /*
  * Copyright (c) 2011-2015 Ingo Schwarze <schwarze@openbsd.org>   * Copyright (c) 2011-2017 Ingo Schwarze <schwarze@openbsd.org>
  *   *
  * Permission to use, copy, modify, and distribute this software for any   * Permission to use, copy, modify, and distribute this software for any
  * purpose with or without fee is hereby granted, provided that the above   * purpose with or without fee is hereby granted, provided that the above
Line 575  print_node(DECL_ARGS)
Line 575  print_node(DECL_ARGS)
         struct roff_node        *sub;          struct roff_node        *sub;
         int                      cond, do_sub;          int                      cond, do_sub;
   
           if (n->flags & NODE_NOPRT)
                   return;
   
         /*          /*
          * Break the line if we were parsed subsequent the current node.           * Break the line if we were parsed subsequent the current node.
          * This makes the page structure be more consistent.           * This makes the page structure be more consistent.
          */           */
         if (MMAN_spc & outflags && MDOC_LINE & n->flags)          if (MMAN_spc & outflags && NODE_LINE & n->flags)
                 outflags |= MMAN_nl;                  outflags |= MMAN_nl;
   
         act = NULL;          act = NULL;
         cond = 0;          cond = 0;
         do_sub = 1;          do_sub = 1;
         n->flags &= ~MDOC_ENDED;          n->flags &= ~NODE_ENDED;
   
         if (n->type == ROFFT_TEXT) {          if (n->type == ROFFT_TEXT) {
                 /*                  /*
Line 598  print_node(DECL_ARGS)
Line 601  print_node(DECL_ARGS)
                         printf("\\&");                          printf("\\&");
                         outflags &= ~MMAN_spc;                          outflags &= ~MMAN_spc;
                 }                  }
                 if (outflags & MMAN_Sm && ! (n->flags & MDOC_DELIMC))                  if (outflags & MMAN_Sm && ! (n->flags & NODE_DELIMC))
                         outflags |= MMAN_spc_force;                          outflags |= MMAN_spc_force;
                 print_word(n->string);                  print_word(n->string);
                 if (outflags & MMAN_Sm && ! (n->flags & MDOC_DELIMO))                  if (outflags & MMAN_Sm && ! (n->flags & NODE_DELIMO))
                         outflags |= MMAN_spc;                          outflags |= MMAN_spc;
         } else {          } else {
                 /*                  /*
Line 610  print_node(DECL_ARGS)
Line 613  print_node(DECL_ARGS)
                  */                   */
                 act = manacts + n->tok;                  act = manacts + n->tok;
                 cond = act->cond == NULL || (*act->cond)(meta, n);                  cond = act->cond == NULL || (*act->cond)(meta, n);
                 if (cond && act->pre && (n->end == ENDBODY_NOT || n->nchild))                  if (cond && act->pre != NULL &&
                       (n->end == ENDBODY_NOT || n->child != NULL))
                         do_sub = (*act->pre)(meta, n);                          do_sub = (*act->pre)(meta, n);
         }          }
   
Line 626  print_node(DECL_ARGS)
Line 630  print_node(DECL_ARGS)
         /*          /*
          * Lastly, conditionally run the post-node handler.           * Lastly, conditionally run the post-node handler.
          */           */
         if (MDOC_ENDED & n->flags)          if (NODE_ENDED & n->flags)
                 return;                  return;
   
         if (cond && act->post)          if (cond && act->post)
                 (*act->post)(meta, n);                  (*act->post)(meta, n);
   
         if (ENDBODY_NOT != n->end)          if (ENDBODY_NOT != n->end)
                 n->body->flags |= MDOC_ENDED;                  n->body->flags |= NODE_ENDED;
   
         if (ENDBODY_NOSPACE == n->end)          if (ENDBODY_NOSPACE == n->end)
                 outflags &= ~(MMAN_spc | MMAN_nl);                  outflags &= ~(MMAN_spc | MMAN_nl);
Line 681  post_enc(DECL_ARGS)
Line 685  post_enc(DECL_ARGS)
 static int  static int
 pre_ex(DECL_ARGS)  pre_ex(DECL_ARGS)
 {  {
         int      nchild;          struct roff_node *nch;
   
         outflags |= MMAN_br | MMAN_nl;          outflags |= MMAN_br | MMAN_nl;
   
         print_word("The");          print_word("The");
   
         nchild = n->nchild;          for (nch = n->child; nch != NULL; nch = nch->next) {
         for (n = n->child; n; n = n->next) {  
                 font_push('B');                  font_push('B');
                 print_word(n->string);                  print_word(nch->string);
                 font_pop();                  font_pop();
   
                 if (n->next == NULL)                  if (nch->next == NULL)
                         continue;                          continue;
   
                 if (nchild > 2) {                  if (nch->prev != NULL || nch->next->next != NULL) {
                         outflags &= ~MMAN_spc;                          outflags &= ~MMAN_spc;
                         print_word(",");                          print_word(",");
                 }                  }
                 if (n->next->next == NULL)                  if (nch->next->next == NULL)
                         print_word("and");                          print_word("and");
         }          }
   
         if (nchild > 1)          if (n->child != NULL && n->child->next != NULL)
                 print_word("utilities exit\\~0");                  print_word("utilities exit\\~0");
         else          else
                 print_word("utility exits\\~0");                  print_word("utility exits\\~0");
Line 805  static void
Line 808  static void
 pre_syn(const struct roff_node *n)  pre_syn(const struct roff_node *n)
 {  {
   
         if (NULL == n->prev || ! (MDOC_SYNPRETTY & n->flags))          if (NULL == n->prev || ! (NODE_SYNPRETTY & n->flags))
                 return;                  return;
   
         if (n->prev->tok == n->tok &&          if (n->prev->tok == n->tok &&
Line 873  static int
Line 876  static int
 pre_aq(DECL_ARGS)  pre_aq(DECL_ARGS)
 {  {
   
         print_word(n->nchild == 1 &&          print_word(n->child != NULL && n->child->next == NULL &&
             n->child->tok == MDOC_Mt ?  "<" : "\\(la");              n->child->tok == MDOC_Mt ?  "<" : "\\(la");
         outflags &= ~MMAN_spc;          outflags &= ~MMAN_spc;
         return 1;          return 1;
Line 884  post_aq(DECL_ARGS)
Line 887  post_aq(DECL_ARGS)
 {  {
   
         outflags &= ~(MMAN_spc | MMAN_nl);          outflags &= ~(MMAN_spc | MMAN_nl);
         print_word(n->nchild == 1 &&          print_word(n->child != NULL && n->child->next == NULL &&
             n->child->tok == MDOC_Mt ?  ">" : "\\(ra");              n->child->tok == MDOC_Mt ?  ">" : "\\(ra");
 }  }
   
Line 1000  pre_bl(DECL_ARGS)
Line 1003  pre_bl(DECL_ARGS)
                 return 1;                  return 1;
         }          }
   
         if (n->nchild) {          if (n->child != NULL) {
                 print_line(".TS", MMAN_nl);                  print_line(".TS", MMAN_nl);
                 for (icol = 0; icol < n->norm->Bl.ncols; icol++)                  for (icol = 0; icol < n->norm->Bl.ncols; icol++)
                         print_word("l");                          print_word("l");
Line 1016  post_bl(DECL_ARGS)
Line 1019  post_bl(DECL_ARGS)
   
         switch (n->norm->Bl.type) {          switch (n->norm->Bl.type) {
         case LIST_column:          case LIST_column:
                 if (n->nchild)                  if (n->child != NULL)
                         print_line(".TE", 0);                          print_line(".TE", 0);
                 break;                  break;
         case LIST_enum:          case LIST_enum:
Line 1173  pre_fa(DECL_ARGS)
Line 1176  pre_fa(DECL_ARGS)
   
         while (NULL != n) {          while (NULL != n) {
                 font_push('I');                  font_push('I');
                 if (am_Fa || MDOC_SYNPRETTY & n->flags)                  if (am_Fa || NODE_SYNPRETTY & n->flags)
                         outflags |= MMAN_nbrword;                          outflags |= MMAN_nbrword;
                 print_node(meta, n);                  print_node(meta, n);
                 font_pop();                  font_pop();
Line 1214  pre_fl(DECL_ARGS)
Line 1217  pre_fl(DECL_ARGS)
   
         font_push('B');          font_push('B');
         print_word("\\-");          print_word("\\-");
         if (n->nchild)          if (n->child != NULL)
                 outflags &= ~MMAN_spc;                  outflags &= ~MMAN_spc;
         return 1;          return 1;
 }  }
Line 1224  post_fl(DECL_ARGS)
Line 1227  post_fl(DECL_ARGS)
 {  {
   
         font_pop();          font_pop();
         if ( ! (n->nchild ||          if (!(n->child != NULL ||
             n->next == NULL ||              n->next == NULL ||
             n->next->type == ROFFT_TEXT ||              n->next->type == ROFFT_TEXT ||
             n->next->flags & MDOC_LINE))              n->next->flags & NODE_LINE))
                 outflags &= ~MMAN_spc;                  outflags &= ~MMAN_spc;
 }  }
   
Line 1241  pre_fn(DECL_ARGS)
Line 1244  pre_fn(DECL_ARGS)
         if (NULL == n)          if (NULL == n)
                 return 0;                  return 0;
   
         if (MDOC_SYNPRETTY & n->flags)          if (NODE_SYNPRETTY & n->flags)
                 print_block(".HP 4n", MMAN_nl);                  print_block(".HP 4n", MMAN_nl);
   
         font_push('B');          font_push('B');
Line 1262  post_fn(DECL_ARGS)
Line 1265  post_fn(DECL_ARGS)
 {  {
   
         print_word(")");          print_word(")");
         if (MDOC_SYNPRETTY & n->flags) {          if (NODE_SYNPRETTY & n->flags) {
                 print_word(";");                  print_word(";");
                 outflags |= MMAN_PP;                  outflags |= MMAN_PP;
         }          }
Line 1279  pre_fo(DECL_ARGS)
Line 1282  pre_fo(DECL_ARGS)
         case ROFFT_HEAD:          case ROFFT_HEAD:
                 if (n->child == NULL)                  if (n->child == NULL)
                         return 0;                          return 0;
                 if (MDOC_SYNPRETTY & n->flags)                  if (NODE_SYNPRETTY & n->flags)
                         print_block(".HP 4n", MMAN_nl);                          print_block(".HP 4n", MMAN_nl);
                 font_push('B');                  font_push('B');
                 break;                  break;
Line 1324  static int
Line 1327  static int
 pre_in(DECL_ARGS)  pre_in(DECL_ARGS)
 {  {
   
         if (MDOC_SYNPRETTY & n->flags) {          if (NODE_SYNPRETTY & n->flags) {
                 pre_syn(n);                  pre_syn(n);
                 font_push('B');                  font_push('B');
                 print_word("#include <");                  print_word("#include <");
Line 1341  static void
Line 1344  static void
 post_in(DECL_ARGS)  post_in(DECL_ARGS)
 {  {
   
         if (MDOC_SYNPRETTY & n->flags) {          if (NODE_SYNPRETTY & n->flags) {
                 outflags &= ~MMAN_spc;                  outflags &= ~MMAN_spc;
                 print_word(">");                  print_word(">");
                 font_pop();                  font_pop();
Line 1616  static void
Line 1619  static void
 post_pf(DECL_ARGS)  post_pf(DECL_ARGS)
 {  {
   
         if ( ! (n->next == NULL || n->next->flags & MDOC_LINE))          if ( ! (n->next == NULL || n->next->flags & NODE_LINE))
                 outflags &= ~MMAN_spc;                  outflags &= ~MMAN_spc;
 }  }
   
Line 1645  pre_rs(DECL_ARGS)
Line 1648  pre_rs(DECL_ARGS)
 static int  static int
 pre_rv(DECL_ARGS)  pre_rv(DECL_ARGS)
 {  {
         int      nchild;          struct roff_node *nch;
   
         outflags |= MMAN_br | MMAN_nl;          outflags |= MMAN_br | MMAN_nl;
   
         nchild = n->nchild;          if (n->child != NULL) {
         if (nchild > 0) {  
                 print_word("The");                  print_word("The");
   
                 for (n = n->child; n; n = n->next) {                  for (nch = n->child; nch != NULL; nch = nch->next) {
                         font_push('B');                          font_push('B');
                         print_word(n->string);                          print_word(nch->string);
                         font_pop();                          font_pop();
   
                         outflags &= ~MMAN_spc;                          outflags &= ~MMAN_spc;
                         print_word("()");                          print_word("()");
   
                         if (n->next == NULL)                          if (nch->next == NULL)
                                 continue;                                  continue;
   
                         if (nchild > 2) {                          if (nch->prev != NULL || nch->next->next != NULL) {
                                 outflags &= ~MMAN_spc;                                  outflags &= ~MMAN_spc;
                                 print_word(",");                                  print_word(",");
                         }                          }
                         if (n->next->next == NULL)                          if (nch->next->next == NULL)
                                 print_word("and");                                  print_word("and");
                 }                  }
   
                 if (nchild > 1)                  if (n->child != NULL && n->child->next != NULL)
                         print_word("functions return");                          print_word("functions return");
                 else                  else
                         print_word("function returns");                          print_word("function returns");
Line 1749  static int
Line 1751  static int
 pre_vt(DECL_ARGS)  pre_vt(DECL_ARGS)
 {  {
   
         if (MDOC_SYNPRETTY & n->flags) {          if (NODE_SYNPRETTY & n->flags) {
                 switch (n->type) {                  switch (n->type) {
                 case ROFFT_BLOCK:                  case ROFFT_BLOCK:
                         pre_syn(n);                          pre_syn(n);
Line 1768  static void
Line 1770  static void
 post_vt(DECL_ARGS)  post_vt(DECL_ARGS)
 {  {
   
         if (n->flags & MDOC_SYNPRETTY && n->type != ROFFT_BODY)          if (n->flags & NODE_SYNPRETTY && n->type != ROFFT_BODY)
                 return;                  return;
         font_pop();          font_pop();
 }  }

Legend:
Removed from v.1.95  
changed lines
  Added in v.1.98

CVSweb