From 4dde5d7bbdceeec0032e163e7a8e8cac3233d659 Mon Sep 17 00:00:00 2001 From: Kristaps Dzonsons Date: Thu, 22 Jul 2010 23:03:15 +0000 Subject: Added `in' macro support for -man -Tascii. This is not yet supported in -Thtml (I'm surprised to note that neither is LITERAL mode). --- man_term.c | 45 ++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 44 insertions(+), 1 deletion(-) (limited to 'man_term.c') diff --git a/man_term.c b/man_term.c index 9b7cb7ea..685e53a6 100644 --- a/man_term.c +++ b/man_term.c @@ -1,4 +1,4 @@ -/* $Id: man_term.c,v 1.82 2010/07/22 13:47:50 kristaps Exp $ */ +/* $Id: man_term.c,v 1.83 2010/07/22 23:03:15 kristaps Exp $ */ /* * Copyright (c) 2008, 2009, 2010 Kristaps Dzonsons * @@ -94,6 +94,7 @@ static int pre_SS(DECL_ARGS); static int pre_TP(DECL_ARGS); static int pre_fi(DECL_ARGS); static int pre_ign(DECL_ARGS); +static int pre_in(DECL_ARGS); static int pre_nf(DECL_ARGS); static int pre_sp(DECL_ARGS); @@ -141,6 +142,7 @@ static const struct termact termacts[MAN_MAX] = { { pre_nf, NULL, 0 }, /* Vb */ { pre_fi, NULL, 0 }, /* Ve */ { pre_ign, NULL, 0 }, /* AT */ + { pre_in, NULL, MAN_NOTEXT }, /* in */ }; @@ -352,6 +354,47 @@ pre_B(DECL_ARGS) } +/* ARGSUSED */ +static int +pre_in(DECL_ARGS) +{ + int len, less; + size_t v; + const char *cp; + + term_newln(p); + + if (NULL == n->child) { + p->offset = mt->offset; + return(0); + } + + cp = n->child->string; + less = 0; + + if ('-' == *cp) + less = -1; + else if ('+' == *cp) + less = 1; + else + cp--; + + if ((len = a2width(p, ++cp)) < 0) + return(0); + + v = (size_t)len; + + if (less < 0) + p->offset -= p->offset > v ? v : p->offset; + else if (less > 0) + p->offset += v; + else + p->offset = v; + + return(0); +} + + /* ARGSUSED */ static int pre_sp(DECL_ARGS) -- cgit v1.2.3