=================================================================== RCS file: /cvsrepo/anoncvs/cvs/src/usr.bin/mandoc/man_validate.c,v retrieving revision 1.14 retrieving revision 1.15 diff -c -r1.14 -r1.15 *** src/usr.bin/mandoc/man_validate.c 2010/03/26 01:22:05 1.14 --- src/usr.bin/mandoc/man_validate.c 2010/03/29 22:56:52 1.15 *************** *** 1,4 **** ! /* $Id: man_validate.c,v 1.14 2010/03/26 01:22:05 schwarze Exp $ */ /* * Copyright (c) 2008, 2009 Kristaps Dzonsons * --- 1,4 ---- ! /* $Id: man_validate.c,v 1.15 2010/03/29 22:56:52 schwarze Exp $ */ /* * Copyright (c) 2008, 2009 Kristaps Dzonsons * *************** *** 46,54 **** static int check_root(CHKARGS); static int check_sec(CHKARGS); static int check_text(CHKARGS); static v_check posts_eq0[] = { check_eq0, NULL }; ! static v_check posts_ge2_le5[] = { check_ge2, check_le5, NULL }; static v_check posts_par[] = { check_par, NULL }; static v_check posts_part[] = { check_part, NULL }; static v_check posts_sec[] = { check_sec, NULL }; --- 46,55 ---- static int check_root(CHKARGS); static int check_sec(CHKARGS); static int check_text(CHKARGS); + static int check_title(CHKARGS); static v_check posts_eq0[] = { check_eq0, NULL }; ! static v_check posts_th[] = { check_ge2, check_le5, check_title, NULL }; static v_check posts_par[] = { check_par, NULL }; static v_check posts_part[] = { check_part, NULL }; static v_check posts_sec[] = { check_sec, NULL }; *************** *** 58,64 **** static const struct man_valid man_valids[MAN_MAX] = { { NULL, posts_eq0 }, /* br */ ! { pres_bline, posts_ge2_le5 }, /* TH */ /* FIXME: make sure capitalised. */ { pres_bline, posts_sec }, /* SH */ { pres_bline, posts_sec }, /* SS */ { pres_bline, posts_par }, /* TP */ --- 59,65 ---- static const struct man_valid man_valids[MAN_MAX] = { { NULL, posts_eq0 }, /* br */ ! { pres_bline, posts_th }, /* TH */ { pres_bline, posts_sec }, /* SH */ { pres_bline, posts_sec }, /* SS */ { pres_bline, posts_par }, /* TP */ *************** *** 164,169 **** --- 165,188 ---- return(man_nerr(m, n, WNODATA)); if (NULL == m->meta.title) return(man_nerr(m, n, WNOTITLE)); + + return(1); + } + + + static int + check_title(CHKARGS) + { + const char *p; + + assert(n->child); + if ('\0' == *n->child->string) + return(man_nerr(m, n, WNOTITLE)); + + for (p = n->child->string; '\0' != *p; p++) + if (isalpha((u_char)*p) && ! isupper((u_char)*p)) + if ( ! man_nwarn(m, n, WTITLECASE)) + return(0); return(1); }