]> git.cameronkatri.com Git - mandoc.git/blobdiff - term.c
Fix enum/int mixing.
[mandoc.git] / term.c
diff --git a/term.c b/term.c
index 71ab3a359abe4c9b671ef554bb8f8d960bad4f83..37fc180d1cd30d71f17ae0921ff8d2cebe69c5e5 100644 (file)
--- a/term.c
+++ b/term.c
@@ -1,4 +1,4 @@
-/*     $Id: term.c,v 1.171 2010/09/15 14:36:16 kristaps Exp $ */
+/*     $Id: term.c,v 1.174 2010/10/02 15:15:55 schwarze Exp $ */
 /*
  * Copyright (c) 2008, 2009, 2010 Kristaps Dzonsons <kristaps@bsd.lv>
  * Copyright (c) 2010 Ingo Schwarze <schwarze@openbsd.org>
@@ -134,6 +134,7 @@ term_flushln(struct termp *p)
        size_t           vbl;   /* number of blanks to prepend to output */
        size_t           vend;  /* end of word visual position on output */
        size_t           bp;    /* visual right border position */
+       size_t           dv;    /* temporary for visual pos calculations */
        int              j;     /* temporary loop index for p->buf */
        int              jhy;   /* last hyph before overflow w/r/t j */
        size_t           maxvis; /* output position of visible boundary */
@@ -145,24 +146,21 @@ term_flushln(struct termp *p)
         * an indentation, but can be, for tagged lists or columns, a
         * small set of values. 
         */
-
-       assert(p->offset < p->rmargin);
-
-       maxvis = (int)(p->rmargin - p->offset) - p->overstep < 0 ?
-               /* LINTED */ 
-               0 : p->rmargin - p->offset - p->overstep;
-       mmax = (int)(p->maxrmargin - p->offset) - p->overstep < 0 ?
-               /* LINTED */
-               0 : p->maxrmargin - p->offset - p->overstep;
+       assert  (p->rmargin > p->offset);
+       dv     = p->rmargin - p->offset;
+       maxvis = (int)dv > p->overstep ? dv - (size_t)p->overstep : 0;
+       dv     = p->maxrmargin - p->offset;
+       mmax   = (int)dv > p->overstep ? dv - (size_t)p->overstep : 0;
 
        bp = TERMP_NOBREAK & p->flags ? mmax : maxvis;
 
        /*
         * Indent the first line of a paragraph.
         */
-       vbl = p->flags & TERMP_NOLPAD ? 0 : p->offset;
+       vbl = p->flags & TERMP_NOLPAD ? (size_t)0 : p->offset;
 
-       vis = vend = i = 0;
+       vis = vend = 0;
+       i = 0;
 
        while (i < (int)p->col) {
                /*
@@ -183,7 +181,6 @@ term_flushln(struct termp *p)
                 * space is printed according to regular spacing rules).
                 */
 
-               /* LINTED */
                for (j = i, jhy = 0; j < (int)p->col; j++) {
                        if ((j && ' ' == p->buf[j]) || '\t' == p->buf[j])
                                break;
@@ -222,8 +219,7 @@ term_flushln(struct termp *p)
 
                        /* Remove the p->overstep width. */
 
-                       bp += (int)/* LINTED */
-                               p->overstep;
+                       bp += (size_t)p->overstep;
                        p->overstep = 0;
                }
 
@@ -237,7 +233,9 @@ term_flushln(struct termp *p)
                                j = i;
                                while (' ' == p->buf[i])
                                        i++;
-                               vbl += (i - j) * (*p->width)(p, ' ');
+                               dv = (size_t)(i - j) * (*p->width)(p, ' ');
+                               vbl += dv;
+                               vend += dv;
                                break;
                        }
                        if (ASCII_NBRSP == p->buf[i]) {
@@ -264,7 +262,6 @@ term_flushln(struct termp *p)
                                p->viscol += (*p->width)(p, p->buf[i]);
                        }
                }
-               vend += vbl;
                vis = vend;
        }
 
@@ -285,8 +282,7 @@ term_flushln(struct termp *p)
 
        if (TERMP_HANG & p->flags) {
                /* We need one blank after the tag. */
-               p->overstep = /* LINTED */
-                       vis - maxvis + (*p->width)(p, ' ');
+               p->overstep = (int)(vis - maxvis + (*p->width)(p, ' '));
 
                /*
                 * Behave exactly the same way as groff:
@@ -300,8 +296,7 @@ term_flushln(struct termp *p)
                 */
                if (p->overstep >= -1) {
                        assert((int)maxvis + p->overstep >= 0);
-                       /* LINTED */
-                       maxvis += p->overstep;
+                       maxvis += (size_t)p->overstep;
                } else
                        p->overstep = 0;
 
@@ -309,9 +304,8 @@ term_flushln(struct termp *p)
                return;
 
        /* Right-pad. */
-       if (maxvis > vis + /* LINTED */
-                       ((TERMP_TWOSPACE & p->flags) ? 
-                        (*p->width)(p, ' ') : 0)) {
+       if (maxvis > vis +
+           ((TERMP_TWOSPACE & p->flags) ? (*p->width)(p, ' ') : 0)) {
                p->viscol += maxvis - vis;
                (*p->advance)(p, maxvis - vis);
                vis += (maxvis - vis);
@@ -503,7 +497,7 @@ term_word(struct termp *p, const char *word)
        else
                p->flags |= TERMP_NOSPACE;
 
-       p->flags &= ~TERMP_SENTENCE;
+       p->flags &= ~(TERMP_SENTENCE | TERMP_IGNDELIM);
 
        while (*word) {
                if ((ssz = strcspn(word, "\\")) > 0)