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

Diff for /mandoc/tbl_layout.c between version 1.33 and 1.36

version 1.33, 2015/01/27 05:21:45 version 1.36, 2015/01/30 02:09:04
Line 234  again:
Line 234  again:
 }  }
   
 void  void
 tbl_layout(struct tbl_node *tbl, int ln, const char *p)  tbl_layout(struct tbl_node *tbl, int ln, const char *p, int pos)
 {  {
         struct tbl_row  *rp;          struct tbl_row  *rp;
         int              pos;  
   
         pos = 0;  
         rp = NULL;          rp = NULL;
   
         for (;;) {          for (;;) {
                 /* Skip whitespace before and after each cell. */                  /* Skip whitespace before and after each cell. */
   
Line 265  tbl_layout(struct tbl_node *tbl, int ln, const char *p
Line 262  tbl_layout(struct tbl_node *tbl, int ln, const char *p
                          */                           */
   
                         if (tbl->first_row == NULL) {                          if (tbl->first_row == NULL) {
                                   tbl->first_row = tbl->last_row =
                                       mandoc_calloc(1, sizeof(*rp));
                           }
                           if (tbl->first_row->first == NULL) {
                                 mandoc_msg(MANDOCERR_TBLLAYOUT_NONE,                                  mandoc_msg(MANDOCERR_TBLLAYOUT_NONE,
                                     tbl->parse, ln, pos, NULL);                                      tbl->parse, ln, pos, NULL);
                                 rp = mandoc_calloc(1, sizeof(*rp));                                  cell_alloc(tbl, tbl->first_row,
                                 cell_alloc(tbl, rp, TBL_CELL_LEFT);                                      TBL_CELL_LEFT);
                                 tbl->first_row = tbl->last_row = rp;  
                                 return;                                  return;
                         }                          }
   
Line 285  tbl_layout(struct tbl_node *tbl, int ln, const char *p
Line 285  tbl_layout(struct tbl_node *tbl, int ln, const char *p
                                     rp->last->head == tbl->last_head &&                                      rp->last->head == tbl->last_head &&
                                     tbl->opts.rvert < rp->last->vert)                                      tbl->opts.rvert < rp->last->vert)
                                         tbl->opts.rvert = rp->last->vert;                                          tbl->opts.rvert = rp->last->vert;
   
                                   /* If the last line is empty, drop it. */
   
                                   if (rp->next != NULL &&
                                       rp->next->first == NULL) {
                                           free(rp->next);
                                           rp->next = NULL;
                                   }
                         }                          }
                         return;                          return;
                 default:  /* Cell. */                  default:  /* Cell. */
                         break;                          break;
                 }                  }
   
                 if (rp == NULL) {  /* First cell on this line. */                  /*
                         rp = mandoc_calloc(1, sizeof(*rp));                   * If the last line had at least one cell,
                         if (tbl->last_row)                   * start a new one; otherwise, continue it.
                                 tbl->last_row->next = rp;                   */
                         else  
                                 tbl->first_row = rp;                  if (rp == NULL) {
                         tbl->last_row = rp;                          if (tbl->last_row == NULL ||
                               tbl->last_row->first != NULL) {
                                   rp = mandoc_calloc(1, sizeof(*rp));
                                   if (tbl->last_row)
                                           tbl->last_row->next = rp;
                                   else
                                           tbl->first_row = rp;
                                   tbl->last_row = rp;
                           } else
                                   rp = tbl->last_row;
                 }                  }
                 cell(tbl, rp, ln, p, &pos);                  cell(tbl, rp, ln, p, &pos);
         }          }
Line 309  cell_alloc(struct tbl_node *tbl, struct tbl_row *rp, e
Line 326  cell_alloc(struct tbl_node *tbl, struct tbl_row *rp, e
         struct tbl_cell *p, *pp;          struct tbl_cell *p, *pp;
         struct tbl_head *h, *hp;          struct tbl_head *h, *hp;
   
         p = mandoc_calloc(1, sizeof(struct tbl_cell));          p = mandoc_calloc(1, sizeof(*p));
   
         if (NULL != (pp = rp->last)) {          if ((pp = rp->last) != NULL) {
                 pp->next = p;                  pp->next = p;
                 h = pp->head->next;                  h = pp->head->next;
         } else {          } else {
Line 324  cell_alloc(struct tbl_node *tbl, struct tbl_row *rp, e
Line 341  cell_alloc(struct tbl_node *tbl, struct tbl_row *rp, e
   
         /* Re-use header. */          /* Re-use header. */
   
         if (h) {          if (h != NULL) {
                 p->head = h;                  p->head = h;
                 return(p);                  return(p);
         }          }
   
         hp = mandoc_calloc(1, sizeof(struct tbl_head));          hp = mandoc_calloc(1, sizeof(*hp));
         hp->ident = tbl->opts.cols++;          hp->ident = tbl->opts.cols++;
   
         if (tbl->last_head) {          if (tbl->last_head != NULL) {
                 hp->prev = tbl->last_head;                  hp->prev = tbl->last_head;
                 tbl->last_head->next = hp;                  tbl->last_head->next = hp;
         } else          } else

Legend:
Removed from v.1.33  
changed lines
  Added in v.1.36

CVSweb