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

Diff for /mandoc/eqn.c between version 1.17 and 1.19

version 1.17, 2011/07/21 13:37:04 version 1.19, 2011/07/21 15:21:13
Line 19 
Line 19 
 #endif  #endif
   
 #include <assert.h>  #include <assert.h>
   #include <limits.h>
 #include <stdio.h>  #include <stdio.h>
 #include <stdlib.h>  #include <stdlib.h>
 #include <string.h>  #include <string.h>
Line 80  static const struct eqnstr eqnmarks[EQNMARK__MAX] = {
Line 81  static const struct eqnstr eqnmarks[EQNMARK__MAX] = {
 };  };
   
 static  const struct eqnstr eqnfonts[EQNFONT__MAX] = {  static  const struct eqnstr eqnfonts[EQNFONT__MAX] = {
           { "", 0 },
         { "roman", 5 },          { "roman", 5 },
         { "bold", 4 },          { "bold", 4 },
         { "italic", 6 },          { "italic", 6 },
 };  };
   
   static  const struct eqnstr eqnposs[EQNPOS__MAX] = {
           { "", 0 },
           { "over", 4 },
           { "sup", 3 },
           { "sub", 3 },
           { "to", 2 },
           { "from", 4 },
           { "above", 5 },
   };
   
 /* ARGSUSED */  /* ARGSUSED */
 enum rofferr  enum rofferr
 eqn_read(struct eqn_node **epp, int ln,  eqn_read(struct eqn_node **epp, int ln,
Line 177  eqn_box(struct eqn_node *ep, struct eqn_box *last, str
Line 189  eqn_box(struct eqn_node *ep, struct eqn_box *last, str
 {  {
         size_t           sz;          size_t           sz;
         const char      *start;          const char      *start;
         int              c, i, nextc;          int              c, i, nextc, size;
         enum eqn_fontt   font;          enum eqn_fontt   font;
         struct eqn_box  *bp;          struct eqn_box  *bp;
   
Line 189  eqn_box(struct eqn_node *ep, struct eqn_box *last, str
Line 201  eqn_box(struct eqn_node *ep, struct eqn_box *last, str
   
         *sv = last;          *sv = last;
         nextc = 1;          nextc = 1;
         font = EQNFONT_NONE;          font = EQNFONT_NONE;
           size = EQN_DEFSIZE;
 again:  again:
         if (NULL == (start = eqn_nexttok(ep, &sz)))          if (NULL == (start = eqn_nexttok(ep, &sz)))
                 return(0);                  return(0);
Line 204  again:
Line 216  again:
                 goto again;                  goto again;
         }          }
   
           for (i = 0; i < (int)EQNFONT__MAX; i++) {
                   if (eqnposs[i].sz != sz)
                           continue;
                   if (strncmp(eqnposs[i].name, start, sz))
                           continue;
                   last->pos = (enum eqn_post)i;
                   goto again;
           }
   
         for (i = 0; i < (int)EQN__MAX; i++) {          for (i = 0; i < (int)EQN__MAX; i++) {
                 if (eqnparts[i].str.sz != sz)                  if (eqnparts[i].str.sz != sz)
                         continue;                          continue;
Line 223  again:
Line 244  again:
                 goto again;                  goto again;
         }          }
   
         /* Exit this [hopefully] subexpression. */          if (sz == 4 && 0 == strncmp("size", start, 1)) {
                   if (NULL == (start = eqn_nexttok(ep, &sz)))
                           return(0);
                   size = mandoc_strntoi(start, sz, 10);
                   goto again;
           }
   
         if (sz == 1 && 0 == strncmp("}", start, 1))          if (sz == 1 && 0 == strncmp("}", start, 1))
                 return(1);                  return(1);
   
         bp = mandoc_calloc(1, sizeof(struct eqn_box));          bp = mandoc_calloc(1, sizeof(struct eqn_box));
         bp->font = font;          bp->font = font;
           bp->size = size;
   
         font = EQNFONT_NONE;          font = EQNFONT_NONE;
           size = EQN_DEFSIZE;
   
         if (nextc)          if (nextc)
                 last->child = bp;                  last->child = bp;

Legend:
Removed from v.1.17  
changed lines
  Added in v.1.19

CVSweb