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

Diff for /mandoc/mdoc_validate.c between version 1.35 and 1.44

version 1.35, 2009/07/17 12:27:49 version 1.44, 2009/09/24 15:08:41
Line 81  static int  hwarn_eq1(POST_ARGS);
Line 81  static int  hwarn_eq1(POST_ARGS);
 static  int      hwarn_le1(POST_ARGS);  static  int      hwarn_le1(POST_ARGS);
   
 static  int      post_an(POST_ARGS);  static  int      post_an(POST_ARGS);
 static  int      post_args(POST_ARGS);  
 static  int      post_at(POST_ARGS);  static  int      post_at(POST_ARGS);
 static  int      post_bf(POST_ARGS);  static  int      post_bf(POST_ARGS);
 static  int      post_bl(POST_ARGS);  static  int      post_bl(POST_ARGS);
Line 90  static int  post_it(POST_ARGS);
Line 89  static int  post_it(POST_ARGS);
 static  int      post_lb(POST_ARGS);  static  int      post_lb(POST_ARGS);
 static  int      post_nm(POST_ARGS);  static  int      post_nm(POST_ARGS);
 static  int      post_root(POST_ARGS);  static  int      post_root(POST_ARGS);
   static  int      post_rs(POST_ARGS);
 static  int      post_sh(POST_ARGS);  static  int      post_sh(POST_ARGS);
 static  int      post_sh_body(POST_ARGS);  static  int      post_sh_body(POST_ARGS);
 static  int      post_sh_head(POST_ARGS);  static  int      post_sh_head(POST_ARGS);
