]> git.cameronkatri.com Git - mandoc.git/blobdiff - man.c
Replace the structs mdoc and man by a unified struct roff_man.
[mandoc.git] / man.c
diff --git a/man.c b/man.c
index 39aff548a59cb730c1320eebcdf891f622e920c2..29785f3157cb604375bf935835b742ba94b3bff9 100644 (file)
--- a/man.c
+++ b/man.c
@@ -1,4 +1,4 @@
-/*     $Id: man.c,v 1.150 2015/04/02 21:36:49 schwarze Exp $ */
+/*     $Id: man.c,v 1.153 2015/04/18 16:06:40 schwarze Exp $ */
 /*
  * Copyright (c) 2008, 2009, 2010, 2011 Kristaps Dzonsons <kristaps@bsd.lv>
  * Copyright (c) 2013, 2014, 2015 Ingo Schwarze <schwarze@openbsd.org>
@@ -49,36 +49,37 @@ 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_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 int              man_ptext(struct man *, int, char *, int);
-static int              man_pmacro(struct man *, int, char *, int);
-
-
-const struct man_node *
-man_node(const struct man *man)
+static void             man_alloc1(struct roff_man *);
+static void             man_breakscope(struct roff_man *, int);
+static void             man_descope(struct roff_man *, int, int);
+static void             man_free1(struct roff_man *);
+static struct roff_node *man_node_alloc(struct roff_man *, int, int,
+                               enum roff_type, int);
+static void             man_node_append(struct roff_man *,
+                               struct roff_node *);
+static void             man_node_free(struct roff_node *);
+static void             man_node_unlink(struct roff_man *,
+                               struct roff_node *);
+static int              man_ptext(struct roff_man *, int, char *, int);
+static int              man_pmacro(struct roff_man *, int, char *, int);
+
+
+const struct roff_node *
+man_node(const struct roff_man *man)
 {
 
        return(man->first);
 }
 
-const struct man_meta *
-man_meta(const struct man *man)
+const struct roff_meta *
+man_meta(const struct roff_man *man)
 {
 
        return(&man->meta);
 }
 
 void
-man_reset(struct man *man)
+man_reset(struct roff_man *man)
 {
 
        man_free1(man);
@@ -86,20 +87,20 @@ man_reset(struct man *man)
 }
 
 void
-man_free(struct man *man)
+man_free(struct roff_man *man)
 {
 
        man_free1(man);
        free(man);
 }
 
-struct man *
+struct roff_man *
 man_alloc(struct roff *roff, struct mparse *parse,
        const char *defos, int quick)
 {
-       struct man      *p;
+       struct roff_man *p;
 
-       p = mandoc_calloc(1, sizeof(struct man));
+       p = mandoc_calloc(1, sizeof(*p));
 
        man_hash_init();
        p->parse = parse;
@@ -112,14 +113,14 @@ man_alloc(struct roff *roff, struct mparse *parse,
 }
 
 void
-man_endparse(struct man *man)
+man_endparse(struct roff_man *man)
 {
 
        man_macroend(man);
 }
 
 int
-man_parseln(struct man *man, int ln, char *buf, int offs)
+man_parseln(struct roff_man *man, int ln, char *buf, int offs)
 {
 
        if (man->last->type != ROFFT_EQN || ln > man->last->line)
@@ -131,34 +132,34 @@ man_parseln(struct man *man, int ln, char *buf, int offs)
 }
 
 static void
-man_free1(struct man *man)
+man_free1(struct roff_man *man)
 {
 
        if (man->first)
                man_node_delete(man, man->first);
        free(man->meta.title);
-       free(man->meta.source);
+       free(man->meta.os);
        free(man->meta.date);
        free(man->meta.vol);
        free(man->meta.msec);
 }
 
 static void
-man_alloc1(struct man *man)
+man_alloc1(struct roff_man *man)
 {
 
-       memset(&man->meta, 0, sizeof(struct man_meta));
+       memset(&man->meta, 0, sizeof(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;
-       man->next = MAN_NEXT_CHILD;
+       man->next = ROFF_NEXT_CHILD;
 }
 
 
 static void
-man_node_append(struct man *man, struct man_node *p)
+man_node_append(struct roff_man *man, struct roff_node *p)
 {
 
        assert(man->last);
@@ -166,12 +167,12 @@ man_node_append(struct man *man, struct man_node *p)
        assert(p->type != ROFFT_ROOT);
 
        switch (man->next) {
-       case MAN_NEXT_SIBLING:
+       case ROFF_NEXT_SIBLING:
                man->last->next = p;
                p->prev = man->last;
                p->parent = man->last->parent;
                break;
-       case MAN_NEXT_CHILD:
+       case ROFF_NEXT_CHILD:
                man->last->child = p;
                p->parent = man->last;
                break;
@@ -213,13 +214,13 @@ man_node_append(struct man *man, struct man_node *p)
        }
 }
 
-static struct man_node *
-man_node_alloc(struct man *man, int line, int pos,
-               enum roff_type type, enum mant tok)
+static struct roff_node *
+man_node_alloc(struct roff_man *man, int line, int pos,
+               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,60 +233,60 @@ 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 roff_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);
-       man->next = MAN_NEXT_CHILD;
+       man->next = ROFF_NEXT_CHILD;
 }
 
 void
-man_head_alloc(struct man *man, int line, int pos, enum mant tok)
+man_head_alloc(struct roff_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);
-       man->next = MAN_NEXT_CHILD;
+       man->next = ROFF_NEXT_CHILD;
 }
 
 void
-man_body_alloc(struct man *man, int line, int pos, enum mant tok)
+man_body_alloc(struct roff_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);
-       man->next = MAN_NEXT_CHILD;
+       man->next = ROFF_NEXT_CHILD;
 }
 
 void
-man_block_alloc(struct man *man, int line, int pos, enum mant tok)
+man_block_alloc(struct roff_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);
-       man->next = MAN_NEXT_CHILD;
+       man->next = ROFF_NEXT_CHILD;
 }
 
 void
-man_word_alloc(struct man *man, int line, int pos, const char *word)
+man_word_alloc(struct roff_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);
        man_node_append(man, n);
-       man->next = MAN_NEXT_SIBLING;
+       man->next = ROFF_NEXT_SIBLING;
 }
 
 void
-man_word_append(struct man *man, const char *word)
+man_word_append(struct roff_man *man, const char *word)
 {
-       struct man_node *n;
+       struct roff_node *n;
        char            *addstr, *newstr;
 
        n = man->last;
@@ -294,7 +295,7 @@ man_word_append(struct man *man, const char *word)
        free(addstr);
        free(n->string);
        n->string = newstr;
-       man->next = MAN_NEXT_SIBLING;
+       man->next = ROFF_NEXT_SIBLING;
 }
 
 /*
@@ -302,7 +303,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 +311,7 @@ man_node_free(struct man_node *p)
 }
 
 void
-man_node_delete(struct man *man, struct man_node *p)
+man_node_delete(struct roff_man *man, struct roff_node *p)
 {
 
        while (p->child)
@@ -321,34 +322,34 @@ man_node_delete(struct man *man, struct man_node *p)
 }
 
 void
-man_addeqn(struct man *man, const struct eqn *ep)
+man_addeqn(struct roff_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;
        if (ep->ln > man->last->line)
                n->flags |= MAN_LINE;
        man_node_append(man, n);
-       man->next = MAN_NEXT_SIBLING;
+       man->next = ROFF_NEXT_SIBLING;
        man_descope(man, ep->ln, ep->pos);
 }
 
 void
-man_addspan(struct man *man, const struct tbl_span *sp)
+man_addspan(struct roff_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);
        n->span = sp;
        man_node_append(man, n);
-       man->next = MAN_NEXT_SIBLING;
+       man->next = ROFF_NEXT_SIBLING;
        man_descope(man, sp->line, 0);
 }
 
 static void
-man_descope(struct man *man, int line, int offs)
+man_descope(struct roff_man *man, int line, int offs)
 {
        /*
         * Co-ordinate what happens with having a next-line scope open:
@@ -368,7 +369,7 @@ man_descope(struct man *man, int line, int offs)
 }
 
 static int
-man_ptext(struct man *man, int line, char *buf, int offs)
+man_ptext(struct roff_man *man, int line, char *buf, int offs)
 {
        int              i;
 
@@ -393,7 +394,7 @@ man_ptext(struct man *man, int line, char *buf, int offs)
                if (man->last->tok != MAN_SH &&
                    man->last->tok != MAN_SS) {
                        man_elem_alloc(man, line, offs, MAN_sp);
-                       man->next = MAN_NEXT_SIBLING;
+                       man->next = ROFF_NEXT_SIBLING;
                }
                return(1);
        }
@@ -436,11 +437,11 @@ man_ptext(struct man *man, int line, char *buf, int offs)
 }
 
 static int
-man_pmacro(struct man *man, int ln, char *buf, int offs)
+man_pmacro(struct roff_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 +537,9 @@ man_pmacro(struct man *man, int ln, char *buf, int offs)
 }
 
 void
-man_breakscope(struct man *man, enum mant tok)
+man_breakscope(struct roff_man *man, int tok)
 {
-       struct man_node *n;
+       struct roff_node *n;
 
        /*
         * An element next line scope is open,
@@ -596,7 +597,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 roff_man *man, struct roff_node *n)
 {
 
        /* Adjust siblings. */
@@ -621,10 +622,10 @@ man_node_unlink(struct man *man, struct man_node *n)
                /*assert(NULL == n->next);*/
                if (n->prev) {
                        man->last = n->prev;
-                       man->next = MAN_NEXT_SIBLING;
+                       man->next = ROFF_NEXT_SIBLING;
                } else {
                        man->last = n->parent;
-                       man->next = MAN_NEXT_CHILD;
+                       man->next = ROFF_NEXT_CHILD;
                }
        }
 
@@ -633,7 +634,7 @@ man_node_unlink(struct man *man, struct man_node *n)
 }
 
 const struct mparse *
-man_mparse(const struct man *man)
+man_mparse(const struct roff_man *man)
 {
 
        assert(man && man->parse);
@@ -641,7 +642,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;