version 1.166, 2010/07/26 22:26:05 |
version 1.169, 2010/08/20 23:34:02 |
Line 83 term_alloc(enum termenc enc) |
|
Line 83 term_alloc(enum termenc enc) |
|
p = calloc(1, sizeof(struct termp)); |
p = calloc(1, sizeof(struct termp)); |
if (NULL == p) { |
if (NULL == p) { |
perror(NULL); |
perror(NULL); |
exit(EXIT_FAILURE); |
exit(MANDOCLEVEL_SYSERR); |
} |
} |
|
|
p->enc = enc; |
p->enc = enc; |
Line 169 term_flushln(struct termp *p) |
|
Line 169 term_flushln(struct termp *p) |
|
* Handle literal tab characters: collapse all |
* Handle literal tab characters: collapse all |
* subsequent tabs into a single huge set of spaces. |
* subsequent tabs into a single huge set of spaces. |
*/ |
*/ |
for (j = i; j < (int)p->col; j++) { |
while (i < (int)p->col && '\t' == p->buf[i]) { |
if ('\t' != p->buf[j]) |
|
break; |
|
vend = (vis / p->tabwidth + 1) * p->tabwidth; |
vend = (vis / p->tabwidth + 1) * p->tabwidth; |
vbl += vend - vis; |
vbl += vend - vis; |
vis = vend; |
vis = vend; |
|
i++; |
} |
} |
|
|
/* |
/* |
Line 185 term_flushln(struct termp *p) |
|
Line 184 term_flushln(struct termp *p) |
|
*/ |
*/ |
|
|
/* LINTED */ |
/* LINTED */ |
for (jhy = 0; j < (int)p->col; j++) { |
for (j = i, jhy = 0; j < (int)p->col; j++) { |
if ((j && ' ' == p->buf[j]) || '\t' == p->buf[j]) |
if ((j && ' ' == p->buf[j]) || '\t' == p->buf[j]) |
break; |
break; |
|
|
Line 228 term_flushln(struct termp *p) |
|
Line 227 term_flushln(struct termp *p) |
|
p->overstep = 0; |
p->overstep = 0; |
} |
} |
|
|
/* |
|
* Skip leading tabs, they were handled above. |
|
*/ |
|
while (i < (int)p->col && '\t' == p->buf[i]) |
|
i++; |
|
|
|
/* Write out the [remaining] word. */ |
/* Write out the [remaining] word. */ |
for ( ; i < (int)p->col; i++) { |
for ( ; i < (int)p->col; i++) { |
if (vend > bp && jhy > 0 && i > jhy) |
if (vend > bp && jhy > 0 && i > jhy) |
Line 275 term_flushln(struct termp *p) |
|
Line 268 term_flushln(struct termp *p) |
|
vis = vend; |
vis = vend; |
} |
} |
|
|
|
/* |
|
* If there was trailing white space, it was not printed; |
|
* so reset the cursor position accordingly. |
|
*/ |
|
vis -= vbl; |
|
|
p->col = 0; |
p->col = 0; |
p->overstep = 0; |
p->overstep = 0; |
|
|
Line 577 adjbuf(struct termp *p, size_t sz) |
|
Line 576 adjbuf(struct termp *p, size_t sz) |
|
p->buf = realloc(p->buf, p->maxcols); |
p->buf = realloc(p->buf, p->maxcols); |
if (NULL == p->buf) { |
if (NULL == p->buf) { |
perror(NULL); |
perror(NULL); |
exit(EXIT_FAILURE); |
exit(MANDOCLEVEL_SYSERR); |
} |
} |
} |
} |
|
|