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

Diff for /mandoc/tbl_data.c between version 1.46 and 1.47

version 1.46, 2018/11/25 19:24:20 version 1.47, 2018/11/25 21:17:34
Line 45  getdata(struct tbl_node *tbl, struct tbl_span *dp,
Line 45  getdata(struct tbl_node *tbl, struct tbl_span *dp,
         struct tbl_span *pdp;          struct tbl_span *pdp;
         int              sv;          int              sv;
   
           /*
            * Determine the length of the string in the cell
            * and advance the parse point to the end of the cell.
            */
   
           sv = *pos;
           while (p[*pos] != '\0' && p[*pos] != tbl->opts.tab)
                   (*pos)++;
   
         /* Advance to the next layout cell, skipping spanners. */          /* Advance to the next layout cell, skipping spanners. */
   
         cp = dp->last == NULL ? dp->layout->first : dp->last->layout->next;          cp = dp->last == NULL ? dp->layout->first : dp->last->layout->next;
Line 67  getdata(struct tbl_node *tbl, struct tbl_span *dp,
Line 76  getdata(struct tbl_node *tbl, struct tbl_span *dp,
                         dp->layout->last = cp;                          dp->layout->last = cp;
                 } else {                  } else {
                         mandoc_msg(MANDOCERR_TBLDATA_EXTRA, tbl->parse,                          mandoc_msg(MANDOCERR_TBLDATA_EXTRA, tbl->parse,
                             ln, *pos, p + *pos);                              ln, sv, p + sv);
                         while (p[*pos])                          while (p[*pos] != '\0')
                                 (*pos)++;                                  (*pos)++;
                         return;                          return;
                 }                  }
Line 91  getdata(struct tbl_node *tbl, struct tbl_span *dp,
Line 100  getdata(struct tbl_node *tbl, struct tbl_span *dp,
          * can be reused for more than one data row.           * can be reused for more than one data row.
          */           */
   
         if (cp->pos == TBL_CELL_DOWN) {          if (cp->pos == TBL_CELL_DOWN ||
               (*pos - sv == 2 && p[sv] == '\\' && p[sv + 1] == '^')) {
                 pdp = dp;                  pdp = dp;
                 while ((pdp = pdp->prev) != NULL) {                  while ((pdp = pdp->prev) != NULL) {
                         pdat = pdp->first;                          pdat = pdp->first;
Line 100  getdata(struct tbl_node *tbl, struct tbl_span *dp,
Line 110  getdata(struct tbl_node *tbl, struct tbl_span *dp,
                                 pdat = pdat->next;                                  pdat = pdat->next;
                         if (pdat == NULL)                          if (pdat == NULL)
                                 break;                                  break;
                         if (pdat->layout->pos != TBL_CELL_DOWN) {                          if (pdat->layout->pos != TBL_CELL_DOWN &&
                               strcmp(pdat->string, "\\^") != 0) {
                                 pdat->vspans++;                                  pdat->vspans++;
                                 break;                                  break;
                         }                          }
Line 126  getdata(struct tbl_node *tbl, struct tbl_span *dp,
Line 137  getdata(struct tbl_node *tbl, struct tbl_span *dp,
                 dp->last->next = dat;                  dp->last->next = dat;
         dp->last = dat;          dp->last = dat;
   
         sv = *pos;  
         while (p[*pos] && p[*pos] != tbl->opts.tab)  
                 (*pos)++;  
   
         /*          /*
          * Check for a continued-data scope opening.  This consists of a           * Check for a continued-data scope opening.  This consists of a
          * trailing `T{' at the end of the line.  Subsequent lines,           * trailing `T{' at the end of the line.  Subsequent lines,
Line 143  getdata(struct tbl_node *tbl, struct tbl_span *dp,
Line 150  getdata(struct tbl_node *tbl, struct tbl_span *dp,
   
         dat->string = mandoc_strndup(p + sv, *pos - sv);          dat->string = mandoc_strndup(p + sv, *pos - sv);
   
         if (p[*pos])          if (p[*pos] != '\0')
                 (*pos)++;                  (*pos)++;
   
         if ( ! strcmp(dat->string, "_"))          if ( ! strcmp(dat->string, "_"))

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

CVSweb