summaryrefslogtreecommitdiffstats
path: root/term.c
diff options
context:
space:
mode:
authorIngo Schwarze <schwarze@openbsd.org>2014-12-23 13:48:57 +0000
committerIngo Schwarze <schwarze@openbsd.org>2014-12-23 13:48:57 +0000
commit4ad53635f5202474c55af90f70bba0ade18962cb (patch)
treeec073e4714b3d859a66a94147789aa077e78dd38 /term.c
parentf2c1420553b275dd2f792b3a15c8fb0437f58052 (diff)
downloadmandoc-4ad53635f5202474c55af90f70bba0ade18962cb.tar.gz
support negative horizontal widths in man(7);
minus twenty lines of code in spite of enhanced functionality
Diffstat (limited to 'term.c')
-rw-r--r--term.c22
1 files changed, 8 insertions, 14 deletions
diff --git a/term.c b/term.c
index 78dd69f1..ee9f31f3 100644
--- a/term.c
+++ b/term.c
@@ -101,7 +101,6 @@ term_flushln(struct termp *p)
size_t j; /* temporary loop index for p->buf */
size_t jhy; /* last hyph before overflow w/r/t j */
size_t maxvis; /* output position of visible boundary */
- size_t rmargin; /* the rightmost of the two margins */
/*
* First, establish the maximum columns of "visible" content.
@@ -114,8 +113,7 @@ term_flushln(struct termp *p)
* is negative, it gets sign extended. Subtracting that
* very large size_t effectively adds a small number to dv.
*/
- rmargin = p->rmargin > p->offset ? p->rmargin : p->offset;
- dv = p->rmargin - p->offset;
+ dv = p->rmargin > p->offset ? p->rmargin - p->offset : 0;
maxvis = (int)dv > p->overstep ? dv - (size_t)p->overstep : 0;
if (p->flags & TERMP_NOBREAK) {
@@ -193,8 +191,9 @@ term_flushln(struct termp *p)
(*p->endline)(p);
p->viscol = 0;
if (TERMP_BRIND & p->flags) {
- vbl = rmargin;
- vend += rmargin - p->offset;
+ vbl = p->rmargin;
+ vend += p->rmargin;
+ vend -= p->offset;
} else
vbl = p->offset;
@@ -770,7 +769,7 @@ term_strlen(const struct termp *p, const char *cp)
return(sz);
}
-size_t
+int
term_vspan(const struct termp *p, const struct roffsu *su)
{
double r;
@@ -809,19 +808,14 @@ term_vspan(const struct termp *p, const struct roffsu *su)
abort();
/* NOTREACHED */
}
-
- if (r < 0.0)
- r = 0.0;
- return((size_t)(r + 0.4995));
+ return(r > 0.0 ? r + 0.4995 : r - 0.4995);
}
-size_t
+int
term_hspan(const struct termp *p, const struct roffsu *su)
{
double v;
v = (*p->hspan)(p, su);
- if (v < 0.0)
- v = 0.0;
- return((size_t)(v + 0.0005));
+ return(v > 0.0 ? v + 0.0005 : v - 0.0005);
}