summaryrefslogtreecommitdiffstats
path: root/tbl_data.c
diff options
context:
space:
mode:
Diffstat (limited to 'tbl_data.c')
-rw-r--r--tbl_data.c20
1 files changed, 16 insertions, 4 deletions
diff --git a/tbl_data.c b/tbl_data.c
index e0d80230..c036572f 100644
--- a/tbl_data.c
+++ b/tbl_data.c
@@ -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);