aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/mdoc_man.c
diff options
context:
space:
mode:
authorIngo Schwarze <schwarze@openbsd.org>2017-05-05 13:17:54 +0000
committerIngo Schwarze <schwarze@openbsd.org>2017-05-05 13:17:54 +0000
commit264209da4a75cf323caf3e1a5e89534f15086b73 (patch)
tree48a9e3b0104477eb2934ee5b430c3f5e31d3ecc2 /mdoc_man.c
parentecf3d7a66ad4080c5dabd04c50179340b4f39242 (diff)
downloadmandoc-264209da4a75cf323caf3e1a5e89534f15086b73.tar.gz
mandoc-264209da4a75cf323caf3e1a5e89534f15086b73.tar.zst
mandoc-264209da4a75cf323caf3e1a5e89534f15086b73.zip
move .ll to the roff modules
Diffstat (limited to 'mdoc_man.c')
-rw-r--r--mdoc_man.c50
1 files changed, 24 insertions, 26 deletions
diff --git a/mdoc_man.c b/mdoc_man.c
index 20796006..61b4c870 100644
--- a/mdoc_man.c
+++ b/mdoc_man.c
@@ -1,4 +1,4 @@
-/* $Id: mdoc_man.c,v 1.111 2017/05/05 02:06:19 schwarze Exp $ */
+/* $Id: mdoc_man.c,v 1.112 2017/05/05 13:17:55 schwarze Exp $ */
/*
* Copyright (c) 2011-2017 Ingo Schwarze <schwarze@openbsd.org>
*
@@ -33,10 +33,13 @@
#define DECL_ARGS const struct roff_meta *meta, struct roff_node *n
+typedef int (*int_fp)(DECL_ARGS);
+typedef void (*void_fp)(DECL_ARGS);
+
struct manact {
- int (*cond)(DECL_ARGS); /* DON'T run actions */
- int (*pre)(DECL_ARGS); /* pre-node action */
- void (*post)(DECL_ARGS); /* post-node action */
+ int_fp cond; /* DON'T run actions */
+ int_fp pre; /* pre-node action */
+ void_fp post; /* post-node action */
const char *prefix; /* pre-node string constant */
const char *suffix; /* post-node string constant */
};
@@ -80,7 +83,7 @@ static int pre_bd(DECL_ARGS);
static int pre_bf(DECL_ARGS);
static int pre_bk(DECL_ARGS);
static int pre_bl(DECL_ARGS);
-static int pre_br(DECL_ARGS);
+static void pre_br(DECL_ARGS);
static int pre_dl(DECL_ARGS);
static int pre_en(DECL_ARGS);
static int pre_enc(DECL_ARGS);
@@ -93,13 +96,13 @@ static int pre_fd(DECL_ARGS);
static int pre_fl(DECL_ARGS);
static int pre_fn(DECL_ARGS);
static int pre_fo(DECL_ARGS);
-static int pre_ft(DECL_ARGS);
+static void pre_ft(DECL_ARGS);
static int pre_Ft(DECL_ARGS);
static int pre_in(DECL_ARGS);
static int pre_it(DECL_ARGS);
static int pre_lk(DECL_ARGS);
static int pre_li(DECL_ARGS);
-static int pre_ll(DECL_ARGS);
+static void pre_ll(DECL_ARGS);
static int pre_nm(DECL_ARGS);
static int pre_no(DECL_ARGS);
static int pre_ns(DECL_ARGS);
@@ -121,6 +124,12 @@ static void print_width(const struct mdoc_bl *,
static void print_count(int *);
static void print_node(DECL_ARGS);
+static const void_fp roff_manacts[ROFF_MAX] = {
+ pre_br,
+ pre_ft,
+ pre_ll,
+};
+
static const struct manact __manacts[MDOC_MAX - MDOC_Dd] = {
{ NULL, NULL, NULL, NULL, NULL }, /* Dd */
{ NULL, NULL, NULL, NULL, NULL }, /* Dt */
@@ -243,7 +252,6 @@ static const struct manact __manacts[MDOC_MAX - MDOC_Dd] = {
{ NULL, pre_sp, post_sp, NULL, NULL }, /* sp */
{ NULL, NULL, post_percent, NULL, NULL }, /* %U */
{ NULL, NULL, NULL, NULL, NULL }, /* Ta */
- { NULL, pre_ll, post_sp, NULL, NULL }, /* ll */
};
static const struct manact *const manacts = __manacts - MDOC_Dd;
@@ -653,16 +661,8 @@ print_node(DECL_ARGS)
else if (outflags & MMAN_Sm)
outflags |= MMAN_spc;
} else if (n->tok < ROFF_MAX) {
- switch (n->tok) {
- case ROFF_br:
- do_sub = pre_br(meta, n);
- break;
- case ROFF_ft:
- do_sub = pre_ft(meta, n);
- break;
- default:
- abort();
- }
+ (*roff_manacts[n->tok])(meta, n);
+ return;
} else {
assert(n->tok >= MDOC_Dd && n->tok < MDOC_MAX);
/*
@@ -1068,12 +1068,10 @@ post_bl(DECL_ARGS)
}
-static int
+static void
pre_br(DECL_ARGS)
{
-
outflags |= MMAN_br;
- return 0;
}
static int
@@ -1326,13 +1324,12 @@ pre_Ft(DECL_ARGS)
return 1;
}
-static int
+static void
pre_ft(DECL_ARGS)
{
print_line(".ft", 0);
print_word(n->child->string);
outflags |= MMAN_nl;
- return 0;
}
static int
@@ -1567,12 +1564,13 @@ pre_lk(DECL_ARGS)
return 0;
}
-static int
+static void
pre_ll(DECL_ARGS)
{
-
print_line(".ll", 0);
- return 1;
+ if (n->child != NULL)
+ print_word(n->child->string);
+ outflags |= MMAN_nl;
}
static int