]> git.cameronkatri.com Git - mandoc.git/blobdiff - man_term.c
Cleaned up library manuals: removed old escapes, added EXAMPLES, stripped
[mandoc.git] / man_term.c
index 685e53a66d73da5e0f183173f888f5fc8178b0fa..f9a02fda594ebd619bfbc5d363b7c7e182e1f880 100644 (file)
@@ -1,4 +1,4 @@
-/*     $Id: man_term.c,v 1.83 2010/07/22 23:03:15 kristaps Exp $ */
+/*     $Id: man_term.c,v 1.85 2010/09/15 14:36:16 kristaps Exp $ */
 /*
  * Copyright (c) 2008, 2009, 2010 Kristaps Dzonsons <kristaps@bsd.lv>
  *
@@ -92,10 +92,9 @@ static       int               pre_RS(DECL_ARGS);
 static int               pre_SH(DECL_ARGS);
 static int               pre_SS(DECL_ARGS);
 static int               pre_TP(DECL_ARGS);
-static int               pre_fi(DECL_ARGS);
 static int               pre_ign(DECL_ARGS);
 static int               pre_in(DECL_ARGS);
-static int               pre_nf(DECL_ARGS);
+static int               pre_literal(DECL_ARGS);
 static int               pre_sp(DECL_ARGS);
 
 static void              post_IP(DECL_ARGS);
@@ -130,8 +129,8 @@ static      const struct termact termacts[MAN_MAX] = {
        { NULL, NULL, MAN_NOTEXT }, /* na */
        { pre_I, NULL, 0 }, /* i */
        { pre_sp, NULL, MAN_NOTEXT }, /* sp */
-       { pre_nf, NULL, 0 }, /* nf */
-       { pre_fi, NULL, 0 }, /* fi */
+       { pre_literal, NULL, 0 }, /* nf */
+       { pre_literal, NULL, 0 }, /* fi */
        { NULL, NULL, 0 }, /* r */
        { NULL, NULL, 0 }, /* RE */
        { pre_RS, post_RS, 0 }, /* RS */
@@ -139,8 +138,8 @@ static      const struct termact termacts[MAN_MAX] = {
        { pre_ign, NULL, 0 }, /* UC */
        { pre_ign, NULL, 0 }, /* PD */
        { pre_sp, NULL, MAN_NOTEXT }, /* Sp */
-       { pre_nf, NULL, 0 }, /* Vb */
-       { pre_fi, NULL, 0 }, /* Ve */
+       { pre_literal, NULL, 0 }, /* Vb */
+       { pre_literal, NULL, 0 }, /* Ve */
        { pre_ign, NULL, 0 }, /* AT */
        { pre_in, NULL, MAN_NOTEXT }, /* in */
 };
@@ -250,25 +249,25 @@ pre_I(DECL_ARGS)
 
 /* ARGSUSED */
 static int
-pre_fi(DECL_ARGS)
+pre_literal(DECL_ARGS)
 {
 
        term_newln(p);
-       mt->fl &= ~MANT_LITERAL;
+       switch (n->tok) {
+       case (MAN_Vb):
+               /* FALLTHROUGH */
+       case (MAN_nf):
+               mt->fl |= MANT_LITERAL;
+               return(MAN_Vb != n->tok);
+       default:
+               mt->fl &= ~MANT_LITERAL;
+               break;
+       }
+
        return(1);
 }
 
 
-/* ARGSUSED */
-static int
-pre_nf(DECL_ARGS)
-{
-
-       term_newln(p);
-       mt->fl |= MANT_LITERAL;
-       return(MAN_Vb != n->tok);
-}
-
 
 /* ARGSUSED */
 static int
@@ -917,6 +916,10 @@ print_man_foot(struct termp *p, const void *arg)
        p->rmargin = p->maxrmargin - term_strlen(p, buf);
        p->offset = 0;
 
+       /* term_strlen() can return zero. */
+       if (p->rmargin == p->maxrmargin)
+               p->rmargin--;
+
        if (meta->source)
                term_word(p, meta->source);
        if (meta->source)