[BACK]Return to tbl_data.c CVS log [TXT][DIR] Up to [local] / src / usr.bin / mandoc

Diff for /src/usr.bin/mandoc/tbl_data.c between version 1.43 and 1.44

version 1.43, 2021/08/10 12:36:42 version 1.44, 2021/09/07 11:47:42
Line 45 
Line 45 
         struct tbl_cell *cp;          struct tbl_cell *cp;
         struct tbl_span *pdp;          struct tbl_span *pdp;
         const char      *ccp;          const char      *ccp;
         int              sv;          int              startpos, endpos;
   
         /*          /*
          * Determine the length of the string in the cell           * Determine the length of the string in the cell
          * and advance the parse point to the end of the cell.           * and advance the parse point to the end of the cell.
          */           */
   
         sv = *pos;          startpos = *pos;
         ccp = p + sv;          ccp = p + startpos;
         while (*ccp != '\0' && *ccp != tbl->opts.tab)          while (*ccp != '\0' && *ccp != tbl->opts.tab)
                 if (*ccp++ == '\\')                  if (*ccp++ == '\\')
                         mandoc_escape(&ccp, NULL, NULL);                          mandoc_escape(&ccp, NULL, NULL);
Line 83 
Line 83 
                         dp->layout->last = cp;                          dp->layout->last = cp;
                 } else {                  } else {
                         mandoc_msg(MANDOCERR_TBLDATA_EXTRA,                          mandoc_msg(MANDOCERR_TBLDATA_EXTRA,
                             ln, sv, "%s", p + sv);                              ln, startpos, "%s", p + startpos);
                         while (p[*pos] != '\0')                          while (p[*pos] != '\0')
                                 (*pos)++;                                  (*pos)++;
                         return;                          return;
Line 108 
Line 108 
          */           */
   
         if (cp->pos == TBL_CELL_DOWN ||          if (cp->pos == TBL_CELL_DOWN ||
             (*pos - sv == 2 && p[sv] == '\\' && p[sv + 1] == '^')) {              (*pos - startpos == 2 &&
                p[startpos] == '\\' && p[startpos + 1] == '^')) {
                 pdp = dp;                  pdp = dp;
                 while ((pdp = pdp->prev) != NULL) {                  while ((pdp = pdp->prev) != NULL) {
                         pdat = pdp->first;                          pdat = pdp->first;
Line 150 
Line 151 
          * until a standalone `T}', are included in our cell.           * until a standalone `T}', are included in our cell.
          */           */
   
         if (*pos - sv == 2 && p[sv] == 'T' && p[sv + 1] == '{') {          if (*pos - startpos == 2 &&
               p[startpos] == 'T' && p[startpos + 1] == '{') {
                 tbl->part = TBL_PART_CDATA;                  tbl->part = TBL_PART_CDATA;
                 return;                  return;
         }          }
   
         dat->string = mandoc_strndup(p + sv, *pos - sv);          endpos = *pos;
           if (dp->opts->opts & TBL_OPT_NOSPACE) {
                   while (p[startpos] == ' ')
                           startpos++;
                   while (endpos > startpos && p[endpos - 1] == ' ')
                           endpos--;
           }
           dat->string = mandoc_strndup(p + startpos, endpos - startpos);
   
         if (p[*pos] != '\0')          if (p[*pos] != '\0')
                 (*pos)++;                  (*pos)++;
Line 176 
Line 185 
             dat->layout->pos == TBL_CELL_DOWN) &&              dat->layout->pos == TBL_CELL_DOWN) &&
             dat->pos == TBL_DATA_DATA && *dat->string != '\0')              dat->pos == TBL_DATA_DATA && *dat->string != '\0')
                 mandoc_msg(MANDOCERR_TBLDATA_SPAN,                  mandoc_msg(MANDOCERR_TBLDATA_SPAN,
                     ln, sv, "%s", dat->string);                      ln, startpos, "%s", dat->string);
 }  }
   
 void  void

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