From 7793230177d864fb80c0c572a2b896f3ecb7df10 Mon Sep 17 00:00:00 2001 From: Ingo Schwarze Date: Wed, 28 Jan 2015 15:03:45 +0000 Subject: For now, it can't be helped that mandoc tbl(7) ignores high-level macros, but stop throwing away their arguments. This fixes information loss in a handful of Xenocara manuals, at the price of a small amount of formatting noise creeping through. --- tbl.c | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) (limited to 'tbl.c') diff --git a/tbl.c b/tbl.c index bd8fc99c..c183750f 100644 --- a/tbl.c +++ b/tbl.c @@ -1,4 +1,4 @@ -/* $Id: tbl.c,v 1.34 2015/01/27 05:21:45 schwarze Exp $ */ +/* $Id: tbl.c,v 1.35 2015/01/28 15:03:45 schwarze Exp $ */ /* * Copyright (c) 2009, 2010, 2011 Kristaps Dzonsons * Copyright (c) 2011, 2015 Ingo Schwarze @@ -32,7 +32,7 @@ enum rofferr -tbl_read(struct tbl_node *tbl, int ln, const char *p, int offs) +tbl_read(struct tbl_node *tbl, int ln, const char *p, int pos) { const char *cp; int active; @@ -46,7 +46,7 @@ tbl_read(struct tbl_node *tbl, int ln, const char *p, int offs) if (tbl->part == TBL_PART_OPTS) { tbl->part = TBL_PART_LAYOUT; active = 1; - for (cp = p; *cp != '\0'; cp++) { + for (cp = p + pos; *cp != '\0'; cp++) { switch (*cp) { case '(': active = 0; @@ -64,8 +64,8 @@ tbl_read(struct tbl_node *tbl, int ln, const char *p, int offs) break; } if (*cp == ';') { - tbl_option(tbl, ln, p); - if (*(p = cp + 1) == '\0') + tbl_option(tbl, ln, p, &pos); + if (p[pos] == '\0') return(ROFF_IGN); } } @@ -74,15 +74,15 @@ tbl_read(struct tbl_node *tbl, int ln, const char *p, int offs) switch (tbl->part) { case TBL_PART_LAYOUT: - tbl_layout(tbl, ln, p); + tbl_layout(tbl, ln, p, pos); return(ROFF_IGN); case TBL_PART_CDATA: - return(tbl_cdata(tbl, ln, p) ? ROFF_TBL : ROFF_IGN); + return(tbl_cdata(tbl, ln, p, pos) ? ROFF_TBL : ROFF_IGN); default: break; } - tbl_data(tbl, ln, p); + tbl_data(tbl, ln, p, pos); return(ROFF_TBL); } -- cgit v1.2.3