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

Diff for /mandoc/tree.c between version 1.86 and 1.91

version 1.86, 2020/02/27 21:43:45 version 1.91, 2021/09/07 10:59:18
Line 1 
Line 1 
 /*      $Id$ */  /* $Id$ */
 /*  /*
  * Copyright (c) 2008, 2009, 2011, 2014 Kristaps Dzonsons <kristaps@bsd.lv>   * Copyright (c) 2008, 2009, 2011, 2014 Kristaps Dzonsons <kristaps@bsd.lv>
  * Copyright (c) 2013-2015, 2017-2020 Ingo Schwarze <schwarze@openbsd.org>   * Copyright (c) 2013-2015, 2017-2021 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 14 
Line 14 
  * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN   * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
  * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF   * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
  * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.   * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
    *
    * Formatting module to let mandoc(1) show
    * a human readable representation of the syntax tree.
  */   */
 #include "config.h"  #include "config.h"
   
Line 33 
Line 36 
 #include "eqn.h"  #include "eqn.h"
 #include "main.h"  #include "main.h"
   
   static  void    print_attr(const struct roff_node *);
 static  void    print_box(const struct eqn_box *, int);  static  void    print_box(const struct eqn_box *, int);
 static  void    print_cellt(enum tbl_cellt);  static  void    print_cellt(enum tbl_cellt);
 static  void    print_man(const struct roff_node *, int);  static  void    print_man(const struct roff_node *, int);
Line 188  print_mdoc(const struct roff_node *n, int indent)
Line 192  print_mdoc(const struct roff_node *n, int indent)
                         if (argv[i].sz > 0)                          if (argv[i].sz > 0)
                                 printf(" ]");                                  printf(" ]");
                 }                  }
                   print_attr(n);
                 putchar(' ');  
                 if (n->flags & NODE_DELIMO)  
                         putchar('(');  
                 if (n->flags & NODE_LINE)  
                         putchar('*');  
                 printf("%d:%d", n->line, n->pos + 1);  
                 if (n->flags & NODE_DELIMC)  
                         putchar(')');  
                 if (n->flags & NODE_EOS)  
                         putchar('.');  
                 if (n->flags & NODE_ID) {  
                         printf(" ID");  
                         if (n->string != NULL)  
                                 printf("=%s", n->string);  
                 }  
                 if (n->flags & NODE_HREF)  
                         printf(" HREF");  
                 if (n->flags & NODE_BROKEN)  
                         printf(" BROKEN");  
                 if (n->flags & NODE_NOFILL)  
                         printf(" NOFILL");  
                 if (n->flags & NODE_NOSRC)  
                         printf(" NOSRC");  
                 if (n->flags & NODE_NOPRT)  
                         printf(" NOPRT");  
                 putchar('\n');  
         }          }
   
         if (n->eqn)          if (n->eqn)
                 print_box(n->eqn->first, indent + 4);                  print_box(n->eqn->first, indent + 4);
         if (n->child)          if (n->child)
Line 297  print_man(const struct roff_node *n, int indent)
Line 274  print_man(const struct roff_node *n, int indent)
         } else {          } else {
                 for (i = 0; i < indent; i++)                  for (i = 0; i < indent; i++)
                         putchar(' ');                          putchar(' ');
                 printf("%s (%s) ", p, t);                  printf("%s (%s)", p, t);
                 if (n->flags & NODE_LINE)                  print_attr(n);
                         putchar('*');  
                 printf("%d:%d", n->line, n->pos + 1);  
                 if (n->flags & NODE_DELIMC)  
                         putchar(')');  
                 if (n->flags & NODE_EOS)  
                         putchar('.');  
                 if (n->flags & NODE_NOFILL)  
                         printf(" NOFILL");  
                 putchar('\n');  
         }          }
   
         if (n->eqn)          if (n->eqn)
                 print_box(n->eqn->first, indent + 4);                  print_box(n->eqn->first, indent + 4);
         if (n->child)          if (n->child)
Line 320  print_man(const struct roff_node *n, int indent)
Line 287  print_man(const struct roff_node *n, int indent)
 }  }
   
 static void  static void
   print_attr(const struct roff_node *n)
   {
           putchar(' ');
           if (n->flags & NODE_DELIMO)
                   putchar('(');
           if (n->flags & NODE_LINE)
                   putchar('*');
           printf("%d:%d", n->line, n->pos + 1);
           if (n->flags & NODE_DELIMC)
                   putchar(')');
           if (n->flags & NODE_EOS)
                   putchar('.');
           if (n->flags & NODE_ID) {
                   printf(" ID");
                   if (n->flags & NODE_HREF)
                           printf("=HREF");
           } else if (n->flags & NODE_HREF)
                   printf(" HREF");
           else if (n->tag != NULL)
                   printf(" STRAYTAG");
           if (n->tag != NULL)
                   printf("=%s", n->tag);
           if (n->flags & NODE_BROKEN)
                   printf(" BROKEN");
           if (n->flags & NODE_NOFILL)
                   printf(" NOFILL");
           if (n->flags & NODE_NOSRC)
                   printf(" NOSRC");
           if (n->flags & NODE_NOPRT)
                   printf(" NOPRT");
           putchar('\n');
   }
   
   static void
 print_box(const struct eqn_box *ep, int indent)  print_box(const struct eqn_box *ep, int indent)
 {  {
         int              i;          int              i;
Line 470  print_span(const struct tbl_span *sp, int indent)
Line 471  print_span(const struct tbl_span *sp, int indent)
                         else {                          else {
                                 printf("%d", cp->col);                                  printf("%d", cp->col);
                                 print_cellt(dp->layout->pos);                                  print_cellt(dp->layout->pos);
                                 if (cp->flags & TBL_CELL_BOLD)                                  switch (cp->font) {
                                   case ESCAPE_FONTROMAN:
                                           break;
                                   case ESCAPE_FONTBOLD:
                                         putchar('b');                                          putchar('b');
                                 if (cp->flags & TBL_CELL_ITALIC)                                          break;
                                   case ESCAPE_FONTITALIC:
                                         putchar('i');                                          putchar('i');
                                           break;
                                   case ESCAPE_FONTBI:
                                           fputs("bi", stdout);
                                           break;
                                   case ESCAPE_FONTCR:
                                           putchar('c');
                                           break;
                                   case ESCAPE_FONTCB:
                                           fputs("cb", stdout);
                                           break;
                                   case ESCAPE_FONTCI:
                                           fputs("ci", stdout);
                                           break;
                                   default:
                                           abort();
                                   }
                                 if (cp->flags & TBL_CELL_TALIGN)                                  if (cp->flags & TBL_CELL_TALIGN)
                                         putchar('t');                                          putchar('t');
                                 if (cp->flags & TBL_CELL_UP)                                  if (cp->flags & TBL_CELL_UP)

Legend:
Removed from v.1.86  
changed lines
  Added in v.1.91

CVSweb