=================================================================== RCS file: /cvs/mandoc/man.c,v retrieving revision 1.138 retrieving revision 1.142 diff -u -p -r1.138 -r1.142 --- mandoc/man.c 2014/08/10 23:54:41 1.138 +++ mandoc/man.c 2014/11/03 23:18:39 1.142 @@ -1,4 +1,4 @@ -/* $Id: man.c,v 1.138 2014/08/10 23:54:41 schwarze Exp $ */ +/* $Id: man.c,v 1.142 2014/11/03 23:18:39 schwarze Exp $ */ /* * Copyright (c) 2008, 2009, 2010, 2011 Kristaps Dzonsons * Copyright (c) 2013, 2014 Ingo Schwarze @@ -119,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) : @@ -314,6 +315,21 @@ man_word_alloc(struct man *man, int line, int pos, con return(1); } +void +man_word_append(struct man *man, const char *word) +{ + struct man_node *n; + char *addstr, *newstr; + + n = man->last; + addstr = roff_strdup(man->roff, word); + mandoc_asprintf(&newstr, "%s %s", n->string, addstr); + free(addstr); + free(n->string); + n->string = newstr; + man->next = MAN_NEXT_SIBLING; +} + /* * Free all of the resources held by a node. This does NOT unlink a * node from its context; for that, see man_node_unlink(). @@ -345,6 +361,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); @@ -470,13 +488,6 @@ man_pmacro(struct man *man, int ln, char *buf, int off enum mant tok; 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;