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

Diff for /mandoc/Attic/mdocterm.c between version 1.26 and 1.27

version 1.26, 2009/03/02 17:29:16 version 1.27, 2009/03/03 21:07:01
Line 32 
Line 32 
 #include "mmain.h"  #include "mmain.h"
 #include "term.h"  #include "term.h"
   
   struct  termenc {
           const char       *enc;
           int               sym;
   };
   
 static  void              body(struct termp *,  static  void              body(struct termp *,
                                 struct termpair *,                                  struct termpair *,
                                 const struct mdoc_meta *,                                  const struct mdoc_meta *,
Line 57  extern size_t    strlcat(char *, const char *, size_t)
Line 62  extern size_t    strlcat(char *, const char *, size_t)
 extern  size_t            strlcpy(char *, const char *, size_t);  extern  size_t            strlcpy(char *, const char *, size_t);
 #endif  #endif
   
   static  struct termenc    termenc1[] = {
           { "\\",           TERMSYM_SLASH },
           { "\'",           TERMSYM_RSQUOTE },
           { "`",            TERMSYM_LSQUOTE },
           { "-",            TERMSYM_HYPHEN },
           { " ",            TERMSYM_SPACE },
           { ".",            TERMSYM_PERIOD },
           { "&",            TERMSYM_BREAK },
           { "e",            TERMSYM_SLASH },
           { "q",            TERMSYM_DQUOTE },
           { NULL,           0 }
   };
   
   static  struct termenc    termenc2[] = {
           { "rB",           TERMSYM_RBRACK },
           { "lB",           TERMSYM_LBRACK },
           { "Lq",           TERMSYM_LDQUOTE },
           { "lq",           TERMSYM_LDQUOTE },
           { "Rq",           TERMSYM_RDQUOTE },
           { "rq",           TERMSYM_RDQUOTE },
           { "oq",           TERMSYM_LSQUOTE },
           { "aq",           TERMSYM_RSQUOTE },
   
           { "<-",           TERMSYM_LARROW },
           { "->",           TERMSYM_RARROW },
           { "ua",           TERMSYM_UARROW },
           { "da",           TERMSYM_DARROW },
   
           { "bu",           TERMSYM_BULLET },
           { "Ba",           TERMSYM_BAR },
           { "ba",           TERMSYM_BAR },
           { "co",           TERMSYM_COPY },
           { "Am",           TERMSYM_AMP },
   
           { "Le",           TERMSYM_LE },
           { "<=",           TERMSYM_LE },
           { "Ge",           TERMSYM_GE },
           { "=>",           TERMSYM_GE },
           { "==",           TERMSYM_EQ },
           { "Ne",           TERMSYM_NEQ },
           { "!=",           TERMSYM_NEQ },
           { "Pm",           TERMSYM_PLUSMINUS },
           { "+-",           TERMSYM_PLUSMINUS },
           { "If",           TERMSYM_INF2 },
           { "if",           TERMSYM_INF },
           { "Na",           TERMSYM_NAN },
           { "na",           TERMSYM_NAN },
           { "**",           TERMSYM_ASTERISK },
           { "Gt",           TERMSYM_GT },
           { "Lt",           TERMSYM_LT },
   
           { "aa",           TERMSYM_ACUTE },
           { "ga",           TERMSYM_GRAVE },
   
           { "en",           TERMSYM_EN },
           { "em",           TERMSYM_EM },
   
           { "Pi",           TERMSYM_PI },
           { NULL,           0 }
   };
   
 static  struct termsym    termsym_ansi[] = {  static  struct termsym    termsym_ansi[] = {
         { "]", 1 },             /* TERMSYM_RBRACK */          { "]", 1 },             /* TERMSYM_RBRACK */
         { "[", 1 },             /* TERMSYM_LBRACK */          { "[", 1 },             /* TERMSYM_LBRACK */
Line 85  static struct termsym   termsym_ansi[] = {
Line 151  static struct termsym   termsym_ansi[] = {
         { "NaN", 3 },           /* TERMSYM_NAN */          { "NaN", 3 },           /* TERMSYM_NAN */
         { "|", 1 },             /* TERMSYM_BAR */          { "|", 1 },             /* TERMSYM_BAR */
         { "o", 1 },             /* TERMSYM_BULLET */          { "o", 1 },             /* TERMSYM_BULLET */
         { "&", 1 },             /* TERMSYM_AND */          { "&", 1 },             /* TERMSYM_AMP */
         { "|", 1 },             /* TERMSYM_OR */          { "--", 2 },            /* TERMSYM_EM */
           { "-", 1 },             /* TERMSYM_EN */
           { "(C)", 3 },           /* TERMSYM_COPY */
           { "*", 1 },             /* TERMSYM_ASTERISK */
           { "\\", 1 },            /* TERMSYM_SLASH */
           { "-", 1 },             /* TERMSYM_HYPHEN */
           { " ", 1 },             /* TERMSYM_SPACE */
           { ".", 1 },             /* TERMSYM_PERIOD */
           { "", 0 },              /* TERMSYM_BREAK */
 };  };
   
 static  const char        ansi_clear[]  = { 27, '[', '0', 'm' };  static  const char        ansi_clear[]  = { 27, '[', '0', 'm' };
Line 614  header(struct termp *p, const struct mdoc_meta *meta)
Line 688  header(struct termp *p, const struct mdoc_meta *meta)
 static void  static void
 nescape(struct termp *p, const char *word, size_t len)  nescape(struct termp *p, const char *word, size_t len)
 {  {
           struct termenc  *enc;
   
         switch (len) {          switch (len) {
         case (1):          case (1):
                 switch (word[0]) {                  enc = termenc1;
                 case ('\\'):  
                         /* FALLTHROUGH */  
                 case ('\''):  
                         /* FALLTHROUGH */  
                 case ('`'):  
                         /* FALLTHROUGH */  
                 case ('-'):  
                         /* FALLTHROUGH */  
                 case (' '):  
                         /* FALLTHROUGH */  
                 case ('.'):  
                         chara(p, word[0]); /* FIXME */  
                         break;  
                 case ('&'):  
                         break;  
                 case ('e'):  
                         chara(p, '\\'); /* FIXME */  
                         break;  
                 case ('q'):  
                         symbola(p, TERMSYM_DQUOTE);  
                         break;  
                 default:  
                         warnx("escape sequence not supported: %c",  
                                         word[0]);  
                         break;  
                 }  
                 break;                  break;
   
         case (2):          case (2):
                 if ('r' == word[0] && 'B' == word[1])                  enc = termenc2;
                         symbola(p, TERMSYM_RBRACK);  
                 else if ('l' == word[0] && 'B' == word[1])  
                         symbola(p, TERMSYM_LBRACK);  
                 else if ('l' == word[0] && 'q' == word[1])  
                         symbola(p, TERMSYM_LDQUOTE);  
                 else if ('r' == word[0] && 'q' == word[1])  
                         symbola(p, TERMSYM_RDQUOTE);  
                 else if ('o' == word[0] && 'q' == word[1])  
                         symbola(p, TERMSYM_LSQUOTE);  
                 else if ('a' == word[0] && 'q' == word[1])  
                         symbola(p, TERMSYM_RSQUOTE);  
                 else if ('<' == word[0] && '-' == word[1])  
                         symbola(p, TERMSYM_LARROW);  
                 else if ('-' == word[0] && '>' == word[1])  
                         symbola(p, TERMSYM_RARROW);  
                 else if ('b' == word[0] && 'u' == word[1])  
                         symbola(p, TERMSYM_BULLET);  
                 else if ('<' == word[0] && '=' == word[1])  
                         symbola(p, TERMSYM_LE);  
                 else if ('>' == word[0] && '=' == word[1])  
                         symbola(p, TERMSYM_GE);  
                 else if ('=' == word[0] && '=' == word[1])  
                         symbola(p, TERMSYM_EQ);  
                 else if ('+' == word[0] && '-' == word[1])  
                         symbola(p, TERMSYM_PLUSMINUS);  
                 else if ('u' == word[0] && 'a' == word[1])  
                         symbola(p, TERMSYM_UARROW);  
                 else if ('d' == word[0] && 'a' == word[1])  
                         symbola(p, TERMSYM_DARROW);  
                 else if ('a' == word[0] && 'a' == word[1])  
                         symbola(p, TERMSYM_ACUTE);  
                 else if ('g' == word[0] && 'a' == word[1])  
                         symbola(p, TERMSYM_GRAVE);  
                 else if ('!' == word[0] && '=' == word[1])  
                         symbola(p, TERMSYM_NEQ);  
                 else if ('i' == word[0] && 'f' == word[1])  
                         symbola(p, TERMSYM_INF);  
                 else if ('n' == word[0] && 'a' == word[1])  
                         symbola(p, TERMSYM_NAN);  
                 else if ('b' == word[0] && 'a' == word[1])  
                         symbola(p, TERMSYM_BAR);  
   
                 /* Deprecated forms. */  
                 else if ('A' == word[0] && 'm' == word[1])  
                         symbola(p, TERMSYM_AMP);  
                 else if ('B' == word[0] && 'a' == word[1])  
                         symbola(p, TERMSYM_BAR);  
                 else if ('I' == word[0] && 'f' == word[1])  
                         symbola(p, TERMSYM_INF2);  
                 else if ('G' == word[0] && 'e' == word[1])  
                         symbola(p, TERMSYM_GE);  
                 else if ('G' == word[0] && 't' == word[1])  
                         symbola(p, TERMSYM_GT);  
                 else if ('L' == word[0] && 'e' == word[1])  
                         symbola(p, TERMSYM_LE);  
                 else if ('L' == word[0] && 'q' == word[1])  
                         symbola(p, TERMSYM_LDQUOTE);  
                 else if ('L' == word[0] && 't' == word[1])  
                         symbola(p, TERMSYM_LT);  
                 else if ('N' == word[0] && 'a' == word[1])  
                         symbola(p, TERMSYM_NAN);  
                 else if ('N' == word[0] && 'e' == word[1])  
                         symbola(p, TERMSYM_NEQ);  
                 else if ('P' == word[0] && 'i' == word[1])  
                         symbola(p, TERMSYM_PI);  
                 else if ('P' == word[0] && 'm' == word[1])  
                         symbola(p, TERMSYM_PLUSMINUS);  
                 else if ('R' == word[0] && 'q' == word[1])  
                         symbola(p, TERMSYM_RDQUOTE);  
                 else  
                         warnx("escape sequence not supported: %c%c",  
                                         word[0], word[1]);  
                 break;                  break;
   
         default:          default:
                 warnx("escape sequence not supported");                  warnx("unsupported %zu-byte escape sequence", len);
                 break;                  return;
         }          }
   
           for ( ; enc->enc; enc++)
                   if (0 == memcmp(enc->enc, word, len)) {
                           symbola(p, enc->sym);
                           return;
                   }
   
           warnx("unsupported %zu-byte escape sequence", len);
 }  }
   
   
Line 855  static void
Line 838  static void
 stringa(struct termp *p, const char *c, size_t sz)  stringa(struct termp *p, const char *c, size_t sz)
 {  {
         size_t           s;          size_t           s;
   
           if (0 == sz)
                   return;
   
         s = sz > p->maxcols * 2 ? sz : p->maxcols * 2;          s = sz > p->maxcols * 2 ? sz : p->maxcols * 2;
   

Legend:
Removed from v.1.26  
changed lines
  Added in v.1.27

CVSweb