[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.93 and 1.96

version 1.93, 2010/06/12 10:09:19 version 1.96, 2010/06/12 11:58:22
Line 539  pre_bl(PRE_ARGS)
Line 539  pre_bl(PRE_ARGS)
                 assert(n->parent);                  assert(n->parent);
                 assert(MDOC_BLOCK == n->parent->type);                  assert(MDOC_BLOCK == n->parent->type);
                 assert(MDOC_Bl == n->parent->tok);                  assert(MDOC_Bl == n->parent->tok);
                 assert(LIST__NONE != n->parent->data.list);                  assert(LIST__NONE != n->parent->data.Bl.type);
                 n->data.list = n->parent->data.list;                  memcpy(&n->data.Bl, &n->parent->data.Bl,
                                   sizeof(struct mdoc_bl));
                 return(1);                  return(1);
         }          }
   
Line 550  pre_bl(PRE_ARGS)
Line 551  pre_bl(PRE_ARGS)
          * ones.  If we find no list type, we default to LIST_item.           * ones.  If we find no list type, we default to LIST_item.
          */           */
   
         assert(LIST__NONE == n->data.list);          assert(LIST__NONE == n->data.Bl.type);
         offs = width = cmpt = -1;          offs = width = cmpt = -1;
   
         /* LINTED */          /* LINTED */
Line 618  pre_bl(PRE_ARGS)
Line 619  pre_bl(PRE_ARGS)
   
                 /* Check: multiple list types. */                  /* Check: multiple list types. */
   
                 if (LIST__NONE != lt && n->data.list != LIST__NONE)                  if (LIST__NONE != lt && n->data.Bl.type != LIST__NONE)
                         if ( ! mdoc_nmsg(mdoc, n, MANDOCERR_LISTREP))                          if ( ! mdoc_nmsg(mdoc, n, MANDOCERR_LISTREP))
                                 return(0);                                  return(0);
   
                 /* Assign list type. */                  /* Assign list type. */
   
                 if (LIST__NONE != lt && n->data.list == LIST__NONE)                  if (LIST__NONE != lt && n->data.Bl.type == LIST__NONE)
                         n->data.list = lt;                          n->data.Bl.type = lt;
   
                 /* The list type should come first. */                  /* The list type should come first. */
   
                 if (n->data.list == LIST__NONE)                  if (n->data.Bl.type == LIST__NONE)
                         if (width >= 0 || offs >= 0 || cmpt >= 0)                          if (width >= 0 || offs >= 0 || cmpt >= 0)
                                 if ( ! mdoc_nmsg(mdoc, n, MANDOCERR_LISTFIRST))                                  if ( ! mdoc_nmsg(mdoc, n, MANDOCERR_LISTFIRST))
                                         return(0);                                          return(0);
