diff options
author | Kristaps Dzonsons <kristaps@bsd.lv> | 2011-01-07 13:03:48 +0000 |
---|---|---|
committer | Kristaps Dzonsons <kristaps@bsd.lv> | 2011-01-07 13:03:48 +0000 |
commit | e8af06dde1b650186650f207e5b3cde867a86a08 (patch) | |
tree | 03f265a1fffe4b0c74be5eeaf194ebab32bc6603 /tbl_layout.c | |
parent | 155a72059b51f4f20eaf395fb76dafc9db700d61 (diff) | |
download | mandoc-e8af06dde1b650186650f207e5b3cde867a86a08.tar.gz |
Tiny bits in place for tbl horizontal spans. This will wait for the next
release to be implemented in full.
Diffstat (limited to 'tbl_layout.c')
-rw-r--r-- | tbl_layout.c | 19 |
1 files changed, 18 insertions, 1 deletions
diff --git a/tbl_layout.c b/tbl_layout.c index 2fc153ea..20c774bc 100644 --- a/tbl_layout.c +++ b/tbl_layout.c @@ -29,6 +29,12 @@ struct tbl_phrase { enum tbl_cellt key; }; +/* + * FIXME: we can make this parse a lot nicer by, when an error is + * encountered in a layout key, bailing to the next key (i.e. to the + * next whitespace then continuing). + */ + #define KEYS_MAX 11 static const struct tbl_phrase keys[KEYS_MAX] = { @@ -173,9 +179,20 @@ cell(struct tbl_node *tbl, struct tbl_row *rp, return(0); } - (*pos)++; c = keys[i].key; + /* + * If a span cell is found first, raise a warning and abort the + * parse. FIXME: recover from this somehow? + */ + + if (NULL == rp->first && TBL_CELL_SPAN == c) { + TBL_MSG(tbl, MANDOCERR_TBLLAYOUT, ln, *pos); + return(0); + } + + (*pos)++; + /* Extra check for the double-vertical. */ if (TBL_CELL_VERT == c && '|' == p[*pos]) { |