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

Diff for /mandoc/mdoc_term.c between version 1.169 and 1.170

version 1.169, 2010/07/03 17:17:15 version 1.170, 2010/07/04 21:59:30
Line 57  static size_t   a2width(const struct termp *, const ch
Line 57  static size_t   a2width(const struct termp *, const ch
 static  size_t    a2height(const struct termp *, const char *);  static  size_t    a2height(const struct termp *, const char *);
 static  size_t    a2offs(const struct termp *, const char *);  static  size_t    a2offs(const struct termp *, const char *);
   
 static  int       arg_getattr(int, const struct mdoc_node *);  
 static  void      print_bvspace(struct termp *,  static  void      print_bvspace(struct termp *,
                         const struct mdoc_node *,                          const struct mdoc_node *,
                         const struct mdoc_node *);                          const struct mdoc_node *);
Line 527  a2offs(const struct termp *p, const char *v)
Line 526  a2offs(const struct termp *p, const char *v)
   
   
 /*  /*
  * Get the index of an argument in a node's argument list or -1 if it  
  * does not exist.  
  */  
 static int  
 arg_getattr(int v, const struct mdoc_node *n)  
 {  
         int              i;  
   
         if (NULL == n->args)  
                 return(0);  
   
         for (i = 0; i < (int)n->args->argc; i++)  
                 if (n->args->argv[i].arg == v)  
                         return(i);  
   
         return(-1);  
 }  
   
   
 /*  
  * Determine how much space to print out before block elements of `It'   * Determine how much space to print out before block elements of `It'
  * (and thus `Bl') and `Bd'.  And then go ahead and print that space,   * (and thus `Bl') and `Bd'.  And then go ahead and print that space,
  * too.   * too.
Line 631  termp_it_pre(DECL_ARGS)
Line 610  termp_it_pre(DECL_ARGS)
 {  {
         const struct mdoc_node *bl, *nn;          const struct mdoc_node *bl, *nn;
         char                    buf[7];          char                    buf[7];
         int                     i, col;          int                     i;
         size_t                  width, offset, ncols, dcol;          size_t                  width, offset, ncols, dcol;
         enum mdoc_list          type;          enum mdoc_list          type;
   
Line 660  termp_it_pre(DECL_ARGS)
Line 639  termp_it_pre(DECL_ARGS)
                 if (MDOC_HEAD == n->type)                  if (MDOC_HEAD == n->type)
                         break;                          break;
   
                 col = arg_getattr(MDOC_Column, bl);  
   
                 /*                  /*
                  * Imitate groff's column handling:                   * Imitate groff's column handling:
                  * - For each earlier column, add its width.                   * - For each earlier column, add its width.
Line 671  termp_it_pre(DECL_ARGS)
Line 648  termp_it_pre(DECL_ARGS)
                  *   column.                   *   column.
                  * - For more than 5 columns, add only one column.                   * - For more than 5 columns, add only one column.
                  */                   */
                 ncols = bl->args->argv[col].sz;                  ncols = bl->data.Bl->ncols;
   
                 /* LINTED */                  /* LINTED */
                 dcol = ncols < 5 ? term_len(p, 4) :                  dcol = ncols < 5 ? term_len(p, 4) :
                         ncols == 5 ? term_len(p, 3) : term_len(p, 1);                          ncols == 5 ? term_len(p, 3) : term_len(p, 1);
Line 685  termp_it_pre(DECL_ARGS)
Line 663  termp_it_pre(DECL_ARGS)
                                 nn->prev && i < (int)ncols;                                  nn->prev && i < (int)ncols;
                                 nn = nn->prev, i++)                                  nn = nn->prev, i++)
                         offset += dcol + a2width                          offset += dcol + a2width
                                 (p, bl->args->argv[col].value[i]);                                  (p, bl->data.Bl->cols[i]);
   
                 /*                  /*
                  * When exceeding the declared number of columns, leave                   * When exceeding the declared number of columns, leave
Line 700  termp_it_pre(DECL_ARGS)
Line 678  termp_it_pre(DECL_ARGS)
                  * Use the declared column widths, extended as explained                   * Use the declared column widths, extended as explained
                  * in the preceding paragraph.                   * in the preceding paragraph.
                  */                   */
                 width = a2width(p, bl->args->argv[col].value[i]) + dcol;                  width = a2width(p, bl->data.Bl->cols[i]) + dcol;
                 break;                  break;
         default:          default:
                 if (NULL == bl->data.Bl->width)                  if (NULL == bl->data.Bl->width)

Legend:
Removed from v.1.169  
changed lines
  Added in v.1.170

CVSweb