]> git.cameronkatri.com Git - mandoc.git/blobdiff - man_action.c
Proper leading spaces for new- and old-groff in -man -Tascii mode.
[mandoc.git] / man_action.c
index 5a660715584159fc8911430c1631cc4415c5dd6e..1edd6509f357c51c6f38dcdc4db35490216c9e61 100644 (file)
@@ -1,4 +1,4 @@
-/*     $Id: man_action.c,v 1.24 2009/11/02 06:22:45 kristaps Exp $ */
+/*     $Id: man_action.c,v 1.30 2010/03/27 10:04:56 kristaps Exp $ */
 /*
  * Copyright (c) 2008, 2009 Kristaps Dzonsons <kristaps@kth.se>
  *
@@ -14,7 +14,9 @@
  * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
  * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
  */
-#include <sys/utsname.h>
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
 
 #include <assert.h>
 #include <stdlib.h>
@@ -28,6 +30,7 @@ struct        actions {
 };
 
 static int       post_TH(struct man *);
+static int       post_de(struct man *);
 static int       post_fi(struct man *);
 static int       post_nf(struct man *);
 
@@ -64,6 +67,15 @@ const        struct actions man_actions[MAN_MAX] = {
        { NULL }, /* DT */
        { NULL }, /* UC */
        { NULL }, /* PD */
+       { NULL }, /* Sp */
+       { post_nf }, /* Vb */
+       { post_fi }, /* Ve */
+       { post_de }, /* de */
+       { post_de }, /* dei */
+       { post_de }, /* am */
+       { post_de }, /* ami */
+       { post_de }, /* ig */
+       { NULL }, /* . */
 };
 
 
@@ -102,6 +114,20 @@ post_fi(struct man *m)
 }
 
 
+static int
+post_de(struct man *m)
+{
+
+       /*
+        * XXX: for the time being, we indiscriminately remove roff
+        * instructions from the parse stream.
+        */
+       if (MAN_BLOCK == m->last->type)
+               man_node_delete(m, m->last);
+       return(1);
+}
+
+
 static int
 post_nf(struct man *m)
 {
@@ -174,24 +200,10 @@ post_TH(struct man *m)
        if (n && (n = n->next))
                m->meta.vol = mandoc_strdup(n->string);
 
-       /* 
-        * The end document shouldn't have the prologue macros as part
-        * of the syntax tree (they encompass only meta-data).  
+       /*
+        * Remove the `TH' node after we've processed it for our
+        * meta-data.
         */
-
-       if (m->last->parent->child == m->last) {
-               m->last->parent->child = NULL;
-               n = m->last;
-               m->last = m->last->parent;
-               m->next = MAN_NEXT_CHILD;
-       } else {
-               assert(m->last->prev);
-               m->last->prev->next = NULL;
-               n = m->last;
-               m->last = m->last->prev;
-               m->next = MAN_NEXT_SIBLING;
-       }
-
-       man_node_freelist(n);
+       man_node_delete(m, m->last);
        return(1);
 }