[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.269 and 1.270

version 1.269, 2015/02/04 19:20:12 version 1.270, 2015/02/04 22:30:10
Line 70  static void  rewrite_macro2len(char **);
Line 70  static void  rewrite_macro2len(char **);
 static  void     bwarn_ge1(POST_ARGS);  static  void     bwarn_ge1(POST_ARGS);
 static  void     ewarn_eq1(POST_ARGS);  static  void     ewarn_eq1(POST_ARGS);
 static  void     ewarn_ge1(POST_ARGS);  static  void     ewarn_ge1(POST_ARGS);
 static  void     hwarn_eq0(POST_ARGS);  
   
 static  void     post_an(POST_ARGS);  static  void     post_an(POST_ARGS);
 static  void     post_at(POST_ARGS);  static  void     post_at(POST_ARGS);
Line 421  ewarn_ge1(POST_ARGS)
Line 420  ewarn_ge1(POST_ARGS)
 }  }
   
 static void  static void
 hwarn_eq0(POST_ARGS)  
 {  
         check_count(mdoc, MDOC_HEAD, CHECK_EQ, 0);  
 }  
   
 static void  
 check_args(struct mdoc *mdoc, struct mdoc_node *n)  check_args(struct mdoc *mdoc, struct mdoc_node *n)
 {  {
         int              i;          int              i;
Line 1088  static void
Line 1081  static void
 post_literal(POST_ARGS)  post_literal(POST_ARGS)
 {  {
   
         if (mdoc->last->tok == MDOC_Bd)  
                 hwarn_eq0(mdoc);  
         bwarn_ge1(mdoc);          bwarn_ge1(mdoc);
   
         /*          /*
Line 1415  post_bl_block_tag(POST_ARGS)
Line 1406  post_bl_block_tag(POST_ARGS)
 static void  static void
 post_bl_head(POST_ARGS)  post_bl_head(POST_ARGS)
 {  {
         struct mdoc_node *np, *nn, *nnp;          struct mdoc_node *nbl, *nh, *nch, *nnext;
         struct mdoc_argv *argv;          struct mdoc_argv *argv;
         int               i, j;          int               i, j;
   
         if (LIST_column != mdoc->last->norm->Bl.type) {          nh = mdoc->last;
                 /* FIXME: this should be ERROR class... */  
                 hwarn_eq0(mdoc);          if (nh->norm->Bl.type != LIST_column) {
                   if ((nch = nh->child) == NULL)
                           return;
                   mandoc_vmsg(MANDOCERR_ARG_EXCESS, mdoc->parse,
                       nch->line, nch->pos, "Bl ... %s", nch->string);
                   while (nch != NULL) {
                           mdoc_node_delete(mdoc, nch);
                           nch = nh->child;
                   }
                 return;                  return;
         }          }
   
Line 1431  post_bl_head(POST_ARGS)
Line 1430  post_bl_head(POST_ARGS)
          * lists where they're argument values following -column.           * lists where they're argument values following -column.
          */           */
   
         if (mdoc->last->child == NULL)          if (nh->child == NULL)
                 return;                  return;
   
         np = mdoc->last->parent;          nbl = nh->parent;
         assert(np->args);          for (j = 0; j < (int)nbl->args->argc; j++)
                   if (nbl->args->argv[j].arg == MDOC_Column)
         for (j = 0; j < (int)np->args->argc; j++)  
                 if (MDOC_Column == np->args->argv[j].arg)  
                         break;                          break;
   
         assert(j < (int)np->args->argc);          assert(j < (int)nbl->args->argc);
   
         /*          /*
          * Accommodate for new-style groff column syntax.  Shuffle the           * Accommodate for new-style groff column syntax.  Shuffle the
Line 1449  post_bl_head(POST_ARGS)
Line 1446  post_bl_head(POST_ARGS)
          * column field.  Then, delete the head children.           * column field.  Then, delete the head children.
          */           */
   
         argv = np->args->argv + j;          argv = nbl->args->argv + j;
         i = argv->sz;          i = argv->sz;
         argv->sz += mdoc->last->nchild;          argv->sz += nh->nchild;
         argv->value = mandoc_reallocarray(argv->value,          argv->value = mandoc_reallocarray(argv->value,
             argv->sz, sizeof(char *));              argv->sz, sizeof(char *));
   
         mdoc->last->norm->Bl.ncols = argv->sz;          nh->norm->Bl.ncols = argv->sz;
         mdoc->last->norm->Bl.cols = (void *)argv->value;          nh->norm->Bl.cols = (void *)argv->value;
   
         for (nn = mdoc->last->child; nn; i++) {          for (nch = nh->child; nch != NULL; nch = nnext) {
                 argv->value[i] = nn->string;                  argv->value[i++] = nch->string;
                 nn->string = NULL;                  nch->string = NULL;
                 nnp = nn;                  nnext = nch->next;
                 nn = nn->next;                  mdoc_node_delete(NULL, nch);
                 mdoc_node_delete(NULL, nnp);  
         }          }
           nh->nchild = 0;
         mdoc->last->nchild = 0;          nh->child = NULL;
         mdoc->last->child = NULL;  
 }  }
   
 static void  static void
Line 1553  post_bl(POST_ARGS)
Line 1548  post_bl(POST_ARGS)
 static void  static void
 post_bk(POST_ARGS)  post_bk(POST_ARGS)
 {  {
           struct mdoc_node        *n;
   
         hwarn_eq0(mdoc);          n = mdoc->last;
         bwarn_ge1(mdoc);  
           if (n->type == MDOC_BLOCK && n->body->child == NULL) {
                   mandoc_msg(MANDOCERR_MACRO_EMPTY,
                       mdoc->parse, n->line, n->pos, "Bk");
                   mdoc_node_delete(mdoc, n);
           }
 }  }
   
 static void  static void

Legend:
Removed from v.1.269  
changed lines
  Added in v.1.270

CVSweb