]> git.cameronkatri.com Git - mandoc.git/blobdiff - mdoc_man.c
Note that archives are being hosted at gmane.
[mandoc.git] / mdoc_man.c
index b64c7eaed802ed7687b8e3a7d3e1ccae62b68efd..9d7d2ca23861a9085c7f9de01b4831aa6628743b 100644 (file)
@@ -1,4 +1,4 @@
-/*     $Id: mdoc_man.c,v 1.6 2011/10/08 11:37:27 kristaps Exp $ */
+/*     $Id: mdoc_man.c,v 1.9 2011/10/24 21:47:59 schwarze Exp $ */
 /*
  * Copyright (c) 2011 Ingo Schwarze <schwarze@openbsd.org>
  *
  * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
  * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
  */
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
 #include <stdio.h>
 #include <string.h>
 
@@ -52,6 +56,7 @@ static        void      post_sp(DECL_ARGS);
 static int       pre_ap(DECL_ARGS);
 static int       pre_bd(DECL_ARGS);
 static int       pre_br(DECL_ARGS);
+static int       pre_bx(DECL_ARGS);
 static int       pre_dl(DECL_ARGS);
 static int       pre_enc(DECL_ARGS);
 static int       pre_it(DECL_ARGS);
@@ -60,6 +65,7 @@ static        int       pre_ns(DECL_ARGS);
 static int       pre_pp(DECL_ARGS);
 static int       pre_sp(DECL_ARGS);
 static int       pre_sect(DECL_ARGS);
+static int       pre_ux(DECL_ARGS);
 static int       pre_xr(DECL_ARGS);
 static void      print_word(struct mman *, const char *);
 static void      print_node(DECL_ARGS);
