aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/tbl_data.c
diff options
context:
space:
mode:
authorKristaps Dzonsons <kristaps@bsd.lv>2011-01-07 14:59:52 +0000
committerKristaps Dzonsons <kristaps@bsd.lv>2011-01-07 14:59:52 +0000
commit3d53bc0f504bfa821a250cb8c824f1a71d3fa18b (patch)
tree93d8918633cf5b3607ab4d7e2acaebbe38ada6ac /tbl_data.c
parentd5e33853a27c639beda0a85062ce7db9996e22e1 (diff)
downloadmandoc-3d53bc0f504bfa821a250cb8c824f1a71d3fa18b.tar.gz
mandoc-3d53bc0f504bfa821a250cb8c824f1a71d3fa18b.tar.zst
mandoc-3d53bc0f504bfa821a250cb8c824f1a71d3fa18b.zip
Fixes: T} can be followed by a delimiter then more data. Make this
work and add documentation for it. Also make tbl_term() not puke if the number of data cells is less than the number of layout cells (which happens from time to time). This still needs work because we should pad out empty cells so that the borders all work out.
Diffstat (limited to 'tbl_data.c')
-rw-r--r--tbl_data.c22
1 files changed, 17 insertions, 5 deletions
diff --git a/tbl_data.c b/tbl_data.c
index d875f914..f53e1099 100644
--- a/tbl_data.c
+++ b/tbl_data.c
@@ -1,4 +1,4 @@
-/* $Id: tbl_data.c,v 1.13 2011/01/07 13:20:58 kristaps Exp $ */
+/* $Id: tbl_data.c,v 1.14 2011/01/07 14:59:52 kristaps Exp $ */
/*
* Copyright (c) 2009, 2010 Kristaps Dzonsons <kristaps@bsd.lv>
*
@@ -118,15 +118,27 @@ tbl_cdata(struct tbl_node *tbl, int ln, const char *p)
{
struct tbl_dat *dat;
size_t sz;
+ int pos;
- if (0 == strcmp(p, "T}")) {
- tbl->part = TBL_PART_DATA;
- return(1);
- }
+ pos = 0;
dat = tbl->last_span->last;
dat->pos = TBL_DATA_DATA;
+ if (p[pos] == 'T' && p[pos + 1] == '}') {
+ pos += 2;
+ if (p[pos] == tbl->opts.tab) {
+ tbl->part = TBL_PART_DATA;
+ pos++;
+ return(data(tbl, tbl->last_span, ln, p, &pos));
+ } else if ('\0' == p[pos]) {
+ tbl->part = TBL_PART_DATA;
+ return(1);
+ }
+
+ /* Fallthrough: T} is part of a word. */
+ }
+
if (dat->string) {
sz = strlen(p) + strlen(dat->string) + 2;
dat->string = mandoc_realloc(dat->string, sz);