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

Diff for /mandoc/Attic/validate.c between version 1.25 and 1.26

version 1.25, 2009/01/12 12:52:21 version 1.26, 2009/01/12 16:39:57
Line 42  static int pre_prologue(struct mdoc *, struct mdoc_nod
Line 42  static int pre_prologue(struct mdoc *, struct mdoc_nod
   
 static  int     headchild_err_ge1(struct mdoc *);  static  int     headchild_err_ge1(struct mdoc *);
 static  int     headchild_err_eq0(struct mdoc *);  static  int     headchild_err_eq0(struct mdoc *);
   static  int     elemchild_err_eq0(struct mdoc *);
 static  int     elemchild_err_ge1(struct mdoc *);  static  int     elemchild_err_ge1(struct mdoc *);
 static  int     elemchild_warn_eq0(struct mdoc *);  static  int     elemchild_warn_eq0(struct mdoc *);
 static  int     bodychild_warn_ge1(struct mdoc *);  static  int     bodychild_warn_ge1(struct mdoc *);
   static  int     elemchild_warn_ge1(struct mdoc *);
 static  int     post_sh(struct mdoc *);  static  int     post_sh(struct mdoc *);
 static  int     post_bl(struct mdoc *);  static  int     post_bl(struct mdoc *);
 static  int     post_it(struct mdoc *);  static  int     post_it(struct mdoc *);
Line 57  static v_pre pres_it[] = { pre_it, NULL };
Line 59  static v_pre pres_it[] = { pre_it, NULL };
 static  v_post  posts_bd[] = { headchild_err_eq0,  static  v_post  posts_bd[] = { headchild_err_eq0,
                         bodychild_warn_ge1, NULL };                          bodychild_warn_ge1, NULL };
   
   static  v_post  posts_text[] = { elemchild_err_ge1, NULL };
   static  v_post  posts_wtext[] = { elemchild_warn_ge1, NULL };
   static  v_post  posts_notext[] = { elemchild_err_eq0, NULL };
 static  v_post  posts_sh[] = { headchild_err_ge1,  static  v_post  posts_sh[] = { headchild_err_ge1,
                         bodychild_warn_ge1, post_sh, NULL };                          bodychild_warn_ge1, post_sh, NULL };
 static  v_post  posts_bl[] = { headchild_err_eq0,  static  v_post  posts_bl[] = { headchild_err_eq0,
Line 64  static v_post posts_bl[] = { headchild_err_eq0, 
Line 69  static v_post posts_bl[] = { headchild_err_eq0, 
 static  v_post  posts_it[] = { post_it, NULL };  static  v_post  posts_it[] = { post_it, NULL };
 static  v_post  posts_ss[] = { headchild_err_ge1, NULL };  static  v_post  posts_ss[] = { headchild_err_ge1, NULL };
 static  v_post  posts_pp[] = { elemchild_warn_eq0, NULL };  static  v_post  posts_pp[] = { elemchild_warn_eq0, NULL };
 static  v_post  posts_dd[] = { elemchild_err_ge1, NULL };  
 static  v_post  posts_d1[] = { headchild_err_ge1, NULL };  static  v_post  posts_d1[] = { headchild_err_ge1, NULL };
   
   
 const   struct valids mdoc_valids[MDOC_MAX] = {  const   struct valids mdoc_valids[MDOC_MAX] = {
         { NULL, NULL }, /* \" */          { NULL, NULL }, /* \" */
         { pres_prologue, posts_dd }, /* Dd */          { pres_prologue, posts_text }, /* Dd */
         { pres_prologue, NULL }, /* Dt */          { pres_prologue, NULL }, /* Dt */
         { pres_prologue, NULL }, /* Os */          { pres_prologue, NULL }, /* Os */
         { NULL, posts_sh }, /* Sh */ /* FIXME: preceding Pp. */          /* FIXME: preceding Pp. */
         { NULL, posts_ss }, /* Ss */ /* FIXME: preceding Pp. */          /* FIXME: NAME section internal ordering. */
         { NULL, posts_pp }, /* Pp */ /* FIXME: proceeding... */          { NULL, posts_sh }, /* Sh */
           /* FIXME: preceding Pp. */
           { NULL, posts_ss }, /* Ss */
           /* FIXME: proceeding... */
           { NULL, posts_pp }, /* Pp */
         { pres_d1, posts_d1 }, /* D1 */          { pres_d1, posts_d1 }, /* D1 */
         { pres_d1, posts_d1 }, /* Dl */          { pres_d1, posts_d1 }, /* Dl */
         { pres_bd, posts_bd }, /* Bd */ /* FIXME: preceding Pp. */           /* FIXME: preceding Pp. */
           { pres_bd, posts_bd }, /* Bd */
         { NULL, NULL }, /* Ed */          { NULL, NULL }, /* Ed */
         { pres_bl, posts_bl }, /* Bl */ /* FIXME: preceding Pp. */          /* FIXME: preceding Pp. */
           { pres_bl, posts_bl }, /* Bl */
         { NULL, NULL }, /* El */          { NULL, NULL }, /* El */
         { pres_it, posts_it }, /* It */          { pres_it, posts_it }, /* It */
         { NULL, NULL }, /* Ad */          { NULL, posts_text }, /* Ad */
         { NULL, NULL }, /* An */          /* FIXME */
           { NULL, NULL }, /* An */
         { NULL, NULL }, /* Ar */          { NULL, NULL }, /* Ar */
         { NULL, NULL }, /* Cd */  
           { NULL, posts_text }, /* Cd */ /* FIXME: section 4 only. */
         { NULL, NULL }, /* Cm */          { NULL, NULL }, /* Cm */
         { NULL, NULL }, /* Dv */          { NULL, posts_text }, /* Dv */
         { NULL, NULL }, /* Er */          { NULL, posts_text }, /* Er */ /* FIXME: section 2 only. */
         { NULL, NULL }, /* Ev */          { NULL, posts_text }, /* Ev */
         { NULL, NULL }, /* Ex */          { NULL, posts_notext }, /* Ex */ /* FIXME: sections 1,6,8 only. */ /* -std required */
         { NULL, NULL }, /* Fa */          { NULL, posts_text }, /* Fa */
         { NULL, NULL }, /* Fd */          { NULL, NULL }, /* Fd */ /* FIXME: SYNOPSIS section. */
         { NULL, NULL }, /* Fl */          { NULL, NULL }, /* Fl */
         { NULL, NULL }, /* Fn */          { NULL, posts_text }, /* Fn */
         { NULL, NULL }, /* Ft */          { NULL, NULL }, /* Ft */
         { NULL, NULL }, /* Ic */          { NULL, posts_text }, /* Ic */
         { NULL, NULL }, /* In */          { NULL, posts_wtext }, /* In */
         { NULL, NULL }, /* Li */          { NULL, posts_text }, /* Li */
         { NULL, NULL }, /* Nd */          { NULL, posts_wtext }, /* Nd */
         { NULL, NULL }, /* Nm */          { NULL, NULL }, /* Nm */  /* FIXME: If name not set? */
         { NULL, NULL }, /* Op */          { NULL, posts_wtext }, /* Op */
         { NULL, NULL }, /* Ot */          { NULL, NULL }, /* Ot */
         { NULL, NULL }, /* Pa */          { NULL, NULL }, /* Pa */
         { NULL, NULL }, /* Rv */          { NULL, posts_notext }, /* Rv */ /* -std required */
         { NULL, NULL }, /* St */          { NULL, posts_notext }, /* St */ /* arg required */
         { NULL, NULL }, /* Va */          { NULL, posts_text }, /* Va */
         { NULL, NULL }, /* Vt */          { NULL, posts_text }, /* Vt */
         { NULL, NULL }, /* Xr */          { NULL, NULL }, /* Xr */ /* FIXME */
         { NULL, NULL }, /* %A */          { NULL, posts_text }, /* %A */
         { NULL, NULL }, /* %B */          { NULL, posts_text }, /* %B */
         { NULL, NULL }, /* %D */          { NULL, posts_text }, /* %D */
         { NULL, NULL }, /* %I */          { NULL, posts_text }, /* %I */
         { NULL, NULL }, /* %J */          { NULL, posts_text }, /* %J */
         { NULL, NULL }, /* %N */          { NULL, posts_text }, /* %N */
         { NULL, NULL }, /* %O */          { NULL, posts_text }, /* %O */
         { NULL, NULL }, /* %P */          { NULL, posts_text }, /* %P */
         { NULL, NULL }, /* %R */          { NULL, posts_text }, /* %R */
         { NULL, NULL }, /* %T */          { NULL, posts_text }, /* %T */
         { NULL, NULL }, /* %V */          { NULL, posts_text }, /* %V */
         { NULL, NULL }, /* Ac */          { NULL, NULL }, /* Ac */
         { NULL, NULL }, /* Ao */          { NULL, NULL }, /* Ao */
         { NULL, NULL }, /* Aq */          { NULL, posts_wtext }, /* Aq */
         { NULL, NULL }, /* At */ /* FIXME */          { NULL, NULL }, /* At */ /* FIXME */
         { NULL, NULL }, /* Bc */          { NULL, NULL }, /* Bc */
         { NULL, NULL }, /* Bf */          { NULL, NULL }, /* Bf */
         { NULL, NULL }, /* Bo */          { NULL, NULL }, /* Bo */
         { NULL, NULL }, /* Bq */          { NULL, posts_wtext }, /* Bq */
         { NULL, NULL }, /* Bsx */          { NULL, NULL }, /* Bsx */
         { NULL, NULL }, /* Bx */          { NULL, NULL }, /* Bx */
         { NULL, NULL }, /* Db */          { NULL, NULL }, /* Db */ /* FIXME: boolean */
         { NULL, NULL }, /* Dc */          { NULL, NULL }, /* Dc */
         { NULL, NULL }, /* Do */          { NULL, NULL }, /* Do */
         { NULL, NULL }, /* Dq */          { NULL, posts_wtext }, /* Dq */
         { NULL, NULL }, /* Ec */          { NULL, NULL }, /* Ec */
         { NULL, NULL }, /* Ef */ /* -symbolic, etc. */          { NULL, NULL }, /* Ef */ /* -symbolic, etc. */
         { NULL, NULL }, /* Em */          { NULL, posts_text }, /* Em */
         { NULL, NULL }, /* Eo */          { NULL, NULL }, /* Eo */
         { NULL, NULL }, /* Fx */          { NULL, NULL }, /* Fx */
         { NULL, NULL }, /* Ms */          { NULL, posts_text }, /* Ms */ /* FIXME: which symbols? */
         { NULL, NULL }, /* No */          { NULL, posts_notext }, /* No */
         { NULL, NULL }, /* Ns */          { NULL, posts_notext }, /* Ns */
         { NULL, NULL }, /* Nx */          { NULL, NULL }, /* Nx */
         { NULL, NULL }, /* Ox */          { NULL, NULL }, /* Ox */
         { NULL, NULL }, /* Pc */          { NULL, NULL }, /* Pc */
         { NULL, NULL }, /* Pf */ /* 2 or more arguments */          { NULL, NULL }, /* Pf */ /* FIXME: 2 or more arguments */
         { NULL, NULL }, /* Po */          { NULL, NULL }, /* Po */
         { NULL, NULL }, /* Pq */ /* FIXME: ignore following Sh/Ss */          { NULL, posts_wtext }, /* Pq */ /* FIXME: ignore following Sh/Ss */
         { NULL, NULL }, /* Qc */          { NULL, NULL }, /* Qc */
         { NULL, NULL }, /* Ql */          { NULL, posts_wtext }, /* Ql */
         { NULL, NULL }, /* Qo */          { NULL, NULL }, /* Qo */
         { NULL, NULL }, /* Qq */          { NULL, posts_wtext }, /* Qq */
         { NULL, NULL }, /* Re */          { NULL, NULL }, /* Re */
         { NULL, NULL }, /* Rs */          { NULL, NULL }, /* Rs */
         { NULL, NULL }, /* Sc */          { NULL, NULL }, /* Sc */
         { NULL, NULL }, /* So */          { NULL, NULL }, /* So */
         { NULL, NULL }, /* Sq */          { NULL, posts_wtext }, /* Sq */
         { NULL, NULL }, /* Sm */          { NULL, NULL }, /* Sm */ /* FIXME: boolean */
         { NULL, NULL }, /* Sx */          { NULL, posts_text }, /* Sx */
         { NULL, NULL }, /* Sy */          { NULL, posts_text }, /* Sy */
         { NULL, NULL }, /* Tn */          { NULL, posts_text }, /* Tn */
         { NULL, NULL }, /* Ux */          { NULL, NULL }, /* Ux */
         { NULL, NULL }, /* Xc */          { NULL, NULL }, /* Xc */
         { NULL, NULL }, /* Xo */          { NULL, NULL }, /* Xo */
Line 171  const struct valids mdoc_valids[MDOC_MAX] = {
Line 183  const struct valids mdoc_valids[MDOC_MAX] = {
         { NULL, NULL }, /* Oc */          { NULL, NULL }, /* Oc */
         { NULL, NULL }, /* Bk */          { NULL, NULL }, /* Bk */
         { NULL, NULL }, /* Ek */          { NULL, NULL }, /* Ek */
         { NULL, NULL }, /* Bt */          { NULL, posts_notext }, /* Bt */
         { NULL, NULL }, /* Hf */          { NULL, NULL }, /* Hf */
         { NULL, NULL }, /* Fr */          { NULL, NULL }, /* Fr */
         { NULL, NULL }, /* Ud */          { NULL, posts_notext }, /* Ud */
 };  };
   
   
Line 203  elemchild_warn_eq0(struct mdoc *mdoc)
Line 215  elemchild_warn_eq0(struct mdoc *mdoc)
   
   
 static int  static int
   elemchild_warn_ge1(struct mdoc *mdoc)
   {
   
           assert(MDOC_ELEM == mdoc->last->type);
           if (mdoc->last->child)
                   return(1);
           return(mdoc_warn(mdoc, WARN_ARGS_GE1));
   }
   
   
   static int
   elemchild_err_eq0(struct mdoc *mdoc)
   {
   
           assert(MDOC_ELEM == mdoc->last->type);
           if (NULL == mdoc->last->child)
                   return(1);
           return(mdoc_err(mdoc, ERR_ARGS_EQ0));
   }
   
   
   static int
 elemchild_err_ge1(struct mdoc *mdoc)  elemchild_err_ge1(struct mdoc *mdoc)
 {  {
   
Line 293  pre_bl(struct mdoc *mdoc, struct mdoc_node *node)
Line 327  pre_bl(struct mdoc *mdoc, struct mdoc_node *node)
                 case (MDOC_Ohang):                  case (MDOC_Ohang):
                         /* FALLTHROUGH */                          /* FALLTHROUGH */
                 case (MDOC_Inset):                  case (MDOC_Inset):
                           /* FALLTHROUGH */
                   case (MDOC_Column):
                         if (type)                          if (type)
                                 err++;                                  err++;
                         type++;                          type++;
Line 449  post_it(struct mdoc *mdoc)
Line 485  post_it(struct mdoc *mdoc)
   
         argc = n->data.block.argc;          argc = n->data.block.argc;
         type = TYPE_NONE;          type = TYPE_NONE;
   
           /* Some types require block-head, some not. */
   
         for (i = 0; TYPE_NONE == type && i < argc; i++)          for (i = 0; TYPE_NONE == type && i < argc; i++)
                 switch (n->data.block.argv[(int)i].arg) {                  switch (n->data.block.argv[(int)i].arg) {
Line 513  post_it(struct mdoc *mdoc)
Line 551  post_it(struct mdoc *mdoc)
                 if ( ! mdoc_warn(mdoc, WARN_SYNTAX_NOBODY))                  if ( ! mdoc_warn(mdoc, WARN_SYNTAX_NOBODY))
                         return(0);                          return(0);
   
         /* TODO: make sure columns are aligned. */          if (MDOC_Column != sv)
         assert(MDOC_Column != sv);                  return(1);
   
         return(1);          /* Make sure the number of columns is sane. */
   
           sv = mdoc->last->parent->parent->data.block.argv->sz;
           n = mdoc->last->data.block.head->child;
   
           for (i = 0; n; n = n->next)
                   i++;
   
           if (i == (size_t)sv)
                   return(1);
           return(mdoc_err(mdoc, ERR_SYNTAX_ARGFORM));
   
 #undef  TYPE_NONE  #undef  TYPE_NONE
 #undef  TYPE_BODY  #undef  TYPE_BODY

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

CVSweb