Line 118  static v_post  posts_bd[] = { herr_eq0, bwarn_ge1, NUL
Line 118  static v_post  posts_bd[] = { herr_eq0, bwarn_ge1, NUL
 static  v_post   posts_bf[] = { hwarn_le1, post_bf, NULL };  static  v_post   posts_bf[] = { hwarn_le1, post_bf, NULL };
 static  v_post   posts_bl[] = { bwarn_ge1, post_bl, NULL };  static  v_post   posts_bl[] = { bwarn_ge1, post_bl, NULL };
 static  v_post   posts_bool[] = { eerr_eq1, ebool, NULL };  static  v_post   posts_bool[] = { eerr_eq1, ebool, NULL };
 static  v_post   posts_ex[] = { eerr_eq0, post_args, NULL };  
 static  v_post   posts_fo[] = { hwarn_eq1, bwarn_ge1, NULL };  static  v_post   posts_fo[] = { hwarn_eq1, bwarn_ge1, NULL };
 static  v_post   posts_in[] = { eerr_eq1, NULL };  static  v_post   posts_in[] = { eerr_eq1, NULL };
 static  v_post   posts_it[] = { post_it, NULL };  static  v_post   posts_it[] = { post_it, NULL };
Line 127  static v_post  posts_nd[] = { berr_ge1, NULL };
Line 126  static v_post  posts_nd[] = { berr_ge1, NULL };
 static  v_post   posts_nm[] = { post_nm, NULL };  static  v_post   posts_nm[] = { post_nm, NULL };
 static  v_post   posts_notext[] = { eerr_eq0, NULL };  static  v_post   posts_notext[] = { eerr_eq0, NULL };
 static  v_post   posts_pf[] = { eerr_eq1, NULL };  static  v_post   posts_pf[] = { eerr_eq1, NULL };
 static  v_post   posts_rv[] = { eerr_eq0, post_args, NULL };  static  v_post   posts_rs[] = { berr_ge1, herr_eq0, post_rs, NULL };
 static  v_post   posts_sh[] = { herr_ge1, bwarn_ge1, post_sh, NULL };  static  v_post   posts_sh[] = { herr_ge1, bwarn_ge1, post_sh, NULL };
 static  v_post   posts_sp[] = { post_sp, NULL };  static  v_post   posts_sp[] = { post_sp, NULL };
 static  v_post   posts_ss[] = { herr_ge1, NULL };  static  v_post   posts_ss[] = { herr_ge1, NULL };
Line 176  const struct valids mdoc_valids[MDOC_MAX] = {
Line 175  const struct valids mdoc_valids[MDOC_MAX] = {
         { NULL, NULL },                         /* Dv */          { NULL, NULL },                         /* Dv */
         { pres_er, posts_text },                /* Er */          { pres_er, posts_text },                /* Er */
         { NULL, NULL },                         /* Ev */          { NULL, NULL },                         /* Ev */
         { pres_ex, posts_ex },                  /* Ex */          { pres_ex, NULL },                      /* Ex */
         { NULL, NULL },                         /* Fa */          { NULL, NULL },                         /* Fa */
         { pres_fd, posts_wtext },               /* Fd */          { pres_fd, posts_wtext },               /* Fd */
         { NULL, NULL },                         /* Fl */          { NULL, NULL },                         /* Fl */
Line 190  const struct valids mdoc_valids[MDOC_MAX] = {
Line 189  const struct valids mdoc_valids[MDOC_MAX] = {
         { NULL, posts_wline },                  /* Op */          { NULL, posts_wline },                  /* Op */
         { NULL, NULL },                         /* Ot */          { NULL, NULL },                         /* Ot */
         { NULL, NULL },                         /* Pa */          { NULL, NULL },                         /* Pa */
         { pres_rv, posts_rv },                  /* Rv */          { pres_rv, NULL },                      /* Rv */
         { NULL, posts_st },                     /* St */          { NULL, posts_st },                     /* St */
         { NULL, NULL },                         /* Va */          { NULL, NULL },                         /* Va */
         { NULL, posts_text },                   /* Vt */          { NULL, posts_text },                   /* Vt */
Line 239  const struct valids mdoc_valids[MDOC_MAX] = {
Line 238  const struct valids mdoc_valids[MDOC_MAX] = {
         { NULL, NULL },                         /* Qo */          { NULL, NULL },                         /* Qo */
         { NULL, posts_wline },                  /* Qq */          { NULL, posts_wline },                  /* Qq */
         { NULL, NULL },                         /* Re */          { NULL, NULL },                         /* Re */
         { NULL, posts_wline },                  /* Rs */          { NULL, posts_rs },                     /* Rs */
         { NULL, NULL },                         /* Sc */          { NULL, NULL },                         /* Sc */
         { NULL, NULL },                         /* So */          { NULL, NULL },                         /* So */
         { NULL, posts_wline },                  /* Sq */          { NULL, posts_wline },                  /* Sq */
Line 862  post_bf(POST_ARGS)
Line 861  post_bf(POST_ARGS)
                 return(1);                  return(1);
         else if (0 == strcmp(p, "Li"))          else if (0 == strcmp(p, "Li"))
                 return(1);                  return(1);
         else if (0 == strcmp(p, "Sm"))          else if (0 == strcmp(p, "Sy"))
                 return(1);                  return(1);
   
         return(mdoc_nerr(mdoc, head, EFONT));          return(mdoc_nerr(mdoc, head, EFONT));
Line 912  post_an(POST_ARGS)
Line 911  post_an(POST_ARGS)
         if (mdoc->last->args) {          if (mdoc->last->args) {
                 if (NULL == mdoc->last->child)                  if (NULL == mdoc->last->child)
                         return(1);                          return(1);
                 return(mdoc_nerr(mdoc, mdoc->last, ELINE));                  return(mdoc_nerr(mdoc, mdoc->last, ENOLINE));
         }          }
   
         if (mdoc->last->child)          if (mdoc->last->child)
Line 922  post_an(POST_ARGS)
Line 921  post_an(POST_ARGS)
   
   
 static int  static int
 post_args(POST_ARGS)  
 {  
   
         if (mdoc->last->args)  
                 return(1);  
         return(mdoc_nerr(mdoc, mdoc->last, ELINE));  
 }  
   
   
 static int  
 post_it(POST_ARGS)  post_it(POST_ARGS)
 {  {
         int               type, i, cols;          int               type, i, cols;
Line 1028  post_it(POST_ARGS)
Line 1017  post_it(POST_ARGS)
                 c = mdoc->last->child;                  c = mdoc->last->child;
                 for (i = 0; c && MDOC_HEAD == c->type; c = c->next)                  for (i = 0; c && MDOC_HEAD == c->type; c = c->next)
                         i++;                          i++;
                 if (i == cols)  
                   if (i < cols || i == (cols + 1)) {
                           if ( ! mdoc_vwarn(mdoc, mdoc->last->line,
                                           mdoc->last->pos, "column "
                                           "mismatch: have %d, want %d",
                                           i, cols))
                                   return(0);
                         break;                          break;
                 return(mdoc_verr(mdoc, mdoc->last->line, mdoc->last->pos,                  } else if (i == cols)
                                 "column mismatch (have %d, want %d)",                          break;
                                 i, cols));  
                   return(mdoc_verr(mdoc, mdoc->last->line,
                                   mdoc->last->pos, "column mismatch: "
                                   "have %d, want %d", i, cols));
         default:          default:
                 break;                  break;
         }          }
Line 1081  post_bl(POST_ARGS)
Line 1079  post_bl(POST_ARGS)
                 if (MDOC_BLOCK == n->type)                  if (MDOC_BLOCK == n->type)
                         if (MDOC_It == n->tok)                          if (MDOC_It == n->tok)
                                 continue;                                  continue;
                 return(mdoc_verr(mdoc, n->line, n->pos,                  return(mdoc_nerr(mdoc, n, EBADCHILD));
                                 "bad child of parent %s",  
                                 mdoc_macronames[mdoc->last->tok]));  
         }          }
   
         return(1);          return(1);
Line 1138  post_sp(POST_ARGS)
Line 1134  post_sp(POST_ARGS)
   
         if (NULL == mdoc->last->child)          if (NULL == mdoc->last->child)
                 return(1);                  return(1);
           else if ( ! eerr_eq1(mdoc))
                   return(0);
   
         assert(MDOC_TEXT == mdoc->last->child->type);          assert(MDOC_TEXT == mdoc->last->child->type);
         buf = mdoc->last->child->string;          buf = mdoc->last->child->string;
Line 1150  post_sp(POST_ARGS)
Line 1148  post_sp(POST_ARGS)
                 return(mdoc_nerr(mdoc, mdoc->last->child, ENUMFMT));                  return(mdoc_nerr(mdoc, mdoc->last->child, ENUMFMT));
   
         if ((errno == ERANGE && (lval == LONG_MAX || lval == LONG_MIN)) ||          if ((errno == ERANGE && (lval == LONG_MAX || lval == LONG_MIN)) ||
                         (lval > INT_MAX || lval < INT_MIN))                          (lval > INT_MAX || lval < 0))
                 return(mdoc_nerr(mdoc, mdoc->last->child, ENUMFMT));                  return(mdoc_nerr(mdoc, mdoc->last->child, ENUMFMT));
   
         return(1);          return(1);
Line 1170  post_st(POST_ARGS)
Line 1168  post_st(POST_ARGS)
   
   
 static int  static int
   post_rs(POST_ARGS)
   {
           struct mdoc_node        *nn;
   
           if (MDOC_BODY != mdoc->last->type)
                   return(1);
   
           for (nn = mdoc->last->child; nn; nn = nn->next)
                   switch (nn->tok) {
                   case(MDOC__Q):
                           /* FALLTHROUGH */
                   case(MDOC__C):
                           /* FALLTHROUGH */
                   case(MDOC__A):
                           /* FALLTHROUGH */
                   case(MDOC__B):
                           /* FALLTHROUGH */
                   case(MDOC__D):
                           /* FALLTHROUGH */
                   case(MDOC__I):
                           /* FALLTHROUGH */
                   case(MDOC__J):
                           /* FALLTHROUGH */
                   case(MDOC__N):
                           /* FALLTHROUGH */
                   case(MDOC__O):
                           /* FALLTHROUGH */
                   case(MDOC__P):
                           /* FALLTHROUGH */
                   case(MDOC__R):
                           /* FALLTHROUGH */
                   case(MDOC__T):
                           /* FALLTHROUGH */
                   case(MDOC__V):
                           break;
                   default:
                           return(mdoc_nerr(mdoc, nn, EBADCHILD));
                   }
   
           return(1);
   }
   
   
   static int
 post_sh(POST_ARGS)  post_sh(POST_ARGS)
 {  {
   
Line 1208  post_sh_body(POST_ARGS)
Line 1250  post_sh_body(POST_ARGS)
                         return(0);                          return(0);
         }          }
   
           assert(n);
         if (MDOC_BLOCK == n->type && MDOC_Nd == n->tok)          if (MDOC_BLOCK == n->type && MDOC_Nd == n->tok)
                 return(1);                  return(1);
         return(mdoc_nwarn(mdoc, mdoc->last, ENAMESECINC));          return(mdoc_nwarn(mdoc, mdoc->last, ENAMESECINC));

Legend:
Removed from v.1.35  
changed lines
  Added in v.1.44

CVSweb