version 1.113, 2009/10/26 17:05:44 |
version 1.114, 2009/10/27 08:05:39 |
Line 120 term_alloc(enum termenc enc) |
|
Line 120 term_alloc(enum termenc enc) |
|
* If TERMP_NOBREAK is specified and the line overruns the right |
* If TERMP_NOBREAK is specified and the line overruns the right |
* margin, it will break and pad-right to the right margin after |
* margin, it will break and pad-right to the right margin after |
* writing. If maxrmargin is violated, it will break and continue |
* writing. If maxrmargin is violated, it will break and continue |
* writing from the right-margin, which will lead to the above |
* writing from the right-margin, which will lead to the above scenario |
* scenario upon exit. |
* upon exit. Otherwise, the line will break at the right margin. |
* |
|
* Otherwise, the line will break at the right margin. Extremely long |
|
* lines will cause the system to emit a warning (TODO: hyphenate, if |
|
* possible). |
|
*/ |
*/ |
void |
void |
term_flushln(struct termp *p) |
term_flushln(struct termp *p) |
{ |
{ |
int i, j; |
int i; /* current input position in p->buf */ |
size_t vbl, vsz, vis, maxvis, mmax, bp; |
size_t vis; /* current visual position on output */ |
|
size_t vbl; /* number of blanks to prepend to output */ |
|
size_t vsz; /* visual characters to write to output */ |
|
size_t bp; /* visual right border position */ |
|
int j; /* temporary loop index */ |
|
size_t maxvis, mmax; |
static int overstep = 0; |
static int overstep = 0; |
|
|
/* |
/* |
Line 142 term_flushln(struct termp *p) |
|
Line 143 term_flushln(struct termp *p) |
|
*/ |
*/ |
|
|
assert(p->offset < p->rmargin); |
assert(p->offset < p->rmargin); |
assert((int)(p->rmargin - p->offset) - overstep > 0); |
|
|
|
maxvis = /* LINTED */ |
maxvis = (int)(p->rmargin - p->offset) - overstep < 0 ? |
p->rmargin - p->offset - overstep; |
0 : p->rmargin - p->offset - overstep; |
mmax = /* LINTED */ |
mmax = (int)(p->maxrmargin - p->offset) - overstep < 0 ? |
p->maxrmargin - p->offset - overstep; |
0 : p->maxrmargin - p->offset - overstep; |
|
|
bp = TERMP_NOBREAK & p->flags ? mmax : maxvis; |
bp = TERMP_NOBREAK & p->flags ? mmax : maxvis; |
vis = 0; |
vis = 0; |