=================================================================== RCS file: /cvs/mandoc/man_validate.c,v retrieving revision 1.74 retrieving revision 1.76 diff -u -p -r1.74 -r1.76 --- mandoc/man_validate.c 2011/09/04 09:58:40 1.74 +++ mandoc/man_validate.c 2011/10/16 12:20:34 1.76 @@ -1,4 +1,4 @@ -/* $Id: man_validate.c,v 1.74 2011/09/04 09:58:40 kristaps Exp $ */ +/* $Id: man_validate.c,v 1.76 2011/10/16 12:20:34 schwarze Exp $ */ /* * Copyright (c) 2008, 2009, 2010, 2011 Kristaps Dzonsons * Copyright (c) 2010 Ingo Schwarze @@ -52,6 +52,7 @@ static int check_le5(CHKARGS); static int check_par(CHKARGS); static int check_part(CHKARGS); static int check_root(CHKARGS); +static void check_text(CHKARGS); static int post_AT(CHKARGS); static int post_vs(CHKARGS); @@ -152,10 +153,11 @@ man_valid_post(struct man *m) m->last->flags |= MAN_VALID; switch (m->last->type) { + case (MAN_TEXT): + check_text(m, m->last); + return(1); case (MAN_ROOT): return(check_root(m, m->last)); - case (MAN_TEXT): - /* FALLTHROUGH */ case (MAN_EQN): /* FALLTHROUGH */ case (MAN_TBL): @@ -206,6 +208,19 @@ check_root(CHKARGS) return(1); } +static void +check_text(CHKARGS) +{ + char *cp, *p; + + if (MAN_LITERAL & m->flags) + return; + + cp = n->string; + for (p = cp; NULL != (p = strchr(p, '\t')); p++) + man_pmsg(m, n->line, (int)(p - cp), MANDOCERR_BADTAB); +} + #define INEQ_DEFINE(x, ineq, name) \ static int \ check_##name(CHKARGS) \ @@ -459,7 +474,6 @@ post_UC(CHKARGS) const char *p, *s; n = n->child; - n = m->last->child; if (NULL == n || MAN_TEXT != n->type) p = bsd_versions[0];