]> git.cameronkatri.com Git - mandoc.git/blobdiff - man_html.c
Move handling of the roff(7) .ft request from the man(7)
[mandoc.git] / man_html.c
index ede0a43b77a3d772d3b733cca2159b6e85f0e509..e895698fcd642a25715ed99aad3a0ef05d832b42 100644 (file)
@@ -1,4 +1,4 @@
-/*     $Id: man_html.c,v 1.135 2017/03/17 12:10:16 schwarze Exp $ */
+/*     $Id: man_html.c,v 1.139 2017/05/05 02:06:19 schwarze Exp $ */
 /*
  * Copyright (c) 2008-2012, 2014 Kristaps Dzonsons <kristaps@bsd.lv>
  * Copyright (c) 2013, 2014, 2015, 2017 Ingo Schwarze <schwarze@openbsd.org>
@@ -65,14 +65,13 @@ static      int               man_SM_pre(MAN_ARGS);
 static int               man_SS_pre(MAN_ARGS);
 static int               man_UR_pre(MAN_ARGS);
 static int               man_alt_pre(MAN_ARGS);
-static int               man_br_pre(MAN_ARGS);
 static int               man_ign_pre(MAN_ARGS);
 static int               man_in_pre(MAN_ARGS);
 static void              man_root_post(MAN_ARGS);
 static void              man_root_pre(MAN_ARGS);
+static int               man_sp_pre(MAN_ARGS);
 
-static const struct htmlman mans[MAN_MAX] = {
-       { man_br_pre, NULL }, /* br */
+static const struct htmlman __mans[MAN_MAX - MAN_TH] = {
        { NULL, NULL }, /* TH */
        { man_SH_pre, NULL }, /* SH */
        { man_SS_pre, NULL }, /* SS */
@@ -93,7 +92,7 @@ static        const struct htmlman mans[MAN_MAX] = {
        { man_I_pre, NULL }, /* I */
        { man_alt_pre, NULL }, /* IR */
        { man_alt_pre, NULL }, /* RI */
-       { man_br_pre, NULL }, /* sp */
+       { man_sp_pre, NULL }, /* sp */
        { NULL, NULL }, /* nf */
        { NULL, NULL }, /* fi */
        { NULL, NULL }, /* RE */
@@ -103,7 +102,6 @@ static      const struct htmlman mans[MAN_MAX] = {
        { man_ign_pre, NULL }, /* PD */
        { man_ign_pre, NULL }, /* AT */
        { man_in_pre, NULL }, /* in */
-       { man_ign_pre, NULL }, /* ft */
        { man_OP_pre, NULL }, /* OP */
        { NULL, NULL }, /* EX */
        { NULL, NULL }, /* EE */
@@ -111,6 +109,7 @@ static      const struct htmlman mans[MAN_MAX] = {
        { NULL, NULL }, /* UE */
        { man_ign_pre, NULL }, /* ll */
 };
+static const struct htmlman *const mans = __mans - MAN_TH;
 
 
 /*
@@ -304,6 +303,12 @@ print_man_node(MAN_ARGS)
                        print_tblclose(h);
 
                t = h->tag;
+               if (n->tok < ROFF_MAX) {
+                       roff_html_pre(h, n);
+                       break;
+               }
+
+               assert(n->tok >= MAN_TH && n->tok < MAN_MAX);
                if (mans[n->tok].pre)
                        child = (*mans[n->tok].pre)(man, n, h);
 
@@ -411,18 +416,14 @@ man_root_post(MAN_ARGS)
 
 
 static int
-man_br_pre(MAN_ARGS)
+man_sp_pre(MAN_ARGS)
 {
        struct roffsu    su;
 
        SCALE_VS_INIT(&su, 1);
-
-       if (MAN_sp == n->tok) {
-               if (NULL != (n = n->child))
-                       if ( ! a2roffsu(n->string, &su, SCALE_VS))
-                               su.scale = 1.0;
-       } else
-               su.scale = 0.0;
+       if (NULL != (n = n->child))
+               if ( ! a2roffsu(n->string, &su, SCALE_VS))
+                       su.scale = 1.0;
 
        print_otag(h, TAG_DIV, "suh", &su);