aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/roff.c
diff options
context:
space:
mode:
authorKristaps Dzonsons <kristaps@bsd.lv>2010-12-29 14:53:31 +0000
committerKristaps Dzonsons <kristaps@bsd.lv>2010-12-29 14:53:31 +0000
commited9a4d16c1a2d80761d345659efdc86d2c919b82 (patch)
treeba18c73a5717a69105e2049ab3744deb07da832f /roff.c
parente66333ee27414556c8aac46398d7119658673b54 (diff)
downloadmandoc-ed9a4d16c1a2d80761d345659efdc86d2c919b82.tar.gz
mandoc-ed9a4d16c1a2d80761d345659efdc86d2c919b82.tar.zst
mandoc-ed9a4d16c1a2d80761d345659efdc86d2c919b82.zip
Add handling for `T&', which restarts a table except for its options.
Diffstat (limited to 'roff.c')
-rw-r--r--roff.c18
1 files changed, 17 insertions, 1 deletions
diff --git a/roff.c b/roff.c
index 1e62be4e..d62ebcc3 100644
--- a/roff.c
+++ b/roff.c
@@ -1,4 +1,4 @@
-/* $Id: roff.c,v 1.111 2010/12/29 01:16:57 kristaps Exp $ */
+/* $Id: roff.c,v 1.112 2010/12/29 14:53:31 kristaps Exp $ */
/*
* Copyright (c) 2010 Kristaps Dzonsons <kristaps@bsd.lv>
* Copyright (c) 2010 Ingo Schwarze <schwarze@openbsd.org>
@@ -59,6 +59,7 @@ enum rofft {
ROFF_tr,
ROFF_TS,
ROFF_TE,
+ ROFF_T_,
ROFF_cblock,
ROFF_ccond, /* FIXME: remove this. */
ROFF_USERDEF,
@@ -143,6 +144,7 @@ static void roff_setstr(struct roff *,
static enum rofferr roff_so(ROFF_ARGS);
static enum rofferr roff_TE(ROFF_ARGS);
static enum rofferr roff_TS(ROFF_ARGS);
+static enum rofferr roff_T_(ROFF_ARGS);
static enum rofferr roff_userdef(ROFF_ARGS);
/* See roff_hash_find() */
@@ -175,6 +177,7 @@ static struct roffmac roffs[ROFF_MAX] = {
{ "tr", roff_line_ignore, NULL, NULL, 0, NULL },
{ "TS", roff_TS, NULL, NULL, 0, NULL },
{ "TE", roff_TE, NULL, NULL, 0, NULL },
+ { "T&", roff_T_, NULL, NULL, 0, NULL },
{ ".", roff_cblock, NULL, NULL, 0, NULL },
{ "\\}", roff_ccond, NULL, NULL, 0, NULL },
{ NULL, roff_userdef, NULL, NULL, 0, NULL },
@@ -1123,6 +1126,19 @@ roff_TE(ROFF_ARGS)
/* ARGSUSED */
static enum rofferr
+roff_T_(ROFF_ARGS)
+{
+
+ if (NULL == r->tbl)
+ (*r->msg)(MANDOCERR_NOSCOPE, r->data, ln, ppos, NULL);
+ else
+ tbl_restart(r->tbl);
+
+ return(ROFF_IGN);
+}
+
+/* ARGSUSED */
+static enum rofferr
roff_TS(ROFF_ARGS)
{