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

Diff for /mandoc/man_validate.c between version 1.57 and 1.60

version 1.57, 2011/01/01 12:59:17 version 1.60, 2011/01/17 00:21:29
Line 53  static int   check_part(CHKARGS);
Line 53  static int   check_part(CHKARGS);
 static  int       check_root(CHKARGS);  static  int       check_root(CHKARGS);
 static  int       check_sec(CHKARGS);  static  int       check_sec(CHKARGS);
 static  int       check_text(CHKARGS);  static  int       check_text(CHKARGS);
 static  int       check_title(CHKARGS);  
   
 static  int       post_AT(CHKARGS);  static  int       post_AT(CHKARGS);
 static  int       post_fi(CHKARGS);  static  int       post_fi(CHKARGS);
Line 70  static v_check   posts_nf[] = { check_eq0, post_nf, NU
Line 69  static v_check   posts_nf[] = { check_eq0, post_nf, NU
 static  v_check   posts_par[] = { check_par, NULL };  static  v_check   posts_par[] = { check_par, NULL };
 static  v_check   posts_part[] = { check_part, NULL };  static  v_check   posts_part[] = { check_part, NULL };
 static  v_check   posts_sec[] = { check_sec, NULL };  static  v_check   posts_sec[] = { check_sec, NULL };
 static  v_check   posts_th[] = { check_ge2, check_le5, check_title, post_TH, NULL };  static  v_check   posts_th[] = { check_ge2, check_le5, post_TH, NULL };
 static  v_check   posts_uc[] = { post_UC, NULL };  static  v_check   posts_uc[] = { post_UC, NULL };
 static  v_check   pres_bline[] = { check_bline, NULL };  static  v_check   pres_bline[] = { check_bline, NULL };
   
Line 80  static const struct man_valid man_valids[MAN_MAX] = {
Line 79  static const struct man_valid man_valids[MAN_MAX] = {
         { pres_bline, posts_th }, /* TH */          { pres_bline, posts_th }, /* TH */
         { pres_bline, posts_sec }, /* SH */          { pres_bline, posts_sec }, /* SH */
         { pres_bline, posts_sec }, /* SS */          { pres_bline, posts_sec }, /* SS */
         { pres_bline, posts_par }, /* TP */          { pres_bline, NULL }, /* TP */
         { pres_bline, posts_par }, /* LP */          { pres_bline, posts_par }, /* LP */
         { pres_bline, posts_par }, /* PP */          { pres_bline, posts_par }, /* PP */
         { pres_bline, posts_par }, /* P */          { pres_bline, posts_par }, /* P */
         { pres_bline, posts_par }, /* IP */          { pres_bline, NULL }, /* IP */
         { pres_bline, posts_par }, /* HP */          { pres_bline, NULL }, /* HP */
         { NULL, NULL }, /* SM */          { NULL, NULL }, /* SM */
         { NULL, NULL }, /* SB */          { NULL, NULL }, /* SB */
         { NULL, NULL }, /* BI */          { NULL, NULL }, /* BI */
Line 200  check_root(CHKARGS) 
Line 199  check_root(CHKARGS) 
   
   
 static int  static int
 check_title(CHKARGS)  
 {  
         const char      *p;  
   
         assert(n->child);  
         /* FIXME: is this sufficient? */  
         if ('\0' == *n->child->string) {  
                 man_nmsg(m, n, MANDOCERR_SYNTARGCOUNT);  
                 return(0);  
         }  
   
         for (p = n->child->string; '\0' != *p; p++)  
                 /* Only warn about this once... */  
                 if (isalpha((u_char)*p) && ! isupper((u_char)*p)) {  
                         man_nmsg(m, n, MANDOCERR_UPPERCASE);  
                         break;  
                 }  
   
         return(1);  
 }  
   
   
 static int  
 check_text(CHKARGS)  check_text(CHKARGS)
 {  {
         char            *p;          char            *p;
Line 266  check_##name(CHKARGS) \
Line 242  check_##name(CHKARGS) \
 { \  { \
         if (n->nchild ineq (x)) \          if (n->nchild ineq (x)) \
                 return(1); \                  return(1); \
         man_vmsg(m, MANDOCERR_SYNTARGCOUNT, n->line, n->pos, \          man_vmsg(m, MANDOCERR_ARGCOUNT, n->line, n->pos, \
                         "line arguments %s %d (have %d)", \                          "line arguments %s %d (have %d)", \
                         #ineq, (x), n->nchild); \                          #ineq, (x), n->nchild); \
         return(0); \          return(1); \
 }  }
   
 INEQ_DEFINE(0, ==, eq0)  INEQ_DEFINE(0, ==, eq0)
Line 359  static int
Line 335  static int
 check_par(CHKARGS)  check_par(CHKARGS)
 {  {
   
         if (MAN_BODY == n->type)          switch (n->type) {
                 switch (n->tok) {          case (MAN_BLOCK):
                 case (MAN_IP):                  if (0 == n->body->nchild)
                         /* FALLTHROUGH */                          man_node_delete(m, n);
                 case (MAN_HP):                  break;
                         /* FALLTHROUGH */          case (MAN_BODY):
                 case (MAN_TP):                  if (0 == n->nchild)
                         /* Body-less lists are ok. */                          man_nmsg(m, n, MANDOCERR_IGNPAR);
                         break;                  break;
                 default:          case (MAN_HEAD):
                         if (0 == n->nchild)                  if (n->nchild)
                                 man_nmsg(m, n, MANDOCERR_NOBODY);                          man_nmsg(m, n, MANDOCERR_ARGSLOST);
                         break;                  break;
                 }          default:
         if (MAN_HEAD == n->type)                  break;
                 switch (n->tok) {          }
                 case (MAN_PP):  
                         /* FALLTHROUGH */  
                 case (MAN_P):  
                         /* FALLTHROUGH */  
                 case (MAN_LP):  
                         if (n->nchild)  
                                 man_nmsg(m, n, MANDOCERR_ARGSLOST);  
                         break;  
                 default:  
                         break;  
                 }  
   
         return(1);          return(1);
 }  }
Line 407  check_bline(CHKARGS)
Line 372  check_bline(CHKARGS)
 static int  static int
 post_TH(CHKARGS)  post_TH(CHKARGS)
 {  {
           const char      *p;
   
         if (m->meta.title)          if (m->meta.title)
                 free(m->meta.title);                  free(m->meta.title);
Line 426  post_TH(CHKARGS)
Line 392  post_TH(CHKARGS)
         /* ->TITLE<- MSEC DATE SOURCE VOL */          /* ->TITLE<- MSEC DATE SOURCE VOL */
   
         n = n->child;          n = n->child;
         assert(n);          if (n && n->string) {
         m->meta.title = mandoc_strdup(n->string);                  for (p = n->string; '\0' != *p; p++) {
                           /* Only warn about this once... */
                           if (isalpha((u_char)*p) && ! isupper((u_char)*p)) {
                                   man_nmsg(m, n, MANDOCERR_UPPERCASE);
                                   break;
                           }
                   }
                   m->meta.title = mandoc_strdup(n->string);
           } else
                   m->meta.title = mandoc_strdup("");
   
         /* TITLE ->MSEC<- DATE SOURCE VOL */          /* TITLE ->MSEC<- DATE SOURCE VOL */
   
         n = n->next;          if (n)
         assert(n);                  n = n->next;
         m->meta.msec = mandoc_strdup(n->string);          if (n && n->string)
                   m->meta.msec = mandoc_strdup(n->string);
           else
                   m->meta.msec = mandoc_strdup("");
   
         /* TITLE MSEC ->DATE<- SOURCE VOL */          /* TITLE MSEC ->DATE<- SOURCE VOL */
   
Line 444  post_TH(CHKARGS)
Line 422  post_TH(CHKARGS)
          * string, then use the current date.           * string, then use the current date.
          */           */
   
         n = n->next;          if (n)
                   n = n->next;
         if (n && n->string && *n->string) {          if (n && n->string && *n->string) {
                 m->meta.date = mandoc_a2time                  m->meta.date = mandoc_a2time
                         (MTIME_ISO_8601, n->string);                          (MTIME_ISO_8601, n->string);
Line 489  post_fi(CHKARGS)
Line 468  post_fi(CHKARGS)
 {  {
   
         if ( ! (MAN_LITERAL & m->flags))          if ( ! (MAN_LITERAL & m->flags))
                 man_nmsg(m, n, MANDOCERR_NOSCOPE);                  man_nmsg(m, n, MANDOCERR_WNOSCOPE);
   
         m->flags &= ~MAN_LITERAL;          m->flags &= ~MAN_LITERAL;
         return(1);          return(1);

Legend:
Removed from v.1.57  
changed lines
  Added in v.1.60

CVSweb