summaryrefslogtreecommitdiffstats
path: root/tbl.c
diff options
context:
space:
mode:
authorIngo Schwarze <schwarze@openbsd.org>2015-01-28 15:03:45 +0000
committerIngo Schwarze <schwarze@openbsd.org>2015-01-28 15:03:45 +0000
commitb8a3bef0831e00e2921ed5feb59338efcca0984d (patch)
treeff08f642c8b68a7908a923cd1e512ab4cdfee54e /tbl.c
parent3a4b4e867c202716bfdde346a8fe008f2a6edd3a (diff)
downloadmandoc-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.c14
1 files changed, 7 insertions, 7 deletions
diff --git a/tbl.c b/tbl.c
index 7019f4d2..3e67e21f 100644
--- a/tbl.c
+++ b/tbl.c
@@ -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);
}