=================================================================== RCS file: /cvs/mandoc/man.c,v retrieving revision 1.135 retrieving revision 1.141 diff -u -p -r1.135 -r1.141 --- mandoc/man.c 2014/07/30 21:18:24 1.135 +++ mandoc/man.c 2014/10/20 15:50:24 1.141 @@ -1,4 +1,4 @@ -/* $Id: man.c,v 1.135 2014/07/30 21:18:24 schwarze Exp $ */ +/* $Id: man.c,v 1.141 2014/10/20 15:50:24 schwarze Exp $ */ /* * Copyright (c) 2008, 2009, 2010, 2011 Kristaps Dzonsons * Copyright (c) 2013, 2014 Ingo Schwarze @@ -16,9 +16,7 @@ * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ -#ifdef HAVE_CONFIG_H #include "config.h" -#endif #include @@ -121,7 +119,8 @@ int man_parseln(struct man *man, int ln, char *buf, int offs) { - man->flags |= MAN_NEWLINE; + if (man->last->type != MAN_EQN || ln > man->last->line) + man->flags |= MAN_NEWLINE; return (roff_getcontrol(man->roff, buf, &offs) ? man_pmacro(man, ln, buf, offs) : @@ -186,10 +185,11 @@ man_node_append(struct man *man, struct man_node *p) assert(p->parent); p->parent->nchild++; - if ( ! man_valid_pre(man, p)) - return(0); - switch (p->type) { + case MAN_BLOCK: + if (p->tok == MAN_SH || p->tok == MAN_SS) + man->flags &= ~MAN_LITERAL; + break; case MAN_HEAD: assert(MAN_BLOCK == p->parent->type); p->parent->head = p; @@ -346,6 +346,8 @@ man_addeqn(struct man *man, const struct eqn *ep) n = man_node_alloc(man, ep->ln, ep->pos, MAN_EQN, MAN_MAX); n->eqn = ep; + if (ep->ln > man->last->line) + n->flags |= MAN_LINE; if ( ! man_node_append(man, n)) return(0); @@ -472,13 +474,6 @@ man_pmacro(struct man *man, int ln, char *buf, int off int i, ppos; int bline; - if ('"' == buf[offs]) { - mandoc_msg(MANDOCERR_COMMENT_BAD, man->parse, - ln, offs, NULL); - return(1); - } else if ('\0' == buf[offs]) - return(1); - ppos = offs; /* @@ -496,8 +491,8 @@ man_pmacro(struct man *man, int ln, char *buf, int off tok = (i > 0 && i < 4) ? man_hash_find(mac) : MAN_MAX; if (MAN_MAX == tok) { - mandoc_vmsg(MANDOCERR_MACRO, man->parse, ln, ppos, - "%s", buf + ppos - 1); + mandoc_msg(MANDOCERR_MACRO, man->parse, + ln, ppos, buf + ppos - 1); return(1); }