]> git.cameronkatri.com Git - mandoc.git/blobdiff - man_validate.c
Fully skip first and last line for the purpose of cmp.
[mandoc.git] / man_validate.c
index 0b69d58ce1f431889b1b57c89d6a796ab78eae23..ec9706f618277547829a4158ea39dee42d0dd2fd 100644 (file)
@@ -1,4 +1,4 @@
-/*     $Id: man_validate.c,v 1.33 2010/03/29 10:10:35 kristaps Exp $ */
+/*     $Id: man_validate.c,v 1.39 2010/05/15 22:44:04 kristaps Exp $ */
 /*
  * Copyright (c) 2008, 2009 Kristaps Dzonsons <kristaps@kth.se>
  *
@@ -46,7 +46,6 @@ static        int       check_ge2(CHKARGS);
 static int       check_le5(CHKARGS);
 static int       check_par(CHKARGS);
 static int       check_part(CHKARGS);
-static int       check_roff(CHKARGS);
 static int       check_root(CHKARGS);
 static int       check_sec(CHKARGS);
 static int       check_text(CHKARGS);
@@ -59,7 +58,6 @@ static        v_check   posts_part[] = { check_part, NULL };
 static v_check   posts_sec[] = { check_sec, NULL };
 static v_check   posts_le1[] = { check_le1, NULL };
 static v_check   pres_bline[] = { check_bline, NULL };
-static v_check   pres_roff[] = { check_roff, NULL };
 
 static const struct man_valid man_valids[MAN_MAX] = {
        { NULL, posts_eq0 }, /* br */
@@ -94,15 +92,9 @@ static       const struct man_valid man_valids[MAN_MAX] = {
        { NULL, NULL }, /* DT */
        { NULL, NULL }, /* UC */
        { NULL, NULL }, /* PD */
-       { NULL, posts_eq0 }, /* Sp */
+       { NULL, posts_le1 }, /* Sp */
        { pres_bline, posts_le1 }, /* Vb */
        { pres_bline, posts_eq0 }, /* Ve */
-       { pres_roff, NULL }, /* de */
-       { pres_roff, NULL }, /* dei */
-       { pres_roff, NULL }, /* am */
-       { pres_roff, NULL }, /* ami */
-       { pres_roff, NULL }, /* ig */
-       { NULL, NULL }, /* . */
 };
 
 
@@ -167,8 +159,19 @@ check_root(CHKARGS)
 
        if (NULL == m->first->child)
                return(man_nerr(m, n, WNODATA));
-       if (NULL == m->meta.title)
-               return(man_nerr(m, n, WNOTITLE));
+       if (NULL == m->meta.title) {
+               if ( ! man_nwarn(m, n, WNOTITLE))
+                       return(0);
+               /*
+                * If a title hasn't been set, do so now (by
+                * implication, date and section also aren't set).
+                * 
+                * FIXME: this should be in man_action.c.
+                */
+               m->meta.title = mandoc_strdup("unknown");
+               m->meta.date = time(NULL);
+               m->meta.msec = mandoc_strdup("1");
+       }
 
        return(1);
 }
@@ -218,9 +221,7 @@ check_text(CHKARGS)
                if ('\t' == *p || isprint((u_char)*p)) 
                        continue;
 
-               if (MAN_IGN_CHARS & m->pflags)
-                       return(man_pwarn(m, n->line, pos, WNPRINT));
-               return(man_perr(m, n->line, pos, WNPRINT));
+               return(man_pwarn(m, n->line, pos, WNPRINT));
        }
 
        return(1);
@@ -315,20 +316,3 @@ check_bline(CHKARGS)
        return(1);
 }
 
-
-static int
-check_roff(CHKARGS)
-{
-
-       if (MAN_BLOCK != n->type)
-               return(1);
-
-       for (n = n->parent; n; n = n->parent)
-               if (MAN_de == n->tok || MAN_dei == n->tok ||
-                               MAN_am == n->tok || 
-                               MAN_ami == n->tok ||
-                               MAN_ig == n->tok)
-                       return(man_nerr(m, n, WROFFNEST));
-
-       return(1);
-}