summaryrefslogtreecommitdiffstats
path: root/man.c
diff options
context:
space:
mode:
authorIngo Schwarze <schwarze@openbsd.org>2015-04-02 22:48:17 +0000
committerIngo Schwarze <schwarze@openbsd.org>2015-04-02 22:48:17 +0000
commit9e6e3b6be0e9ffe29cf4876ce0b7ded2c3c386b9 (patch)
tree1a2bb3465096bc77a000c55dc5753148f39484ad /man.c
parentdd569c39747096c781c1cbec49b48a85ba29f23d (diff)
downloadmandoc-9e6e3b6be0e9ffe29cf4876ce0b7ded2c3c386b9.tar.gz
Second step towards parser unification:
Replace struct mdoc_node and struct man_node by a unified struct roff_node. To be able to use the tok member for both mdoc(7) and man(7) without defining all the macros in roff.h, sacrifice a tiny bit of type safety and make tok an int rather than an enum. Almost mechanical, no functional change. Written on the Eurostar from Bruxelles to London on the way to p2k15.
Diffstat (limited to 'man.c')
-rw-r--r--man.c67
1 files changed, 33 insertions, 34 deletions
diff --git a/man.c b/man.c
index 640e96be..4e842e5e 100644
--- a/man.c
+++ b/man.c
@@ -50,20 +50,19 @@ const char *const __man_macronames[MAN_MAX] = {
const char * const *man_macronames = __man_macronames;
static void man_alloc1(struct man *);
-static void man_breakscope(struct man *, enum mant);
+static void man_breakscope(struct man *, int);
static void man_descope(struct man *, int, int);
static void man_free1(struct man *);
-static struct man_node *man_node_alloc(struct man *, int, int,
- enum roff_type, enum mant);
-static void man_node_append(struct man *, struct man_node *);
-static void man_node_free(struct man_node *);
-static void man_node_unlink(struct man *,
- struct man_node *);
+static struct roff_node *man_node_alloc(struct man *, int, int,
+ enum roff_type, int);
+static void man_node_append(struct man *, struct roff_node *);
+static void man_node_free(struct roff_node *);
+static void man_node_unlink(struct man *, struct roff_node *);
static int man_ptext(struct man *, int, char *, int);
static int man_pmacro(struct man *, int, char *, int);
-const struct man_node *
+const struct roff_node *
man_node(const struct man *man)
{
@@ -149,7 +148,7 @@ man_alloc1(struct man *man)
memset(&man->meta, 0, sizeof(struct man_meta));
man->flags = 0;
- man->last = mandoc_calloc(1, sizeof(struct man_node));
+ man->last = mandoc_calloc(1, sizeof(*man->last));
man->first = man->last;
man->last->type = ROFFT_ROOT;
man->last->tok = MAN_MAX;
@@ -158,7 +157,7 @@ man_alloc1(struct man *man)
static void
-man_node_append(struct man *man, struct man_node *p)
+man_node_append(struct man *man, struct roff_node *p)
{
assert(man->last);
@@ -213,13 +212,13 @@ man_node_append(struct man *man, struct man_node *p)
}
}
-static struct man_node *
+static struct roff_node *
man_node_alloc(struct man *man, int line, int pos,
- enum roff_type type, enum mant tok)
+ enum roff_type type, int tok)
{
- struct man_node *p;
+ struct roff_node *p;
- p = mandoc_calloc(1, sizeof(struct man_node));
+ p = mandoc_calloc(1, sizeof(*p));
p->line = line;
p->pos = pos;
p->type = type;
@@ -232,9 +231,9 @@ man_node_alloc(struct man *man, int line, int pos,
}
void
-man_elem_alloc(struct man *man, int line, int pos, enum mant tok)
+man_elem_alloc(struct man *man, int line, int pos, int tok)
{
- struct man_node *p;
+ struct roff_node *p;
p = man_node_alloc(man, line, pos, ROFFT_ELEM, tok);
man_node_append(man, p);
@@ -242,9 +241,9 @@ man_elem_alloc(struct man *man, int line, int pos, enum mant tok)
}
void
-man_head_alloc(struct man *man, int line, int pos, enum mant tok)
+man_head_alloc(struct man *man, int line, int pos, int tok)
{
- struct man_node *p;
+ struct roff_node *p;
p = man_node_alloc(man, line, pos, ROFFT_HEAD, tok);
man_node_append(man, p);
@@ -252,9 +251,9 @@ man_head_alloc(struct man *man, int line, int pos, enum mant tok)
}
void
-man_body_alloc(struct man *man, int line, int pos, enum mant tok)
+man_body_alloc(struct man *man, int line, int pos, int tok)
{
- struct man_node *p;
+ struct roff_node *p;
p = man_node_alloc(man, line, pos, ROFFT_BODY, tok);
man_node_append(man, p);
@@ -262,9 +261,9 @@ man_body_alloc(struct man *man, int line, int pos, enum mant tok)
}
void
-man_block_alloc(struct man *man, int line, int pos, enum mant tok)
+man_block_alloc(struct man *man, int line, int pos, int tok)
{
- struct man_node *p;
+ struct roff_node *p;
p = man_node_alloc(man, line, pos, ROFFT_BLOCK, tok);
man_node_append(man, p);
@@ -274,7 +273,7 @@ man_block_alloc(struct man *man, int line, int pos, enum mant tok)
void
man_word_alloc(struct man *man, int line, int pos, const char *word)
{
- struct man_node *n;
+ struct roff_node *n;
n = man_node_alloc(man, line, pos, ROFFT_TEXT, MAN_MAX);
n->string = roff_strdup(man->roff, word);
@@ -285,7 +284,7 @@ man_word_alloc(struct man *man, int line, int pos, const char *word)
void
man_word_append(struct man *man, const char *word)
{
- struct man_node *n;
+ struct roff_node *n;
char *addstr, *newstr;
n = man->last;
@@ -302,7 +301,7 @@ man_word_append(struct man *man, const char *word)
* node from its context; for that, see man_node_unlink().
*/
static void
-man_node_free(struct man_node *p)
+man_node_free(struct roff_node *p)
{
free(p->string);
@@ -310,7 +309,7 @@ man_node_free(struct man_node *p)
}
void
-man_node_delete(struct man *man, struct man_node *p)
+man_node_delete(struct man *man, struct roff_node *p)
{
while (p->child)
@@ -323,7 +322,7 @@ man_node_delete(struct man *man, struct man_node *p)
void
man_addeqn(struct man *man, const struct eqn *ep)
{
- struct man_node *n;
+ struct roff_node *n;
n = man_node_alloc(man, ep->ln, ep->pos, ROFFT_EQN, MAN_MAX);
n->eqn = ep;
@@ -337,7 +336,7 @@ man_addeqn(struct man *man, const struct eqn *ep)
void
man_addspan(struct man *man, const struct tbl_span *sp)
{
- struct man_node *n;
+ struct roff_node *n;
man_breakscope(man, MAN_MAX);
n = man_node_alloc(man, sp->line, 0, ROFFT_TBL, MAN_MAX);
@@ -438,9 +437,9 @@ man_ptext(struct man *man, int line, char *buf, int offs)
static int
man_pmacro(struct man *man, int ln, char *buf, int offs)
{
- struct man_node *n;
+ struct roff_node *n;
const char *cp;
- enum mant tok;
+ int tok;
int i, ppos;
int bline;
char mac[5];
@@ -536,9 +535,9 @@ man_pmacro(struct man *man, int ln, char *buf, int offs)
}
void
-man_breakscope(struct man *man, enum mant tok)
+man_breakscope(struct man *man, int tok)
{
- struct man_node *n;
+ struct roff_node *n;
/*
* An element next line scope is open,
@@ -596,7 +595,7 @@ man_breakscope(struct man *man, enum mant tok)
* point will also be adjusted accordingly.
*/
static void
-man_node_unlink(struct man *man, struct man_node *n)
+man_node_unlink(struct man *man, struct roff_node *n)
{
/* Adjust siblings. */
@@ -641,7 +640,7 @@ man_mparse(const struct man *man)
}
void
-man_deroff(char **dest, const struct man_node *n)
+man_deroff(char **dest, const struct roff_node *n)
{
char *cp;
size_t sz;