=================================================================== RCS file: /cvs/mandoc/mdoc.c,v retrieving revision 1.272 retrieving revision 1.275 diff -u -p -r1.272 -r1.275 --- mandoc/mdoc.c 2018/12/30 00:49:55 1.272 +++ mandoc/mdoc.c 2020/04/06 10:16:17 1.275 @@ -1,7 +1,7 @@ -/* $Id: mdoc.c,v 1.272 2018/12/30 00:49:55 schwarze Exp $ */ +/* $Id: mdoc.c,v 1.275 2020/04/06 10:16:17 schwarze Exp $ */ /* + * Copyright (c) 2010, 2012-2018, 2020 Ingo Schwarze * Copyright (c) 2008, 2009, 2010, 2011 Kristaps Dzonsons - * Copyright (c) 2010, 2012-2018 Ingo Schwarze * * Permission to use, copy, modify, and distribute this software for any * purpose with or without fee is hereby granted, provided that the above @@ -14,6 +14,8 @@ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + * + * Top level and utility functions of the mdoc(7) parser for mandoc(1). */ #include "config.h" @@ -210,7 +212,7 @@ mdoc_ptext(struct roff_man *mdoc, int line, char *buf, * Strip trailing tabs in literal context only; * outside, they affect the next line. */ - if (MDOC_LITERAL & mdoc->flags) + if (mdoc->flags & ROFF_NOFILL) continue; break; case '\\': @@ -235,7 +237,7 @@ mdoc_ptext(struct roff_man *mdoc, int line, char *buf, * but add a single vertical space elsewhere. */ - if (buf[offs] == '\0' && ! (mdoc->flags & MDOC_LITERAL)) { + if (buf[offs] == '\0' && (mdoc->flags & ROFF_NOFILL) == 0) { switch (mdoc->last->type) { case ROFFT_TEXT: sp = mdoc->last->string; @@ -260,7 +262,7 @@ mdoc_ptext(struct roff_man *mdoc, int line, char *buf, roff_word_alloc(mdoc, line, offs, buf+offs); - if (mdoc->flags & MDOC_LITERAL) + if (mdoc->flags & ROFF_NOFILL) return 1; /* @@ -352,12 +354,13 @@ mdoc_pmacro(struct roff_man *mdoc, int ln, char *buf, mandoc_msg(MANDOCERR_SPACE_EOL, ln, offs - 1, NULL); /* - * If an initial macro or a list invocation, divert directly - * into macro processing. + * If an initial or transparent macro or a list invocation, + * divert directly into macro processing. */ n = mdoc->last; - if (n == NULL || tok == MDOC_It || tok == MDOC_El) { + if (n == NULL || tok == MDOC_It || tok == MDOC_El || + roff_tok_transparent(tok)) { (*mdoc_macro(tok)->fp)(mdoc, tok, ln, sv, &offs, buf); return 1; } @@ -427,13 +430,4 @@ mdoc_isdelim(const char *p) return DELIM_MIDDLE; return DELIM_NONE; -} - -void -mdoc_validate(struct roff_man *mdoc) -{ - - mdoc->last = mdoc->meta.first; - mdoc_node_validate(mdoc); - mdoc_state_reset(mdoc); }