[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.45 and 1.50

version 1.45, 2009/10/15 02:56:51 version 1.50, 2009/10/24 05:52:14
Line 74  static int  eerr_eq0(POST_ARGS);
Line 74  static int  eerr_eq0(POST_ARGS);
 static  int      eerr_eq1(POST_ARGS);  static  int      eerr_eq1(POST_ARGS);
 static  int      eerr_ge1(POST_ARGS);  static  int      eerr_ge1(POST_ARGS);
 static  int      eerr_le2(POST_ARGS);  static  int      eerr_le2(POST_ARGS);
   static  int      eerr_le1(POST_ARGS);
 static  int      ewarn_ge1(POST_ARGS);  static  int      ewarn_ge1(POST_ARGS);
 static  int      herr_eq0(POST_ARGS);  static  int      herr_eq0(POST_ARGS);
 static  int      herr_ge1(POST_ARGS);  static  int      herr_ge1(POST_ARGS);
Line 93  static int  post_rs(POST_ARGS);
Line 94  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);
 static  int      post_sp(POST_ARGS);  
 static  int      post_st(POST_ARGS);  static  int      post_st(POST_ARGS);
 static  int      pre_an(PRE_ARGS);  static  int      pre_an(PRE_ARGS);
 static  int      pre_bd(PRE_ARGS);  static  int      pre_bd(PRE_ARGS);
