]> git.cameronkatri.com Git - mandoc.git/blobdiff - term.c
Make the generated man(7) code more portable by using .PD
[mandoc.git] / term.c
diff --git a/term.c b/term.c
index 26292b98f2359dc78d55873f870a1a3a4ddaa692..6229031285e3721b3daecb5c93c22abb29bbe83e 100644 (file)
--- a/term.c
+++ b/term.c
@@ -1,4 +1,4 @@
-/*     $Id: term.c,v 1.204 2012/07/10 15:35:41 schwarze Exp $ */
+/*     $Id: term.c,v 1.206 2012/11/16 17:16:55 schwarze Exp $ */
 /*
  * Copyright (c) 2008, 2009, 2010, 2011 Kristaps Dzonsons <kristaps@bsd.lv>
  * Copyright (c) 2010, 2011, 2012 Ingo Schwarze <schwarze@openbsd.org>
@@ -106,6 +106,7 @@ void
 term_flushln(struct termp *p)
 {
        int              i;     /* current input position in p->buf */
+       int              ntab;  /* number of tabs to prepend */
        size_t           vis;   /* current visual position on output */
        size_t           vbl;   /* number of blanks to prepend to output */
        size_t           vend;  /* end of word visual position on output */
@@ -144,10 +145,12 @@ term_flushln(struct termp *p)
                 * Handle literal tab characters: collapse all
                 * subsequent tabs into a single huge set of spaces.
                 */
+               ntab = 0;
                while (i < p->col && '\t' == p->buf[i]) {
                        vend = (vis / p->tabwidth + 1) * p->tabwidth;
                        vbl += vend - vis;
                        vis = vend;
+                       ntab++;
                        i++;
                }
 
@@ -192,6 +195,11 @@ term_flushln(struct termp *p)
                        } else
                                vbl = p->offset;
 
+                       /* use pending tabs on the new line */
+
+                       if (0 < ntab)
+                               vbl += ntab * p->tabwidth;
+
                        /* Remove the p->overstep width. */
 
                        bp += (size_t)p->overstep;
@@ -368,7 +376,7 @@ void
 term_fontpopq(struct termp *p, const void *key)
 {
 
-       while (p->fonti >= 0 && key != &p->fontq[p->fonti])
+       while (p->fonti >= 0 && key < (void *)(p->fontq + p->fonti))
                p->fonti--;
        assert(p->fonti >= 0);
 }