- 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->first->child) {
+ man_nmsg(m, n, MANDOCERR_NODOCBODY);
+ return(0);
+ } else if (NULL == m->meta.title) {
+ if ( ! man_nmsg(m, n, MANDOCERR_NOTITLE))
+ 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);
+}
+
+
+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++)
+ if (isalpha((u_char)*p) && ! isupper((u_char)*p))
+ if ( ! man_nmsg(m, n, MANDOCERR_UPPERCASE))
+ return(0);