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

Diff for /mandoc/roff_validate.c between version 1.14 and 1.16

version 1.14, 2018/12/14 05:18:03 version 1.16, 2018/12/31 07:08:12
Line 30 
Line 30 
 typedef void    (*roff_valid_fp)(ROFF_VALID_ARGS);  typedef void    (*roff_valid_fp)(ROFF_VALID_ARGS);
   
 static  void      roff_valid_br(ROFF_VALID_ARGS);  static  void      roff_valid_br(ROFF_VALID_ARGS);
   static  void      roff_valid_fi(ROFF_VALID_ARGS);
 static  void      roff_valid_ft(ROFF_VALID_ARGS);  static  void      roff_valid_ft(ROFF_VALID_ARGS);
   static  void      roff_valid_nf(ROFF_VALID_ARGS);
 static  void      roff_valid_sp(ROFF_VALID_ARGS);  static  void      roff_valid_sp(ROFF_VALID_ARGS);
   
 static  const roff_valid_fp roff_valids[ROFF_MAX] = {  static  const roff_valid_fp roff_valids[ROFF_MAX] = {
         roff_valid_br,  /* br */          roff_valid_br,  /* br */
         NULL,  /* ce */          NULL,  /* ce */
           roff_valid_fi,  /* fi */
         roff_valid_ft,  /* ft */          roff_valid_ft,  /* ft */
         NULL,  /* ll */          NULL,  /* ll */
         NULL,  /* mc */          NULL,  /* mc */
           roff_valid_nf,  /* nf */
         NULL,  /* po */          NULL,  /* po */
         NULL,  /* rj */          NULL,  /* rj */
         roff_valid_sp,  /* sp */          roff_valid_sp,  /* sp */
Line 63  roff_valid_br(ROFF_VALID_ARGS)
Line 67  roff_valid_br(ROFF_VALID_ARGS)
 {  {
         struct roff_node        *np;          struct roff_node        *np;
   
         if (n->child != NULL)  
                 mandoc_msg(MANDOCERR_ARG_SKIP,  
                     n->line, n->pos, "br %s", n->child->string);  
   
         if (n->next != NULL && n->next->type == ROFFT_TEXT &&          if (n->next != NULL && n->next->type == ROFFT_TEXT &&
             *n->next->string == ' ') {              *n->next->string == ' ') {
                 mandoc_msg(MANDOCERR_PAR_SKIP, n->line, n->pos,                  mandoc_msg(MANDOCERR_PAR_SKIP, n->line, n->pos,
Line 92  roff_valid_br(ROFF_VALID_ARGS)
Line 92  roff_valid_br(ROFF_VALID_ARGS)
 }  }
   
 static void  static void
   roff_valid_fi(ROFF_VALID_ARGS)
   {
           if ((man->flags & ROFF_NOFILL) == 0)
                   mandoc_msg(MANDOCERR_FI_SKIP, n->line, n->pos, "fi");
   }
   
   static void
 roff_valid_ft(ROFF_VALID_ARGS)  roff_valid_ft(ROFF_VALID_ARGS)
 {  {
         const char              *cp;          const char              *cp;
Line 104  roff_valid_ft(ROFF_VALID_ARGS)
Line 111  roff_valid_ft(ROFF_VALID_ARGS)
         }          }
   
         cp = n->child->string;          cp = n->child->string;
         switch (*cp) {          if (mandoc_font(cp, (int)strlen(cp)) != ESCAPE_ERROR)
         case '1':                  return;
         case '2':  
         case '3':  
         case '4':  
         case 'I':  
         case 'P':  
         case 'R':  
                 if (cp[1] == '\0')  
                         return;  
                 break;  
         case 'B':  
                 if (cp[1] == '\0' || (cp[1] == 'I' && cp[2] == '\0'))  
                         return;  
                 break;  
         case 'C':  
                 if (cp[1] != '\0' && cp[2] == '\0' &&  
                     strchr("BIRW", cp[1]) != NULL)  
                         return;  
                 break;  
         default:  
                 break;  
         }  
   
         mandoc_msg(MANDOCERR_FT_BAD, n->line, n->pos, "ft %s", cp);          mandoc_msg(MANDOCERR_FT_BAD, n->line, n->pos, "ft %s", cp);
         roff_node_delete(man, n);          roff_node_delete(man, n);
 }  }
   
 static void  static void
   roff_valid_nf(ROFF_VALID_ARGS)
   {
           if (man->flags & ROFF_NOFILL)
                   mandoc_msg(MANDOCERR_NF_SKIP, n->line, n->pos, "nf");
   }
   
   static void
 roff_valid_sp(ROFF_VALID_ARGS)  roff_valid_sp(ROFF_VALID_ARGS)
 {  {
         struct roff_node        *np;          struct roff_node        *np;
   
         if (n->child != NULL && n->child->next != NULL)  
                 mandoc_msg(MANDOCERR_ARG_EXCESS,  
                     n->child->next->line, n->child->next->pos,  
                     "sp ... %s", n->child->next->string);  
   
         if ((np = n->prev) == NULL)          if ((np = n->prev) == NULL)
                 return;                  return;

Legend:
Removed from v.1.14  
changed lines
  Added in v.1.16

CVSweb