[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.189

version 1.188, 2011/05/14 18:15:20 version 1.189, 2011/05/15 14:50:01
Line 606  term_strlen(const struct termp *p, const char *cp)
Line 606  term_strlen(const struct termp *p, const char *cp)
 {  {
         size_t           sz, rsz, i;          size_t           sz, rsz, i;
         int              ssz;          int              ssz;
         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);                          switch (mandoc_escape(&cp, &seq, &ssz)) {
                         if (ESCAPE_ERROR == esc)                          case (ESCAPE_ERROR):
                                 return(sz);                                  return(sz);
   
                         switch (esc) {  
                         case (ESCAPE_PREDEF):                          case (ESCAPE_PREDEF):
                                 rhs = mchars_res2str                                  rhs = mchars_res2str
                                         (p->symtab, seq, ssz, &rsz);                                          (p->symtab, seq, ssz, &rsz);
Line 659  term_strlen(const struct termp *p, const char *cp)
Line 661  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 703  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.189

CVSweb