[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.98 and 1.99

version 1.98, 2010/06/12 12:38:01 version 1.99, 2010/06/13 21:02:49
Line 532  pre_display(PRE_ARGS)
Line 532  pre_display(PRE_ARGS)
 static int  static int
 pre_bl(PRE_ARGS)  pre_bl(PRE_ARGS)
 {  {
         int              i, width, comp, dup;          int              i, comp, dup;
         const char      *offs;          const char      *offs, *width;
         enum mdoc_list   lt;          enum mdoc_list   lt;
   
         if (MDOC_BLOCK != n->type) {          if (MDOC_BLOCK != n->type) {
Line 553  pre_bl(PRE_ARGS)
Line 553  pre_bl(PRE_ARGS)
          */           */
   
         assert(LIST__NONE == n->data.Bl.type);          assert(LIST__NONE == n->data.Bl.type);
         width = -1;  
   
         /* LINTED */          /* LINTED */
         for (i = 0; n->args && i < (int)n->args->argc; i++) {          for (i = 0; n->args && i < (int)n->args->argc; i++) {
                 lt = LIST__NONE;                  lt = LIST__NONE;
                 dup = comp = 0;                  dup = comp = 0;
                 offs = NULL;                  width = offs = NULL;
                 switch (n->args->argv[i].arg) {                  switch (n->args->argv[i].arg) {
                 /* Set list types. */                  /* Set list types. */
                 case (MDOC_Bullet):                  case (MDOC_Bullet):
Line 601  pre_bl(PRE_ARGS)
Line 600  pre_bl(PRE_ARGS)
                         comp = 1;                          comp = 1;
                         break;                          break;
                 case (MDOC_Width):                  case (MDOC_Width):
                         if (width >= 0)                          dup = (NULL != n->data.Bl.width);
                                 dup++;                          width = n->args->argv[i].value[0];
                         width = i;  
                         break;                          break;
                 case (MDOC_Offset):                  case (MDOC_Offset):
                         /* NB: this can be empty! */                          /* NB: this can be empty! */
                         if (n->args->argv[i].sz) {                          if (n->args->argv[i].sz) {
                                 offs = n->args->argv[i].value[0];                                  offs = n->args->argv[i].value[0];
                                 dup = (NULL != n->data.Bd.offs);                                  dup = (NULL != n->data.Bl.offs);
                                 break;                                  break;
                         }                          }
                         if ( ! mdoc_nmsg(mdoc, n, MANDOCERR_IGNARGV))                          if ( ! mdoc_nmsg(mdoc, n, MANDOCERR_IGNARGV))
Line 626  pre_bl(PRE_ARGS)
Line 624  pre_bl(PRE_ARGS)
                         n->data.Bl.comp = comp;                          n->data.Bl.comp = comp;
                 if (offs && ! dup)                  if (offs && ! dup)
                         n->data.Bl.offs = offs;                          n->data.Bl.offs = offs;
                   if (width && ! dup)
                           n->data.Bl.width = width;
   
                 /* Check: multiple list types. */                  /* Check: multiple list types. */
   
Line 641  pre_bl(PRE_ARGS)
Line 641  pre_bl(PRE_ARGS)
                 /* The list type should come first. */                  /* The list type should come first. */
   
                 if (n->data.Bl.type == LIST__NONE)                  if (n->data.Bl.type == LIST__NONE)
                         if (width >= 0 || n->data.Bl.offs || n->data.Bl.comp)                          if (n->data.Bl.width ||
                                           n->data.Bl.offs ||
                                           n->data.Bl.comp)
                                 if ( ! mdoc_nmsg(mdoc, n, MANDOCERR_LISTFIRST))                                  if ( ! mdoc_nmsg(mdoc, n, MANDOCERR_LISTFIRST))
                                         return(0);                                          return(0);
   
Line 664  pre_bl(PRE_ARGS)
Line 666  pre_bl(PRE_ARGS)
   
         switch (n->data.Bl.type) {          switch (n->data.Bl.type) {
         case (LIST_tag):          case (LIST_tag):
                 if (width >= 0)                  if (n->data.Bl.width)
                         break;                          break;
                 if (mdoc_nmsg(mdoc, n, MANDOCERR_NOWIDTHARG))                  if (mdoc_nmsg(mdoc, n, MANDOCERR_NOWIDTHARG))
                         break;                          break;
Line 678  pre_bl(PRE_ARGS)
Line 680  pre_bl(PRE_ARGS)
         case (LIST_inset):          case (LIST_inset):
                 /* FALLTHROUGH */                  /* FALLTHROUGH */
         case (LIST_item):          case (LIST_item):
                 if (width < 0)                  if (NULL == n->data.Bl.width)
                         break;                          break;
                 if (mdoc_nmsg(mdoc, n, MANDOCERR_WIDTHARG))                  if (mdoc_nmsg(mdoc, n, MANDOCERR_WIDTHARG))
                         break;                          break;

Legend:
Removed from v.1.98  
changed lines
  Added in v.1.99

CVSweb