[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.129 and 1.130

version 1.129, 2010/11/29 16:06:46 version 1.130, 2010/11/30 10:32:05
Line 1402  post_it(POST_ARGS)
Line 1402  post_it(POST_ARGS)
 static int  static int
 post_bl_head(POST_ARGS)  post_bl_head(POST_ARGS)
 {  {
         struct mdoc_node *n;          struct mdoc_node *np, *nn, *nnp;
           int               i, j;
   
         assert(mdoc->last->parent);          if (LIST_column != mdoc->last->data.Bl->type)
         n = mdoc->last->parent;                  /* FIXME: this should be ERROR class... */
                   return(hwarn_eq0(mdoc));
   
         if (LIST_column == n->data.Bl->type) {          /*
                 if (n->data.Bl->ncols && mdoc->last->nchild) {           * Convert old-style lists, where the column width specifiers
                         mdoc_nmsg(mdoc, n, MANDOCERR_COLUMNS);           * trail as macro parameters, to the new-style ("normal-form")
                         return(0);           * lists where they're argument values following -column.
                 }           */
   
           /* First, disallow both types and allow normal-form. */
   
           /*
            * TODO: technically, we can accept both and just merge the two
            * lists, but I'll leave that for another day.
            */
   
           if (mdoc->last->data.Bl->ncols && mdoc->last->nchild) {
                   mdoc_nmsg(mdoc, mdoc->last, MANDOCERR_COLUMNS);
                   return(0);
           } else if (NULL == mdoc->last->child)
                 return(1);                  return(1);
   
           np = mdoc->last->parent;
           assert(np->args);
   
           for (j = 0; j < (int)np->args->argc; j++)
                   if (MDOC_Column == np->args->argv[j].arg)
                           break;
   
           assert(j < (int)np->args->argc);
           assert(0 == np->args->argv[j].sz);
   
           /*
            * Accomodate for new-style groff column syntax.  Shuffle the
            * child nodes, all of which must be TEXT, as arguments for the
            * column field.  Then, delete the head children.
            */
   
           np->args->argv[j].sz = (size_t)mdoc->last->nchild;
           np->args->argv[j].value = mandoc_malloc
                   ((size_t)mdoc->last->nchild * sizeof(char *));
   
           mdoc->last->data.Bl->ncols = np->args->argv[j].sz;
           mdoc->last->data.Bl->cols = (const char **)np->args->argv[j].value;
   
           for (i = 0, nn = mdoc->last->child; nn; i++) {
                   np->args->argv[j].value[i] = nn->string;
                   nn->string = NULL;
                   nnp = nn;
                   nn = nn->next;
                   mdoc_node_delete(NULL, nnp);
         }          }
   
         /* FIXME: should be ERROR class. */          mdoc->last->nchild = 0;
         return(hwarn_eq0(mdoc));          mdoc->last->child = NULL;
 }  
   
           return(1);
   }
   
 static int  static int
 post_bl(POST_ARGS)  post_bl(POST_ARGS)

Legend:
Removed from v.1.129  
changed lines
  Added in v.1.130

CVSweb