]> git.cameronkatri.com Git - mandoc.git/blobdiff - mdoc_man.c
Next speed optimization step for the new apropos(1).
[mandoc.git] / mdoc_man.c
index e4db5aedf4eff672b8877452233d2639e553d574..3830e558bca9456d8f241b198f7a6ccbbca7d723 100644 (file)
@@ -1,4 +1,4 @@
-/*     $Id: mdoc_man.c,v 1.59 2014/03/23 11:25:26 schwarze Exp $ */
+/*     $Id: mdoc_man.c,v 1.61 2014/03/30 23:34:32 schwarze Exp $ */
 /*
  * Copyright (c) 2011, 2012, 2013, 2014 Ingo Schwarze <schwarze@openbsd.org>
  *
@@ -90,6 +90,7 @@ static        int       pre_in(DECL_ARGS);
 static int       pre_it(DECL_ARGS);
 static int       pre_lk(DECL_ARGS);
 static int       pre_li(DECL_ARGS);
+static int       pre_ll(DECL_ARGS);
 static int       pre_nm(DECL_ARGS);
 static int       pre_no(DECL_ARGS);
 static int       pre_ns(DECL_ARGS);
@@ -241,6 +242,7 @@ static      const struct manact manacts[MDOC_MAX + 1] = {
        { NULL, pre_sp, post_sp, NULL, NULL }, /* sp */
        { NULL, NULL, post_percent, NULL, NULL }, /* %U */
        { NULL, NULL, NULL, NULL, NULL }, /* Ta */
+       { NULL, pre_ll, post_sp, NULL, NULL }, /* ll */
        { NULL, NULL, NULL, NULL, NULL }, /* ROOT */
 };
 
@@ -599,7 +601,7 @@ print_node(DECL_ARGS)
                 */
                act = manacts + n->tok;
                cond = NULL == act->cond || (*act->cond)(meta, n);
-               if (cond && act->pre)
+               if (cond && act->pre && ENDBODY_NOT == n->end)
                        do_sub = (*act->pre)(meta, n);
        }
 
@@ -615,8 +617,17 @@ print_node(DECL_ARGS)
        /*
         * Lastly, conditionally run the post-node handler.
         */
+       if (MDOC_ENDED & n->flags)
+               return;
+
        if (cond && act->post)
                (*act->post)(meta, n);
+
+       if (ENDBODY_NOT != n->end)
+               n->pending->flags |= MDOC_ENDED;
+
+       if (ENDBODY_NOSPACE == n->end)
+               outflags &= ~(MMAN_spc | MMAN_nl);
 }
 
 static int
@@ -654,7 +665,7 @@ post_enc(DECL_ARGS)
        suffix = manacts[n->tok].suffix;
        if (NULL == suffix)
                return;
-       outflags &= ~MMAN_spc;
+       outflags &= ~(MMAN_spc | MMAN_nl);
        print_word(suffix);
 }
 
@@ -1405,6 +1416,14 @@ pre_lk(DECL_ARGS)
        return(0);
 }
 
+static int
+pre_ll(DECL_ARGS)
+{
+
+       print_line(".ll", 0);
+       return(1);
+}
+
 static int
 pre_li(DECL_ARGS)
 {