]> git.cameronkatri.com Git - mandoc.git/blobdiff - man_action.c
Backed-out warning messages (lots).
[mandoc.git] / man_action.c
index c4a8cd4c3acda5ce1a7a77fa0e38e49ea4aa4659..9bfe9b469eefdf1bc21af3cbc3f3ab65d0ca7482 100644 (file)
@@ -1,6 +1,6 @@
-/*     $Id: man_action.c,v 1.28 2010/03/24 03:46:02 kristaps Exp $ */
+/*     $Id: man_action.c,v 1.33 2010/05/15 20:51:40 kristaps Exp $ */
 /*
- * Copyright (c) 2008, 2009 Kristaps Dzonsons <kristaps@kth.se>
+ * Copyright (c) 2008, 2009 Kristaps Dzonsons <kristaps@bsd.lv>
  *
  * Permission to use, copy, modify, and distribute this software for any
  * purpose with or without fee is hereby granted, provided that the above
@@ -30,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 *);
 
@@ -69,6 +70,11 @@ const        struct actions man_actions[MAN_MAX] = {
        { NULL }, /* Sp */
        { post_nf }, /* Vb */
        { post_fi }, /* Ve */
+       { post_de }, /* de */
+       { post_de }, /* dei */
+       { post_de }, /* am */
+       { post_de }, /* ami */
+       { NULL }, /* . */
 };
 
 
@@ -107,6 +113,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)
 {
@@ -123,8 +143,6 @@ static int
 post_TH(struct man *m)
 {
        struct man_node *n;
-       char            *ep;
-       long             lval;
 
        if (m->meta.title)
                free(m->meta.title);
@@ -132,9 +150,11 @@ post_TH(struct man *m)
                free(m->meta.vol);
        if (m->meta.source)
                free(m->meta.source);
+       if (m->meta.msec)
+               free(m->meta.msec);
 
-       m->meta.title = m->meta.vol = m->meta.source = NULL;
-       m->meta.msec = 0;
+       m->meta.title = m->meta.vol = 
+               m->meta.msec = m->meta.source = NULL;
        m->meta.date = 0;
 
        /* ->TITLE<- MSEC DATE SOURCE VOL */
@@ -147,12 +167,7 @@ post_TH(struct man *m)
 
        n = n->next;
        assert(n);
-
-       lval = strtol(n->string, &ep, 10);
-       if (n->string[0] != '\0' && *ep == '\0')
-               m->meta.msec = (int)lval;
-       else if ( ! man_nwarn(m, n, WMSEC))
-               return(0);
+       m->meta.msec = mandoc_strdup(n->string);
 
        /* TITLE MSEC ->DATE<- SOURCE VOL */
 
@@ -160,7 +175,6 @@ post_TH(struct man *m)
        if (n) {
                m->meta.date = mandoc_a2time
                        (MTIME_ISO_8601, n->string);
-
                if (0 == m->meta.date) {
                        if ( ! man_nwarn(m, n, WDATE))
                                return(0);
@@ -179,8 +193,10 @@ post_TH(struct man *m)
        if (n && (n = n->next))
                m->meta.vol = mandoc_strdup(n->string);
 
-       n = m->last;
-       man_node_unlink(m, n);
-       man_node_freelist(n);
+       /*
+        * Remove the `TH' node after we've processed it for our
+        * meta-data.
+        */
+       man_node_delete(m, m->last);
        return(1);
 }