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

Diff for /mandoc/term.c between version 1.188 and 1.190

version 1.188, 2011/05/14 18:15:20 version 1.190, 2011/05/15 15:47:46
Line 605  size_t
Line 605  size_t
 term_strlen(const struct termp *p, const char *cp)  term_strlen(const struct termp *p, const char *cp)
 {  {
         size_t           sz, rsz, i;          size_t           sz, rsz, i;
         int              ssz;          int              ssz, c;
         enum mandoc_esc  esc;  
         const char      *seq, *rhs;          const char      *seq, *rhs;
           static const char rej[] = { '\\', ASCII_HYPH, ASCII_NBRSP, '\0' };
   
         /*          /*
          * Account for escaped sequences within string length           * Account for escaped sequences within string length
Line 616  term_strlen(const struct termp *p, const char *cp)
Line 616  term_strlen(const struct termp *p, const char *cp)
          */           */
   
         sz = 0;          sz = 0;
         while ('\0' != *cp)          while ('\0' != *cp) {
                   rsz = strcspn(cp, rej);
                   for (i = 0; i < rsz; i++)
                           sz += (*p->width)(p, *cp++);
   
                 switch (*cp) {                  switch (*cp) {
                 case ('\\'):                  case ('\\'):
                         ++cp;                          cp++;
                         esc = mandoc_escape(&cp, &seq, &ssz);                          rhs = NULL;
                         if (ESCAPE_ERROR == esc)                          switch (mandoc_escape(&cp, &seq, &ssz)) {
                           case (ESCAPE_ERROR):
                                 return(sz);                                  return(sz);
                           case (ESCAPE_NUMBERED):
                         switch (esc) {                                  c = mchars_num2char(seq, ssz);
                                   if ('\0' != c)
                                           sz += (*p->width)(p, c);
                                   break;
                         case (ESCAPE_PREDEF):                          case (ESCAPE_PREDEF):
                                 rhs = mchars_res2str                                  rhs = mchars_res2str
                                         (p->symtab, seq, ssz, &rsz);                                          (p->symtab, seq, ssz, &rsz);
Line 640  term_strlen(const struct termp *p, const char *cp)
Line 648  term_strlen(const struct termp *p, const char *cp)
                                 rsz = ssz;                                  rsz = ssz;
                                 break;                                  break;
                         default:                          default:
                                 rhs = NULL;  
                                 break;                                  break;
                         }                          }
   
Line 659  term_strlen(const struct termp *p, const char *cp)
Line 666  term_strlen(const struct termp *p, const char *cp)
                         cp++;                          cp++;
                         break;                          break;
                 default:                  default:
                         sz += (*p->width)(p, *cp++);  
                         break;                          break;
                 }                  }
           }
   
         return(sz);          return(sz);
 }  }
   
   
 /* ARGSUSED */  /* ARGSUSED */
 size_t  size_t
 term_vspan(const struct termp *p, const struct roffsu *su)  term_vspan(const struct termp *p, const struct roffsu *su)
Line 702  term_vspan(const struct termp *p, const struct roffsu 
Line 708  term_vspan(const struct termp *p, const struct roffsu 
         return(/* LINTED */(size_t)          return(/* LINTED */(size_t)
                         r);                          r);
 }  }
   
   
 size_t  size_t
 term_hspan(const struct termp *p, const struct roffsu *su)  term_hspan(const struct termp *p, const struct roffsu *su)

Legend:
Removed from v.1.188  
changed lines
  Added in v.1.190

CVSweb