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

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

version 1.190, 2011/05/15 15:47:46 version 1.191, 2011/05/15 22:29:50
Line 33 
Line 33 
 #include "term.h"  #include "term.h"
 #include "main.h"  #include "main.h"
   
 static  void              spec(struct termp *, const char *, size_t);  static  void             adjbuf(struct termp *p, int);
 static  void              res(struct termp *, const char *, size_t);  static  void             bufferc(struct termp *, char);
 static  void              bufferc(struct termp *, char);  static  void             encode(struct termp *, const char *, size_t);
 static  void              adjbuf(struct termp *p, int);  
 static  void              encode(struct termp *, const char *, size_t);  
   
   
 void  void
 term_free(struct termp *p)  term_free(struct termp *p)
 {  {
Line 344  term_vspace(struct termp *p)
Line 341  term_vspace(struct termp *p)
         (*p->endline)(p);          (*p->endline)(p);
 }  }
   
   
 static void  
 numbered(struct termp *p, const char *word, size_t len)  
 {  
         char             c;  
   
         if ('\0' != (c = mchars_num2char(word, len)))  
                 encode(p, &c, 1);  
 }  
   
   
 static void  
 spec(struct termp *p, const char *word, size_t len)  
 {  
         const char      *rhs;  
         size_t           sz;  
   
         rhs = mchars_spec2str(p->symtab, word, len, &sz);  
         if (rhs)  
                 encode(p, rhs, sz);  
         else if (1 == len)  
                 encode(p, word, len);  
 }  
   
   
 static void  
 res(struct termp *p, const char *word, size_t len)  
 {  
         const char      *rhs;  
         size_t           sz;  
   
         rhs = mchars_res2str(p->symtab, word, len, &sz);  
         if (rhs)  
                 encode(p, rhs, sz);  
 }  
   
   
 void  void
 term_fontlast(struct termp *p)  term_fontlast(struct termp *p)
 {  {
Line 445  term_fontpop(struct termp *p)
Line 405  term_fontpop(struct termp *p)
         p->fonti--;          p->fonti--;
 }  }
   
   
 /*  /*
  * Handle pwords, partial words, which may be either a single word or a   * Handle pwords, partial words, which may be either a single word or a
  * phrase that cannot be broken down (such as a literal string).  This   * phrase that cannot be broken down (such as a literal string).  This
Line 454  term_fontpop(struct termp *p)
Line 413  term_fontpop(struct termp *p)
 void  void
 term_word(struct termp *p, const char *word)  term_word(struct termp *p, const char *word)
 {  {
         const char      *seq;          const char      *seq, *cp;
           char             c;
         int              sz;          int              sz;
         size_t           ssz;          size_t           ssz;
         enum mandoc_esc  esc;          enum mandoc_esc  esc;
Line 492  term_word(struct termp *p, const char *word)
Line 452  term_word(struct termp *p, const char *word)
   
                 switch (esc) {                  switch (esc) {
                 case (ESCAPE_NUMBERED):                  case (ESCAPE_NUMBERED):
                         numbered(p, seq, sz);                          if ('\0' != (c = mchars_num2char(seq, sz)))
                                   encode(p, &c, 1);
                         break;                          break;
                 case (ESCAPE_PREDEF):                  case (ESCAPE_PREDEF):
                         res(p, seq, sz);                          cp = mchars_res2str(p->symtab, seq, sz, &ssz);
                           if (NULL != cp)
                                   encode(p, cp, ssz);
                         break;                          break;
                 case (ESCAPE_SPECIAL):                  case (ESCAPE_SPECIAL):
                         spec(p, seq, sz);                          cp = mchars_spec2str(p->symtab, seq, sz, &ssz);
                           if (NULL != cp)
                                   encode(p, cp, ssz);
                           else if (1 == ssz)
                                   encode(p, seq, sz);
                         break;                          break;
                 case (ESCAPE_FONTBOLD):                  case (ESCAPE_FONTBOLD):
                         term_fontrepl(p, TERMFONT_BOLD);                          term_fontrepl(p, TERMFONT_BOLD);
Line 522  term_word(struct termp *p, const char *word)
Line 489  term_word(struct termp *p, const char *word)
         }          }
 }  }
   
   
 static void  static void
 adjbuf(struct termp *p, int sz)  adjbuf(struct termp *p, int sz)
 {  {
Line 536  adjbuf(struct termp *p, int sz)
Line 502  adjbuf(struct termp *p, int sz)
                 (p->buf, sizeof(int) * (size_t)p->maxcols);                  (p->buf, sizeof(int) * (size_t)p->maxcols);
 }  }
   
   
 static void  static void
 bufferc(struct termp *p, char c)  bufferc(struct termp *p, char c)
 {  {
Line 547  bufferc(struct termp *p, char c)
Line 512  bufferc(struct termp *p, char c)
         p->buf[p->col++] = c;          p->buf[p->col++] = c;
 }  }
   
   
 static void  static void
 encode(struct termp *p, const char *word, size_t sz)  encode(struct termp *p, const char *word, size_t sz)
 {  {
Line 591  encode(struct termp *p, const char *word, size_t sz)
Line 555  encode(struct termp *p, const char *word, size_t sz)
                 p->buf[p->col++] = word[i];                  p->buf[p->col++] = word[i];
         }          }
 }  }
   
   
 size_t  size_t
 term_len(const struct termp *p, size_t sz)  term_len(const struct termp *p, size_t sz)

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

CVSweb