summaryrefslogtreecommitdiffstats
path: root/man_term.c
diff options
context:
space:
mode:
authorKristaps Dzonsons <kristaps@bsd.lv>2010-07-22 23:03:15 +0000
committerKristaps Dzonsons <kristaps@bsd.lv>2010-07-22 23:03:15 +0000
commit88550d3ab5f0d432b6f5577342f5907c1ab4268b (patch)
tree877044f520faded71e2748f1a9ee93810fdda3ce /man_term.c
parent837cbf3ed654f4488939e0fac5c03c4ad9258c36 (diff)
downloadmandoc-88550d3ab5f0d432b6f5577342f5907c1ab4268b.tar.gz
Added `in' macro support for -man -Tascii. This is not yet supported in
-Thtml (I'm surprised to note that neither is LITERAL mode).
Diffstat (limited to 'man_term.c')
-rw-r--r--man_term.c43
1 files changed, 43 insertions, 0 deletions
diff --git a/man_term.c b/man_term.c
index 2f122958..c7b92d8c 100644
--- a/man_term.c
+++ b/man_term.c
@@ -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 */
};
@@ -354,6 +356,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)
{
size_t i, len;