@@ -68,7 +74,7 @@ static        const struct manact manacts[MDOC_MAX + 1] = {
        { NULL, pre_ap, NULL, NULL, NULL }, /* Ap */
        { NULL, NULL, NULL, NULL, NULL }, /* Dd */
        { NULL, NULL, NULL, NULL, NULL }, /* Dt */
-       { NULL, NULL, NULL, NULL, NULL }, /* _Os */
+       { NULL, NULL, NULL, NULL, NULL }, /* Os */
        { NULL, pre_sect, post_sect, ".SH", NULL }, /* Sh */
        { NULL, pre_sect, post_sect, ".SS", NULL }, /* Ss */
        { NULL, pre_pp, NULL, NULL, NULL }, /* Pp */
@@ -79,14 +85,14 @@ static      const struct manact manacts[MDOC_MAX + 1] = {
        { NULL, NULL, NULL, NULL, NULL }, /* Bl */
        { NULL, NULL, NULL, NULL, NULL }, /* El */
        { NULL, pre_it, NULL, NULL, NULL }, /* _It */
-       { NULL, NULL, NULL, NULL, NULL }, /* _Ad */
+       { NULL, pre_enc, post_enc, "\\fI", "\\fP" }, /* Ad */
        { NULL, NULL, NULL, NULL, NULL }, /* _An */
        { NULL, pre_enc, post_enc, "\\fI", "\\fP" }, /* Ar */
-       { NULL, NULL, NULL, NULL, NULL }, /* _Cd */
+       { NULL, pre_enc, post_enc, "\\fB", "\\fP" }, /* Cd */
        { NULL, pre_enc, post_enc, "\\fB", "\\fP" }, /* Cm */
-       { NULL, NULL, NULL, NULL, NULL }, /* _Dv */
-       { NULL, NULL, NULL, NULL, NULL }, /* _Er */
-       { NULL, NULL, NULL, NULL, NULL }, /* _Ev */
+       { NULL, pre_enc, post_enc, "\\fR", "\\fP" }, /* Dv */
+       { NULL, pre_enc, post_enc, "\\fR", "\\fP" }, /* Er */
+       { NULL, pre_enc, post_enc, "\\fR", "\\fP" }, /* Ev */
        { NULL, pre_enc, post_enc, "The \\fB",
            "\\fP\nutility exits 0 on success, and >0 if an error occurs."
            }, /* Ex */
@@ -97,21 +103,21 @@ static     const struct manact manacts[MDOC_MAX + 1] = {
        { NULL, NULL, NULL, NULL, NULL }, /* _Ft */
        { NULL, pre_enc, post_enc, "\\fB", "\\fP" }, /* Ic */
        { NULL, NULL, NULL, NULL, NULL }, /* _In */
-       { NULL, NULL, NULL, NULL, NULL }, /* _Li */
+       { NULL, pre_enc, post_enc, "\\fR", "\\fP" }, /* Li */
        { cond_head, pre_enc, NULL, "\\- ", NULL }, /* Nd */
        { NULL, pre_nm, post_nm, NULL, NULL }, /* Nm */
        { cond_body, pre_enc, post_enc, "[", "]" }, /* Op */
-       { NULL, NULL, NULL, NULL, NULL }, /* _Ot */
-       { NULL, pre_enc, post_enc, "\\fI", "\\fP" }, /* _Pa */
+       { NULL, NULL, NULL, NULL, NULL }, /* Ot */
+       { NULL, pre_enc, post_enc, "\\fI", "\\fP" }, /* Pa */
        { NULL, pre_enc, post_enc, "The \\fB",
                "\\fP\nfunction returns the value 0 if successful;\n"
                "otherwise the value -1 is returned and the global\n"
                "variable \\fIerrno\\fP is set to indicate the error."
                }, /* Rv */
-       { NULL, NULL, NULL, NULL, NULL }, /* _St */
+       { NULL, NULL, NULL, NULL, NULL }, /* St */
        { NULL, NULL, NULL, NULL, NULL }, /* _Va */
        { NULL, NULL, NULL, NULL, NULL }, /* _Vt */
-       { NULL, pre_xr, NULL, NULL, NULL }, /* _Xr */
+       { NULL, pre_xr, NULL, NULL, NULL }, /* Xr */
        { NULL, NULL, post_percent, NULL, NULL }, /* _%A */
        { NULL, NULL, NULL, NULL, NULL }, /* _%B */
        { NULL, NULL, post_percent, NULL, NULL }, /* _%D */
@@ -123,71 +129,71 @@ static    const struct manact manacts[MDOC_MAX + 1] = {
        { NULL, NULL, NULL, NULL, NULL }, /* _%R */
        { NULL, pre_enc, post_percent, "\"", "\"" }, /* %T */
        { NULL, NULL, NULL, NULL, NULL }, /* _%V */
-       { NULL, NULL, NULL, NULL, NULL }, /* _Ac */
-       { NULL, NULL, NULL, NULL, NULL }, /* _Ao */
+       { NULL, NULL, NULL, NULL, NULL }, /* Ac */
+       { cond_body, pre_enc, post_enc, "<", ">" }, /* Ao */
        { cond_body, pre_enc, post_enc, "<", ">" }, /* Aq */
-       { NULL, NULL, NULL, NULL, NULL }, /* _At */
+       { NULL, NULL, NULL, NULL, NULL }, /* At */
        { NULL, NULL, NULL, NULL, NULL }, /* Bc */
        { NULL, NULL, NULL, NULL, NULL }, /* _Bf */
        { cond_body, pre_enc, post_enc, "[", "]" }, /* Bo */
        { cond_body, pre_enc, post_enc, "[", "]" }, /* Bq */
-       { NULL, NULL, NULL, NULL, NULL }, /* _Bsx */
-       { NULL, NULL, NULL, NULL, NULL }, /* _Bx */
-       { NULL, NULL, NULL, NULL, NULL }, /* _Db */
-       { NULL, NULL, NULL, NULL, NULL }, /* _Dc */
-       { NULL, NULL, NULL, NULL, NULL }, /* _Do */
+       { NULL, pre_ux, NULL, "BSD/OS", NULL }, /* Bsx */
+       { NULL, pre_bx, NULL, NULL, NULL }, /* Bx */
+       { NULL, NULL, NULL, NULL, NULL }, /* Db */
+       { NULL, NULL, NULL, NULL, NULL }, /* Dc */
+       { cond_body, pre_enc, post_enc, "``", "''" }, /* Do */
        { cond_body, pre_enc, post_enc, "``", "''" }, /* Dq */
        { NULL, NULL, NULL, NULL, NULL }, /* _Ec */
        { NULL, NULL, NULL, NULL, NULL }, /* _Ef */
        { NULL, pre_enc, post_enc, "\\fI", "\\fP" }, /* Em */
        { NULL, NULL, NULL, NULL, NULL }, /* _Eo */
-       { NULL, NULL, NULL, NULL, NULL }, /* _Fx */
-       { NULL, NULL, NULL, NULL, NULL }, /* _Ms */
-       { NULL, NULL, NULL, NULL, NULL }, /* _No */
+       { NULL, pre_ux, NULL, "FreeBSD", NULL }, /* Fx */
+       { NULL, pre_enc, post_enc, "\\fB", "\\fP" }, /* Ms */
+       { NULL, NULL, NULL, NULL, NULL }, /* No */
        { NULL, pre_ns, NULL, NULL, NULL }, /* Ns */
-       { NULL, NULL, NULL, NULL, NULL }, /* _Nx */
-       { NULL, NULL, NULL, NULL, NULL }, /* _Ox */
+       { NULL, pre_ux, NULL, "NetBSD", NULL }, /* Nx */
+       { NULL, pre_ux, NULL, "OpenBSD", NULL }, /* Ox */
        { NULL, NULL, NULL, NULL, NULL }, /* Pc */
        { NULL, NULL, post_pf, NULL, NULL }, /* Pf */
        { cond_body, pre_enc, post_enc, "(", ")" }, /* Po */
        { cond_body, pre_enc, post_enc, "(", ")" }, /* Pq */
-       { NULL, NULL, NULL, NULL, NULL }, /* _Qc */
+       { NULL, NULL, NULL, NULL, NULL }, /* Qc */
        { cond_body, pre_enc, post_enc, "`", "'" }, /* Ql */
-       { NULL, NULL, NULL, NULL, NULL }, /* _Qo */
-       { NULL, NULL, NULL, NULL, NULL }, /* _Qq */
-       { NULL, NULL, NULL, NULL, NULL }, /* _Re */
+       { cond_body, pre_enc, post_enc, "\"", "\"" }, /* Qo */
+       { cond_body, pre_enc, post_enc, "\"", "\"" }, /* Qq */
+       { NULL, NULL, NULL, NULL, NULL }, /* Re */
        { cond_body, pre_pp, NULL, NULL, NULL }, /* Rs */
-       { NULL, NULL, NULL, NULL, NULL }, /* _Sc */
-       { NULL, NULL, NULL, NULL, NULL }, /* _So */
+       { NULL, NULL, NULL, NULL, NULL }, /* Sc */
+       { cond_body, pre_enc, post_enc, "`", "'" }, /* So */
        { cond_body, pre_enc, post_enc, "`", "'" }, /* Sq */
        { NULL, NULL, NULL, NULL, NULL }, /* _Sm */
        { NULL, pre_enc, post_enc, "\\fI", "\\fP" }, /* Sx */
        { NULL, pre_enc, post_enc, "\\fB", "\\fP" }, /* Sy */
-       { NULL, NULL, NULL, NULL, NULL }, /* _Tn */
-       { NULL, NULL, NULL, NULL, NULL }, /* _Ux */
+       { NULL, pre_enc, post_enc, "\\fR", "\\fP" }, /* Tn */
+       { NULL, pre_ux, NULL, "UNIX", NULL }, /* Ux */
        { NULL, NULL, NULL, NULL, NULL }, /* _Xc */
        { NULL, NULL, NULL, NULL, NULL }, /* _Xo */
        { NULL, NULL, NULL, NULL, NULL }, /* _Fo */
        { NULL, NULL, NULL, NULL, NULL }, /* _Fc */
        { cond_body, pre_enc, post_enc, "[", "]" }, /* Oo */
-       { NULL, NULL, NULL, NULL, NULL }, /* _Oc */
+       { NULL, NULL, NULL, NULL, NULL }, /* Oc */
        { NULL, NULL, NULL, NULL, NULL }, /* _Bk */
        { NULL, NULL, NULL, NULL, NULL }, /* _Ek */
-       { NULL, NULL, NULL, NULL, NULL }, /* _Bt */
-       { NULL, NULL, NULL, NULL, NULL }, /* _Hf */
-       { NULL, NULL, NULL, NULL, NULL }, /* _Fr */
-       { NULL, NULL, NULL, NULL, NULL }, /* _Ud */
+       { NULL, pre_ux, NULL, "is currently in beta test.", NULL }, /* Bt */
+       { NULL, NULL, NULL, NULL, NULL }, /* Hf */
+       { NULL, NULL, NULL, NULL, NULL }, /* Fr */
+       { NULL, pre_ux, NULL, "currently under development.", NULL }, /* Ud */
        { NULL, NULL, NULL, NULL, NULL }, /* _Lb */
        { NULL, pre_pp, NULL, NULL, NULL }, /* Lp */
        { NULL, NULL, NULL, NULL, NULL }, /* _Lk */
        { NULL, NULL, NULL, NULL, NULL }, /* _Mt */
-       { NULL, NULL, NULL, NULL, NULL }, /* _Brq */
-       { NULL, NULL, NULL, NULL, NULL }, /* _Bro */
-       { NULL, NULL, NULL, NULL, NULL }, /* _Brc */
+       { cond_body, pre_enc, post_enc, "{", "}" }, /* Brq */
+       { cond_body, pre_enc, post_enc, "{", "}" }, /* Bro */
+       { NULL, NULL, NULL, NULL, NULL }, /* Brc */
        { NULL, NULL, NULL, NULL, NULL }, /* _%C */
        { NULL, NULL, NULL, NULL, NULL }, /* _Es */
        { NULL, NULL, NULL, NULL, NULL }, /* _En */
-       { NULL, NULL, NULL, NULL, NULL }, /* _Dx */
+       { NULL, pre_ux, NULL, "DragonFly", NULL }, /* Dx */
        { NULL, NULL, NULL, NULL, NULL }, /* _%Q */
        { NULL, pre_br, NULL, NULL, NULL }, /* br */
        { NULL, pre_sp, post_sp, NULL, NULL }, /* sp */
@@ -468,6 +474,26 @@ pre_br(DECL_ARGS)
        return(0);
 }
 
+static int
+pre_bx(DECL_ARGS)
+{
+
+       n = n->child;
+       if (n) {
+               print_word(mm, n->string);
+               mm->need_space = 0;
+               n = n->next;
+       }
+       print_word(mm, "BSD");
+       if (NULL == n)
+               return(0);
+       mm->need_space = 0;
+       print_word(mm, "-");
+       mm->need_space = 0;
+       print_word(mm, n->string);
+       return(0);
+}
+
 static int
 pre_dl(DECL_ARGS)
 {
@@ -596,3 +622,16 @@ pre_xr(DECL_ARGS)
        print_word(mm, ")");
        return(0);
 }
+
+static int
+pre_ux(DECL_ARGS)
+{
+
+       print_word(mm, manacts[n->tok].prefix);
+       if (NULL == n->child)
+               return(0);
+       mm->need_space = 0;
+       print_word(mm, "\\~");
+       mm->need_space = 0;
+       return(1);
+}