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

Diff for /mandoc/out.c between version 1.43 and 1.46

version 1.43, 2011/09/20 23:05:49 version 1.46, 2013/10/05 20:30:05
Line 32 
Line 32 
 #include "out.h"  #include "out.h"
   
 static  void    tblcalc_data(struct rofftbl *, struct roffcol *,  static  void    tblcalc_data(struct rofftbl *, struct roffcol *,
                         const struct tbl *, const struct tbl_dat *);                          const struct tbl_opts *, const struct tbl_dat *);
 static  void    tblcalc_literal(struct rofftbl *, struct roffcol *,  static  void    tblcalc_literal(struct rofftbl *, struct roffcol *,
                         const struct tbl_dat *);                          const struct tbl_dat *);
 static  void    tblcalc_number(struct rofftbl *, struct roffcol *,  static  void    tblcalc_number(struct rofftbl *, struct roffcol *,
                         const struct tbl *, const struct tbl_dat *);                          const struct tbl_opts *, const struct tbl_dat *);
   
 /*  /*
  * Convert a `scaling unit' to a consistent form, or fail.  Scaling   * Convert a `scaling unit' to a consistent form, or fail.  Scaling
Line 142  void
Line 142  void
 tblcalc(struct rofftbl *tbl, const struct tbl_span *sp)  tblcalc(struct rofftbl *tbl, const struct tbl_span *sp)
 {  {
         const struct tbl_dat    *dp;          const struct tbl_dat    *dp;
         const struct tbl_head   *hp;  
         struct roffcol          *col;          struct roffcol          *col;
         int                      spans;          int                      spans;
   
Line 154  tblcalc(struct rofftbl *tbl, const struct tbl_span *sp
Line 153  tblcalc(struct rofftbl *tbl, const struct tbl_span *sp
   
         assert(NULL == tbl->cols);          assert(NULL == tbl->cols);
         tbl->cols = mandoc_calloc          tbl->cols = mandoc_calloc
                 ((size_t)sp->tbl->cols, sizeof(struct roffcol));                  ((size_t)sp->opts->cols, sizeof(struct roffcol));
   
         hp = sp->head;  
   
         for ( ; sp; sp = sp->next) {          for ( ; sp; sp = sp->next) {
                 if (TBL_SPAN_DATA != sp->pos)                  if (TBL_SPAN_DATA != sp->pos)
                         continue;                          continue;
Line 175  tblcalc(struct rofftbl *tbl, const struct tbl_span *sp
Line 172  tblcalc(struct rofftbl *tbl, const struct tbl_span *sp
                                 continue;                                  continue;
                         assert(dp->layout);                          assert(dp->layout);
                         col = &tbl->cols[dp->layout->head->ident];                          col = &tbl->cols[dp->layout->head->ident];
                         tblcalc_data(tbl, col, sp->tbl, dp);                          tblcalc_data(tbl, col, sp->opts, dp);
                 }                  }
         }          }
   
         /*  
          * Calculate width of the spanners.  These get one space for a  
          * vertical line, two for a double-vertical line.  
          */  
   
         for ( ; hp; hp = hp->next) {  
                 col = &tbl->cols[hp->ident];  
                 switch (hp->pos) {  
                 case (TBL_HEAD_VERT):  
                         col->width = (*tbl->len)(1, tbl->arg);  
                         break;  
                 case (TBL_HEAD_DVERT):  
                         col->width = (*tbl->len)(2, tbl->arg);  
                         break;  
                 default:  
                         break;  
                 }  
         }  
 }  }
   
 static void  static void
 tblcalc_data(struct rofftbl *tbl, struct roffcol *col,  tblcalc_data(struct rofftbl *tbl, struct roffcol *col,
                 const struct tbl *tp, const struct tbl_dat *dp)                  const struct tbl_opts *opts, const struct tbl_dat *dp)
 {  {
         size_t           sz;          size_t           sz;
   
Line 225  tblcalc_data(struct rofftbl *tbl, struct roffcol *col,
Line 203  tblcalc_data(struct rofftbl *tbl, struct roffcol *col,
                 tblcalc_literal(tbl, col, dp);                  tblcalc_literal(tbl, col, dp);
                 break;                  break;
         case (TBL_CELL_NUMBER):          case (TBL_CELL_NUMBER):
                 tblcalc_number(tbl, col, tp, dp);                  tblcalc_number(tbl, col, opts, dp);
                 break;                  break;
         case (TBL_CELL_DOWN):          case (TBL_CELL_DOWN):
                 break;                  break;
Line 251  tblcalc_literal(struct rofftbl *tbl, struct roffcol *c
Line 229  tblcalc_literal(struct rofftbl *tbl, struct roffcol *c
   
 static void  static void
 tblcalc_number(struct rofftbl *tbl, struct roffcol *col,  tblcalc_number(struct rofftbl *tbl, struct roffcol *col,
                 const struct tbl *tp, const struct tbl_dat *dp)                  const struct tbl_opts *opts, const struct tbl_dat *dp)
 {  {
         int              i;          int              i;
         size_t           sz, psz, ssz, d;          size_t           sz, psz, ssz, d;
Line 273  tblcalc_number(struct rofftbl *tbl, struct roffcol *co
Line 251  tblcalc_number(struct rofftbl *tbl, struct roffcol *co
   
         /* FIXME: TBL_DATA_HORIZ et al.? */          /* FIXME: TBL_DATA_HORIZ et al.? */
   
         buf[0] = tp->decimal;          buf[0] = opts->decimal;
         buf[1] = '\0';          buf[1] = '\0';
   
         psz = (*tbl->slen)(buf, tbl->arg);          psz = (*tbl->slen)(buf, tbl->arg);
   
         if (NULL != (cp = strrchr(str, tp->decimal))) {          if (NULL != (cp = strrchr(str, opts->decimal))) {
                 buf[1] = '\0';                  buf[1] = '\0';
                 for (ssz = 0, i = 0; cp != &str[i]; i++) {                  for (ssz = 0, i = 0; cp != &str[i]; i++) {
                         buf[0] = str[i];                          buf[0] = str[i];

Legend:
Removed from v.1.43  
changed lines
  Added in v.1.46

CVSweb