diff options
author | Ingo Schwarze <schwarze@openbsd.org> | 2015-01-28 15:03:45 +0000 |
---|---|---|
committer | Ingo Schwarze <schwarze@openbsd.org> | 2015-01-28 15:03:45 +0000 |
commit | b8a3bef0831e00e2921ed5feb59338efcca0984d (patch) | |
tree | ff08f642c8b68a7908a923cd1e512ab4cdfee54e /tbl.c | |
parent | 3a4b4e867c202716bfdde346a8fe008f2a6edd3a (diff) | |
download | mandoc-b8a3bef0831e00e2921ed5feb59338efcca0984d.tar.gz |
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.
Diffstat (limited to 'tbl.c')
-rw-r--r-- | tbl.c | 14 |
1 files changed, 7 insertions, 7 deletions
@@ -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); } |