Line 639  pre_bl(PRE_ARGS)
Line 640  pre_bl(PRE_ARGS)
   
         /* Allow lists to default to LIST_item. */          /* Allow lists to default to LIST_item. */
   
         if (LIST__NONE == n->data.list) {          if (LIST__NONE == n->data.Bl.type) {
                 if ( ! mdoc_nmsg(mdoc, n, MANDOCERR_LISTTYPE))                  if ( ! mdoc_nmsg(mdoc, n, MANDOCERR_LISTTYPE))
                         return(0);                          return(0);
                 n->data.list = LIST_item;                  n->data.Bl.type = LIST_item;
         }          }
   
         /*          /*
Line 651  pre_bl(PRE_ARGS)
Line 652  pre_bl(PRE_ARGS)
          * and must also be warned.           * and must also be warned.
          */           */
   
         switch (n->data.list) {          switch (n->data.Bl.type) {
         case (LIST_tag):          case (LIST_tag):
                 if (width >= 0)                  if (width >= 0)
                         break;                          break;
Line 683  pre_bl(PRE_ARGS)
Line 684  pre_bl(PRE_ARGS)
 static int  static int
 pre_bd(PRE_ARGS)  pre_bd(PRE_ARGS)
 {  {
         int              i;          int              i, dup, comp;
         enum mdoc_disp   dt;          enum mdoc_disp   dt;
           const char      *offs;
   
         if (MDOC_BLOCK != n->type) {          if (MDOC_BLOCK != n->type) {
                 assert(n->parent);                  assert(n->parent);
                 assert(MDOC_BLOCK == n->parent->type);                  assert(MDOC_BLOCK == n->parent->type);
                 assert(MDOC_Bd == n->parent->tok);                  assert(MDOC_Bd == n->parent->tok);
                 assert(DISP__NONE != n->parent->data.disp);                  assert(DISP__NONE != n->parent->data.Bd.type);
                 n->data.disp = n->parent->data.disp;                  memcpy(&n->data.Bd, &n->parent->data.Bd,
                                   sizeof(struct mdoc_bd));
                 return(1);                  return(1);
         }          }
   
         assert(DISP__NONE == n->data.disp);          assert(DISP__NONE == n->data.Bd.type);
   
         /* LINTED */          /* LINTED */
         for (i = 0; n->args && i < (int)n->args->argc; i++) {          for (i = 0; n->args && i < (int)n->args->argc; i++) {
                 dt = DISP__NONE;                  dt = DISP__NONE;
                   dup = comp = 0;
                   offs = NULL;
   
                 switch (n->args->argv[i].arg) {                  switch (n->args->argv[i].arg) {
                 case (MDOC_Centred):                  case (MDOC_Centred):
                         dt = DISP_centred;                          dt = DISP_centred;
Line 720  pre_bd(PRE_ARGS)
Line 726  pre_bd(PRE_ARGS)
                         mdoc_nmsg(mdoc, n, MANDOCERR_BADDISP);                          mdoc_nmsg(mdoc, n, MANDOCERR_BADDISP);
                         return(0);                          return(0);
                 case (MDOC_Offset):                  case (MDOC_Offset):
                         /* FALLTHROUGH */                          /* NB: this can be empty! */
                           if (n->args->argv[i].sz) {
                                   offs = n->args->argv[i].value[0];
                                   dup = (NULL != n->data.Bd.offs);
                                   break;
                           }
                           if ( ! mdoc_nmsg(mdoc, n, MANDOCERR_IGNARGV))
                                   return(0);
                           break;
                 case (MDOC_Compact):                  case (MDOC_Compact):
                         /* FALLTHROUGH */                          comp = 1;
                 default:                          dup = n->data.Bd.comp;
                         break;                          break;
                   default:
                           abort();
                           /* NOTREACHED */
                 }                  }
   
                 if (DISP__NONE != dt && n->data.disp != DISP__NONE)                  /* Check whether we have duplicates. */
   
                   if (dup && ! mdoc_nmsg(mdoc, n, MANDOCERR_ARGVREP))
                           return(0);
   
                   /* Make our auxiliary assignments. */
   
                   if (offs && ! dup)
                           n->data.Bd.offs = offs;
                   if (comp && ! dup)
                           n->data.Bd.comp = comp;
   
                   /* Check whether a type has already been assigned. */
   
                   if (DISP__NONE != dt && n->data.Bd.type != DISP__NONE)
                         if ( ! mdoc_nmsg(mdoc, n, MANDOCERR_DISPREP))                          if ( ! mdoc_nmsg(mdoc, n, MANDOCERR_DISPREP))
                                 return(0);                                  return(0);
   
                 if (DISP__NONE != dt && n->data.disp == DISP__NONE)                  /* Make our type assignment. */
                         n->data.disp = dt;  
                   if (DISP__NONE != dt && n->data.Bd.type == DISP__NONE)
                           n->data.Bd.type = dt;
         }          }
   
         if (DISP__NONE == n->data.disp) {          if (DISP__NONE == n->data.Bd.type) {
                 if ( ! mdoc_nmsg(mdoc, n, MANDOCERR_DISPTYPE))                  if ( ! mdoc_nmsg(mdoc, n, MANDOCERR_DISPTYPE))
                         return(0);                          return(0);
                 n->data.disp = DISP_ragged;                  n->data.Bd.type = DISP_ragged;
         }          }
   
         return(1);          return(1);
Line 999  post_it(POST_ARGS)
Line 1032  post_it(POST_ARGS)
                 return(1);                  return(1);
   
         n = mdoc->last->parent->parent;          n = mdoc->last->parent->parent;
         lt = n->data.list;          lt = n->data.Bl.type;
   
         if (LIST__NONE == lt) {          if (LIST__NONE == lt) {
                 mdoc_nmsg(mdoc, mdoc->last, MANDOCERR_LISTTYPE);                  mdoc_nmsg(mdoc, mdoc->last, MANDOCERR_LISTTYPE);
Line 1091  post_bl_head(POST_ARGS) 
Line 1124  post_bl_head(POST_ARGS) 
         assert(mdoc->last->parent);          assert(mdoc->last->parent);
         n = mdoc->last->parent;          n = mdoc->last->parent;
   
         if (LIST_column == n->data.list) {          if (LIST_column == n->data.Bl.type) {
                 for (i = 0; i < (int)n->args->argc; i++)                  for (i = 0; i < (int)n->args->argc; i++)
                         if (MDOC_Column == n->args->argv[i].arg)                          if (MDOC_Column == n->args->argv[i].arg)
                                 break;                                  break;

Legend:
Removed from v.1.93  
changed lines
  Added in v.1.96

CVSweb