Line 128  static v_post  posts_notext[] = { eerr_eq0, NULL };
Line 128  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_rs[] = { berr_ge1, herr_eq0, post_rs, 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[] = { eerr_le1, NULL };
 static  v_post   posts_ss[] = { herr_ge1, NULL };  static  v_post   posts_ss[] = { herr_ge1, NULL };
 static  v_post   posts_st[] = { eerr_eq1, post_st, NULL };  static  v_post   posts_st[] = { eerr_eq1, post_st, NULL };
 static  v_post   posts_text[] = { eerr_ge1, NULL };  static  v_post   posts_text[] = { eerr_ge1, NULL };
Line 195  const struct valids mdoc_valids[MDOC_MAX] = {
Line 195  const struct valids mdoc_valids[MDOC_MAX] = {
         { NULL, posts_text },                   /* Vt */          { NULL, posts_text },                   /* Vt */
         { NULL, posts_xr },                     /* Xr */          { NULL, posts_xr },                     /* Xr */
         { NULL, posts_text },                   /* %A */          { NULL, posts_text },                   /* %A */
         { NULL, posts_text },                   /* %B */          { NULL, posts_text },                   /* %B */ /* FIXME: can be used outside Rs/Re. */
         { NULL, posts_text },                   /* %D */          { NULL, posts_text },                   /* %D */
         { NULL, posts_text },                   /* %I */          { NULL, posts_text },                   /* %I */
         { NULL, posts_text },                   /* %J */          { NULL, posts_text },                   /* %J */
Line 203  const struct valids mdoc_valids[MDOC_MAX] = {
Line 203  const struct valids mdoc_valids[MDOC_MAX] = {
         { NULL, posts_text },                   /* %O */          { NULL, posts_text },                   /* %O */
         { NULL, posts_text },                   /* %P */          { NULL, posts_text },                   /* %P */
         { NULL, posts_text },                   /* %R */          { NULL, posts_text },                   /* %R */
         { NULL, posts_text },                   /* %T */          { NULL, posts_text },                   /* %T */ /* FIXME: can be used outside Rs/Re. */
         { NULL, posts_text },                   /* %V */          { NULL, posts_text },                   /* %V */
         { NULL, NULL },                         /* Ac */          { NULL, NULL },                         /* Ac */
         { NULL, NULL },                         /* Ao */          { NULL, NULL },                         /* Ao */
Line 273  const struct valids mdoc_valids[MDOC_MAX] = {
Line 273  const struct valids mdoc_valids[MDOC_MAX] = {
         { NULL, posts_text },                   /* %Q */          { NULL, posts_text },                   /* %Q */
         { NULL, posts_notext },                 /* br */          { NULL, posts_notext },                 /* br */
         { NULL, posts_sp },                     /* sp */          { NULL, posts_sp },                     /* sp */
           { NULL, posts_text },                   /* %U */
 };  };
   
   
Line 408  CHECK_BODY_DEFN(ge1, err, err_child_gt, 0) /* berr_ge1
Line 409  CHECK_BODY_DEFN(ge1, err, err_child_gt, 0) /* berr_ge1
 CHECK_ELEM_DEFN(ge1, warn, warn_child_gt, 0)    /* ewarn_gt1() */  CHECK_ELEM_DEFN(ge1, warn, warn_child_gt, 0)    /* ewarn_gt1() */
 CHECK_ELEM_DEFN(eq1, err, err_child_eq, 1)      /* eerr_eq1() */  CHECK_ELEM_DEFN(eq1, err, err_child_eq, 1)      /* eerr_eq1() */
 CHECK_ELEM_DEFN(le2, err, err_child_lt, 3)      /* eerr_le2() */  CHECK_ELEM_DEFN(le2, err, err_child_lt, 3)      /* eerr_le2() */
   CHECK_ELEM_DEFN(le1, err, err_child_lt, 2)      /* eerr_le1() */
 CHECK_ELEM_DEFN(eq0, err, err_child_eq, 0)      /* eerr_eq0() */  CHECK_ELEM_DEFN(eq0, err, err_child_eq, 0)      /* eerr_eq0() */
 CHECK_ELEM_DEFN(ge1, err, err_child_gt, 0)      /* eerr_ge1() */  CHECK_ELEM_DEFN(ge1, err, err_child_gt, 0)      /* eerr_ge1() */
 CHECK_HEAD_DEFN(eq0, err, err_child_eq, 0)      /* herr_eq0() */  CHECK_HEAD_DEFN(eq0, err, err_child_eq, 0)      /* herr_eq0() */
Line 695  pre_bd(PRE_ARGS)
Line 697  pre_bd(PRE_ARGS)
         for (i = 0, err = type = 0; ! err &&          for (i = 0, err = type = 0; ! err &&
                         i < (int)n->args->argc; i++)                          i < (int)n->args->argc; i++)
                 switch (n->args->argv[i].arg) {                  switch (n->args->argv[i].arg) {
                   case (MDOC_Centred):
                           /* FALLTHROUGH */
                 case (MDOC_Ragged):                  case (MDOC_Ragged):
                         /* FALLTHROUGH */                          /* FALLTHROUGH */
                 case (MDOC_Unfilled):                  case (MDOC_Unfilled):
Line 702  pre_bd(PRE_ARGS)
Line 706  pre_bd(PRE_ARGS)
                 case (MDOC_Filled):                  case (MDOC_Filled):
                         /* FALLTHROUGH */                          /* FALLTHROUGH */
                 case (MDOC_Literal):                  case (MDOC_Literal):
                         /* FALLTHROUGH */  
                 case (MDOC_File):  
                         if (0 == type++)                          if (0 == type++)
                                 break;                                  break;
                         return(mdoc_nerr(mdoc, n, EMULTIDISP));                          return(mdoc_nerr(mdoc, n, EMULTIDISP));
Line 1135  post_root(POST_ARGS)
Line 1137  post_root(POST_ARGS)
   
   
 static int  static int
 post_sp(POST_ARGS)  
 {  
         long             lval;  
         char            *ep, *buf;  
   
         if (NULL == mdoc->last->child)  
                 return(1);  
         else if ( ! eerr_eq1(mdoc))  
                 return(0);  
   
         assert(MDOC_TEXT == mdoc->last->child->type);  
         buf = mdoc->last->child->string;  
         assert(buf);  
   
         /* From OpenBSD's strtol(3). */  
         errno = 0;  
         lval = strtol(buf, &ep, 10);  
         if (buf[0] == '\0' || *ep != '\0')  
                 return(mdoc_nerr(mdoc, mdoc->last->child, ENUMFMT));  
   
         if ((errno == ERANGE && (lval == LONG_MAX || lval == LONG_MIN)) ||  
                         (lval > INT_MAX || lval < 0))  
                 return(mdoc_nerr(mdoc, mdoc->last->child, ENUMFMT));  
   
         return(1);  
 }  
   
   
   
   
 static int  
 post_st(POST_ARGS)  post_st(POST_ARGS)
 {  {
   
Line 1185  post_rs(POST_ARGS)
Line 1156  post_rs(POST_ARGS)
   
         for (nn = mdoc->last->child; nn; nn = nn->next)          for (nn = mdoc->last->child; nn; nn = nn->next)
                 switch (nn->tok) {                  switch (nn->tok) {
                   case(MDOC__U):
                           /* FALLTHROUGH */
                 case(MDOC__Q):                  case(MDOC__Q):
                         /* FALLTHROUGH */                          /* FALLTHROUGH */
                 case(MDOC__C):                  case(MDOC__C):

Legend:
Removed from v.1.45  
changed lines
  Added in v.1.50

CVSweb