version 1.91, 2009/07/21 13:34:13 |
version 1.93, 2009/07/24 11:54:25 |
Line 227 term_flushln(struct termp *p) |
|
Line 227 term_flushln(struct termp *p) |
|
*/ |
*/ |
|
|
assert(p->offset < p->rmargin); |
assert(p->offset < p->rmargin); |
maxvis = p->rmargin - p->offset - overstep; |
assert((int)(p->rmargin - p->offset) - overstep > 0); |
mmax = p->maxrmargin - p->offset - overstep; |
|
|
maxvis = /* LINTED */ |
|
p->rmargin - p->offset - overstep; |
|
mmax = /* LINTED */ |
|
p->maxrmargin - p->offset - overstep; |
|
|
bp = TERMP_NOBREAK & p->flags ? mmax : maxvis; |
bp = TERMP_NOBREAK & p->flags ? mmax : maxvis; |
vis = 0; |
vis = 0; |
overstep = 0; |
overstep = 0; |
Line 254 term_flushln(struct termp *p) |
|
Line 259 term_flushln(struct termp *p) |
|
|
|
/* LINTED */ |
/* LINTED */ |
for (j = i, vsz = 0; j < (int)p->col; j++) { |
for (j = i, vsz = 0; j < (int)p->col; j++) { |
if (' ' == p->buf[j]) |
if (j && ' ' == p->buf[j]) |
break; |
break; |
else if (8 == p->buf[j]) |
else if (8 == p->buf[j]) |
vsz--; |
vsz--; |
Line 309 term_flushln(struct termp *p) |
|
Line 314 term_flushln(struct termp *p) |
|
} |
} |
|
|
if (TERMP_HANG & p->flags) { |
if (TERMP_HANG & p->flags) { |
|
|
/* We need one blank after the tag. */ |
/* We need one blank after the tag. */ |
overstep = vis - maxvis + 1; |
overstep = /* LINTED */ |
|
vis - maxvis + 1; |
|
|
/* |
/* |
* Behave exactly the same way as groff: |
* Behave exactly the same way as groff: |
* If we have overstepped the margin, temporarily move it |
* If we have overstepped the margin, temporarily move |
* to the right and flag the rest of the line to be shorter. |
* it to the right and flag the rest of the line to be |
|
* shorter. |
* If we landed right at the margin, be happy. |
* If we landed right at the margin, be happy. |
* If we are one step before the margin, temporarily move it |
* If we are one step before the margin, temporarily |
* one step LEFT and flag the rest of the line to be longer. |
* move it one step LEFT and flag the rest of the line |
|
* to be longer. |
*/ |
*/ |
if (overstep >= -1) |
if (overstep >= -1) { |
|
assert((int)maxvis + overstep >= 0); |
|
/* LINTED */ |
maxvis += overstep; |
maxvis += overstep; |
else |
} else |
overstep = 0; |
overstep = 0; |
|
|
} else if (TERMP_DANGLE & p->flags) |
} else if (TERMP_DANGLE & p->flags) |
return; |
return; |
|
|
if (maxvis > vis + ((TERMP_TWOSPACE & p->flags) ? 1 : 0)) /* pad */ |
/* Right-pad. */ |
|
if (maxvis > vis + /* LINTED */ |
|
((TERMP_TWOSPACE & p->flags) ? 1 : 0)) |
for ( ; vis < maxvis; vis++) |
for ( ; vis < maxvis; vis++) |
putchar(' '); |
putchar(' '); |
else { /* break */ |
else { /* ...or newline break. */ |
putchar('\n'); |
putchar('\n'); |
for (i = 0; i < (int)p->rmargin; i++) |
for (i = 0; i < (int)p->rmargin; i++) |
putchar(' '); |
putchar(' '); |