From ed9a4d16c1a2d80761d345659efdc86d2c919b82 Mon Sep 17 00:00:00 2001 From: Kristaps Dzonsons Date: Wed, 29 Dec 2010 14:53:31 +0000 Subject: Add handling for `T&', which restarts a table except for its options. --- roff.c | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) (limited to 'roff.c') 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 * Copyright (c) 2010 Ingo Schwarze @@ -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 }, @@ -1121,6 +1124,19 @@ roff_TE(ROFF_ARGS) return(ROFF_IGN); } +/* 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) -- cgit v1.2.3-56-ge451