diff options
-rw-r--r-- | man_term.c | 5 | ||||
-rw-r--r-- | mdoc_term.c | 3 | ||||
-rw-r--r-- | term.c | 28 | ||||
-rw-r--r-- | term.h | 1 |
4 files changed, 21 insertions, 16 deletions
@@ -156,10 +156,12 @@ terminal_man(void *arg, const struct man *man) p = (struct termp *)arg; + p->overstep = 0; + p->maxrmargin = 65; + if (NULL == p->symtab) switch (p->enc) { case (TERMENC_ASCII): - p->maxrmargin = 65; p->symtab = chars_init(CHARS_ASCII); break; default: @@ -883,6 +885,7 @@ print_man_head(struct termp *p, const struct man_meta *m) size_t buflen, titlen; p->rmargin = p->maxrmargin; + p->offset = 0; buf[0] = title[0] = '\0'; diff --git a/mdoc_term.c b/mdoc_term.c index ee1967bc..ecda7c7f 100644 --- a/mdoc_term.c +++ b/mdoc_term.c @@ -270,6 +270,9 @@ terminal_mdoc(void *arg, const struct mdoc *mdoc) p = (struct termp *)arg; + p->overstep = 0; + p->maxrmargin = 78; + if (NULL == p->symtab) switch (p->enc) { case (TERMENC_ASCII): @@ -83,7 +83,6 @@ term_alloc(enum termenc enc) perror(NULL); exit(EXIT_FAILURE); } - p->maxrmargin = 78; p->enc = enc; return(p); } @@ -136,7 +135,6 @@ term_flushln(struct termp *p) size_t bp; /* visual right border position */ int j; /* temporary loop index */ size_t maxvis, mmax; - static int overstep = 0; /* * First, establish the maximum columns of "visible" content. @@ -147,12 +145,12 @@ term_flushln(struct termp *p) assert(p->offset < p->rmargin); - maxvis = (int)(p->rmargin - p->offset) - overstep < 0 ? + maxvis = (int)(p->rmargin - p->offset) - p->overstep < 0 ? /* LINTED */ - 0 : p->rmargin - p->offset - overstep; - mmax = (int)(p->maxrmargin - p->offset) - overstep < 0 ? + 0 : p->rmargin - p->offset - p->overstep; + mmax = (int)(p->maxrmargin - p->offset) - p->overstep < 0 ? /* LINTED */ - 0 : p->maxrmargin - p->offset - overstep; + 0 : p->maxrmargin - p->offset - p->overstep; bp = TERMP_NOBREAK & p->flags ? mmax : maxvis; @@ -215,10 +213,10 @@ term_flushln(struct termp *p) putchar(' '); vis = 0; } - /* Remove the overstep width. */ + /* Remove the p->overstep width. */ bp += (int)/* LINTED */ - overstep; - overstep = 0; + p->overstep; + p->overstep = 0; } else { for (j = 0; j < (int)vbl; j++) putchar(' '); @@ -242,7 +240,7 @@ term_flushln(struct termp *p) } p->col = 0; - overstep = 0; + p->overstep = 0; if ( ! (TERMP_NOBREAK & p->flags)) { putchar('\n'); @@ -251,7 +249,7 @@ term_flushln(struct termp *p) if (TERMP_HANG & p->flags) { /* We need one blank after the tag. */ - overstep = /* LINTED */ + p->overstep = /* LINTED */ vis - maxvis + 1; /* @@ -264,12 +262,12 @@ term_flushln(struct termp *p) * move it one step LEFT and flag the rest of the line * to be longer. */ - if (overstep >= -1) { - assert((int)maxvis + overstep >= 0); + if (p->overstep >= -1) { + assert((int)maxvis + p->overstep >= 0); /* LINTED */ - maxvis += overstep; + maxvis += p->overstep; } else - overstep = 0; + p->overstep = 0; } else if (TERMP_DANGLE & p->flags) return; @@ -35,6 +35,7 @@ struct termp { size_t maxcols; /* Max size of buf. */ size_t offset; /* Margin offest. */ size_t col; /* Bytes in buf. */ + int overstep; /* See termp_flushln(). */ int flags; #define TERMP_NOSPACE (1 << 2) /* No space before words. */ #define TERMP_NOLPAD (1 << 3) /* See term_flushln(). */ |