[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.13 and 1.15

version 1.13, 2009/06/22 10:40:04 version 1.15, 2009/07/04 09:01:55
Line 22 
Line 22 
 #include <stdlib.h>  #include <stdlib.h>
   
 #include "libman.h"  #include "libman.h"
   #include "libmandoc.h"
   
 #define POSTARGS  struct man *m, const struct man_node *n  #define POSTARGS  struct man *m, const struct man_node *n
   
Line 38  static int   check_le1(POSTARGS);
Line 39  static int   check_le1(POSTARGS);
 static  int       check_le2(POSTARGS);  static  int       check_le2(POSTARGS);
 static  int       check_le5(POSTARGS);  static  int       check_le5(POSTARGS);
 static  int       check_text(POSTARGS);  static  int       check_text(POSTARGS);
   static  int       check_root(POSTARGS);
   
 static  v_post    posts_le1[] = { check_le1, NULL };  static  v_post    posts_le1[] = { check_le1, NULL };
 static  v_post    posts_le2[] = { check_le2, NULL };  static  v_post    posts_le2[] = { check_le2, NULL };
Line 85  man_valid_post(struct man *m)
Line 87  man_valid_post(struct man *m)
         case (MAN_TEXT):          case (MAN_TEXT):
                 return(check_text(m, m->last));                  return(check_text(m, m->last));
         case (MAN_ROOT):          case (MAN_ROOT):
                 /* FIXME: validate that TH has been invoked! */                  return(check_root(m, m->last));
                 return(1);  
         default:          default:
                 break;                  break;
         }          }
Line 102  man_valid_post(struct man *m)
Line 103  man_valid_post(struct man *m)
   
   
 static int  static int
   check_root(POSTARGS)
   {
   
           if (NULL == m->first->child)
                   return(man_nerr(m, n, WNODATA));
           if (NULL == m->meta.title)
                   return(man_nerr(m, n, WNOTITLE));
   
           return(1);
   }
   
   
   static int
 check_text(POSTARGS)  check_text(POSTARGS)
 {  {
         const char      *p;          const char      *p;
         int              pos;          int              pos, c;
   
         assert(n->string);          assert(n->string);
   
         for (p = n->string, pos = n->pos + 1; *p; p++, pos++) {          for (p = n->string, pos = n->pos + 1; *p; p++, pos++) {
                 if ('\t' == *p || isprint((u_char)*p))                  if ('\\' == *p) {
                           c = mandoc_special(p);
                           if (c) {
                                   p += c - 1;
                                   pos += c - 1;
                                   continue;
                           }
                           if ( ! (MAN_IGN_ESCAPE & m->pflags))
                                   return(man_perr(m, n->line, pos, WESCAPE));
                           if ( ! man_pwarn(m, n->line, pos, WESCAPE))
                                   return(0);
                           continue;
                   }
   
                   if ('\t' == *p || isprint((u_char)*p))
                         continue;                          continue;
   
                 if (MAN_IGN_CHARS & m->pflags)                  if (MAN_IGN_CHARS & m->pflags)

Legend:
Removed from v.1.13  
changed lines
  Added in v.1.15

CVSweb