version 1.155, 2017/06/04 22:43:50 |
version 1.156, 2017/06/07 17:38:08 |
|
|
size_t save_defindent; |
size_t save_defindent; |
|
|
p = (struct termp *)arg; |
p = (struct termp *)arg; |
p->rmargin = p->maxrmargin = p->defrmargin; |
p->tcol->rmargin = p->maxrmargin = p->defrmargin; |
term_tab_set(p, NULL); |
term_tab_set(p, NULL); |
term_tab_set(p, "T"); |
term_tab_set(p, "T"); |
term_tab_set(p, ".5i"); |
term_tab_set(p, ".5i"); |
|
|
|
|
term_newln(p); |
term_newln(p); |
|
|
if (MAN_nf == n->tok || MAN_EX == n->tok) |
if (n->tok == MAN_nf || n->tok == MAN_EX) |
mt->fl |= MANT_LITERAL; |
mt->fl |= MANT_LITERAL; |
else |
else |
mt->fl &= ~MANT_LITERAL; |
mt->fl &= ~MANT_LITERAL; |
|
|
* So in case a second call to term_flushln() is needed, |
* So in case a second call to term_flushln() is needed, |
* indentation has to be set up explicitly. |
* indentation has to be set up explicitly. |
*/ |
*/ |
if (MAN_HP == n->parent->tok && p->rmargin < p->maxrmargin) { |
if (n->parent->tok == MAN_HP && p->tcol->rmargin < p->maxrmargin) { |
p->offset = p->rmargin; |
p->tcol->offset = p->tcol->rmargin; |
p->rmargin = p->maxrmargin; |
p->tcol->rmargin = p->maxrmargin; |
p->trailspace = 0; |
p->trailspace = 0; |
p->flags &= ~(TERMP_NOBREAK | TERMP_BRIND); |
p->flags &= ~(TERMP_NOBREAK | TERMP_BRIND); |
p->flags |= TERMP_NOSPACE; |
p->flags |= TERMP_NOSPACE; |
|
|
|
|
term_newln(p); |
term_newln(p); |
|
|
if (NULL == n->child) { |
if (n->child == NULL) { |
p->offset = mt->offset; |
p->tcol->offset = mt->offset; |
return 0; |
return 0; |
} |
} |
|
|
|
|
v = (term_hspan(p, &su) + 11) / 24; |
v = (term_hspan(p, &su) + 11) / 24; |
|
|
if (less < 0) |
if (less < 0) |
p->offset -= p->offset > v ? v : p->offset; |
p->tcol->offset -= p->tcol->offset > v ? v : p->tcol->offset; |
else if (less > 0) |
else if (less > 0) |
p->offset += v; |
p->tcol->offset += v; |
else |
else |
p->offset = v; |
p->tcol->offset = v; |
if (p->offset > SHRT_MAX) |
if (p->tcol->offset > SHRT_MAX) |
p->offset = term_len(p, p->defindent); |
p->tcol->offset = term_len(p, p->defindent); |
|
|
return 0; |
return 0; |
} |
} |
|
|
} else |
} else |
len = mt->lmargin[mt->lmargincur]; |
len = mt->lmargin[mt->lmargincur]; |
|
|
p->offset = mt->offset; |
p->tcol->offset = mt->offset; |
p->rmargin = mt->offset + len; |
p->tcol->rmargin = mt->offset + len; |
return 1; |
return 1; |
} |
} |
|
|
|
|
|
|
p->flags &= ~(TERMP_NOBREAK | TERMP_BRIND); |
p->flags &= ~(TERMP_NOBREAK | TERMP_BRIND); |
p->trailspace = 0; |
p->trailspace = 0; |
p->offset = mt->offset; |
p->tcol->offset = mt->offset; |
p->rmargin = p->maxrmargin; |
p->tcol->rmargin = p->maxrmargin; |
break; |
break; |
default: |
default: |
break; |
break; |
|
|
print_bvspace(p, n, mt->pardist); |
print_bvspace(p, n, mt->pardist); |
break; |
break; |
default: |
default: |
p->offset = mt->offset; |
p->tcol->offset = mt->offset; |
break; |
break; |
} |
} |
|
|
|
|
|
|
switch (n->type) { |
switch (n->type) { |
case ROFFT_HEAD: |
case ROFFT_HEAD: |
p->offset = mt->offset; |
p->tcol->offset = mt->offset; |
p->rmargin = mt->offset + len; |
p->tcol->rmargin = mt->offset + len; |
|
|
savelit = MANT_LITERAL & mt->fl; |
savelit = MANT_LITERAL & mt->fl; |
mt->fl &= ~MANT_LITERAL; |
mt->fl &= ~MANT_LITERAL; |
|
|
|
|
return 0; |
return 0; |
case ROFFT_BODY: |
case ROFFT_BODY: |
p->offset = mt->offset + len; |
p->tcol->offset = mt->offset + len; |
p->rmargin = p->maxrmargin; |
p->tcol->rmargin = p->maxrmargin; |
break; |
break; |
default: |
default: |
break; |
break; |
|
|
term_flushln(p); |
term_flushln(p); |
p->flags &= ~TERMP_NOBREAK; |
p->flags &= ~TERMP_NOBREAK; |
p->trailspace = 0; |
p->trailspace = 0; |
p->rmargin = p->maxrmargin; |
p->tcol->rmargin = p->maxrmargin; |
break; |
break; |
case ROFFT_BODY: |
case ROFFT_BODY: |
term_newln(p); |
term_newln(p); |
p->offset = mt->offset; |
p->tcol->offset = mt->offset; |
break; |
break; |
default: |
default: |
break; |
break; |
|
|
|
|
switch (n->type) { |
switch (n->type) { |
case ROFFT_HEAD: |
case ROFFT_HEAD: |
p->offset = mt->offset; |
p->tcol->offset = mt->offset; |
p->rmargin = mt->offset + len; |
p->tcol->rmargin = mt->offset + len; |
|
|
savelit = MANT_LITERAL & mt->fl; |
savelit = MANT_LITERAL & mt->fl; |
mt->fl &= ~MANT_LITERAL; |
mt->fl &= ~MANT_LITERAL; |
|
|
mt->fl |= MANT_LITERAL; |
mt->fl |= MANT_LITERAL; |
return 0; |
return 0; |
case ROFFT_BODY: |
case ROFFT_BODY: |
p->offset = mt->offset + len; |
p->tcol->offset = mt->offset + len; |
p->rmargin = p->maxrmargin; |
p->tcol->rmargin = p->maxrmargin; |
p->trailspace = 0; |
p->trailspace = 0; |
p->flags &= ~(TERMP_NOBREAK | TERMP_BRTRSP); |
p->flags &= ~(TERMP_NOBREAK | TERMP_BRTRSP); |
break; |
break; |
|
|
break; |
break; |
case ROFFT_BODY: |
case ROFFT_BODY: |
term_newln(p); |
term_newln(p); |
p->offset = mt->offset; |
p->tcol->offset = mt->offset; |
break; |
break; |
default: |
default: |
break; |
break; |
|
|
break; |
break; |
case ROFFT_HEAD: |
case ROFFT_HEAD: |
term_fontrepl(p, TERMFONT_BOLD); |
term_fontrepl(p, TERMFONT_BOLD); |
p->offset = term_len(p, 3); |
p->tcol->offset = term_len(p, 3); |
p->rmargin = mt->offset; |
p->tcol->rmargin = mt->offset; |
p->trailspace = mt->offset; |
p->trailspace = mt->offset; |
p->flags |= TERMP_NOBREAK | TERMP_BRIND; |
p->flags |= TERMP_NOBREAK | TERMP_BRIND; |
break; |
break; |
case ROFFT_BODY: |
case ROFFT_BODY: |
p->offset = mt->offset; |
p->tcol->offset = mt->offset; |
p->rmargin = p->maxrmargin; |
p->tcol->rmargin = p->maxrmargin; |
p->trailspace = 0; |
p->trailspace = 0; |
p->flags &= ~(TERMP_NOBREAK | TERMP_BRIND); |
p->flags &= ~(TERMP_NOBREAK | TERMP_BRIND); |
break; |
break; |
|
|
break; |
break; |
case ROFFT_HEAD: |
case ROFFT_HEAD: |
term_fontrepl(p, TERMFONT_BOLD); |
term_fontrepl(p, TERMFONT_BOLD); |
p->offset = 0; |
p->tcol->offset = 0; |
p->rmargin = mt->offset; |
p->tcol->rmargin = mt->offset; |
p->trailspace = mt->offset; |
p->trailspace = mt->offset; |
p->flags |= TERMP_NOBREAK | TERMP_BRIND; |
p->flags |= TERMP_NOBREAK | TERMP_BRIND; |
break; |
break; |
case ROFFT_BODY: |
case ROFFT_BODY: |
p->offset = mt->offset; |
p->tcol->offset = mt->offset; |
p->rmargin = p->maxrmargin; |
p->tcol->rmargin = p->maxrmargin; |
p->trailspace = 0; |
p->trailspace = 0; |
p->flags &= ~(TERMP_NOBREAK | TERMP_BRIND); |
p->flags &= ~(TERMP_NOBREAK | TERMP_BRIND); |
break; |
break; |
|
|
n->aux = term_len(p, p->defindent); |
n->aux = term_len(p, p->defindent); |
|
|
mt->offset += n->aux; |
mt->offset += n->aux; |
p->offset = mt->offset; |
p->tcol->offset = mt->offset; |
p->rmargin = p->maxrmargin; |
p->tcol->rmargin = p->maxrmargin; |
|
|
if (++mt->lmarginsz < MAXMARGINS) |
if (++mt->lmarginsz < MAXMARGINS) |
mt->lmargincur = mt->lmarginsz; |
mt->lmargincur = mt->lmarginsz; |
|
|
} |
} |
|
|
mt->offset -= n->parent->head->aux; |
mt->offset -= n->parent->head->aux; |
p->offset = mt->offset; |
p->tcol->offset = mt->offset; |
|
|
if (--mt->lmarginsz < MAXMARGINS) |
if (--mt->lmarginsz < MAXMARGINS) |
mt->lmargincur = mt->lmarginsz; |
mt->lmargincur = mt->lmarginsz; |
|
|
else |
else |
term_newln(p); |
term_newln(p); |
p->flags &= ~TERMP_BRNEVER; |
p->flags &= ~TERMP_BRNEVER; |
if (p->rmargin < p->maxrmargin && n->parent->tok == MAN_HP) { |
if (p->tcol->rmargin < p->maxrmargin && |
p->offset = p->rmargin; |
n->parent->tok == MAN_HP) { |
p->rmargin = p->maxrmargin; |
p->tcol->offset = p->tcol->rmargin; |
|
p->tcol->rmargin = p->maxrmargin; |
} |
} |
} |
} |
if (NODE_EOS & n->flags) |
if (NODE_EOS & n->flags) |
|
|
|
|
p->flags |= TERMP_NOSPACE | TERMP_NOBREAK; |
p->flags |= TERMP_NOSPACE | TERMP_NOBREAK; |
p->trailspace = 1; |
p->trailspace = 1; |
p->offset = 0; |
p->tcol->offset = 0; |
p->rmargin = p->maxrmargin > datelen ? |
p->tcol->rmargin = p->maxrmargin > datelen ? |
(p->maxrmargin + term_len(p, 1) - datelen) / 2 : 0; |
(p->maxrmargin + term_len(p, 1) - datelen) / 2 : 0; |
|
|
if (meta->os) |
if (meta->os) |
|
|
|
|
/* At the bottom in the middle: manual date. */ |
/* At the bottom in the middle: manual date. */ |
|
|
p->offset = p->rmargin; |
p->tcol->offset = p->tcol->rmargin; |
titlen = term_strlen(p, title); |
titlen = term_strlen(p, title); |
p->rmargin = p->maxrmargin > titlen ? p->maxrmargin - titlen : 0; |
p->tcol->rmargin = p->maxrmargin > titlen ? |
|
p->maxrmargin - titlen : 0; |
p->flags |= TERMP_NOSPACE; |
p->flags |= TERMP_NOSPACE; |
|
|
term_word(p, meta->date); |
term_word(p, meta->date); |
|
|
p->flags &= ~TERMP_NOBREAK; |
p->flags &= ~TERMP_NOBREAK; |
p->flags |= TERMP_NOSPACE; |
p->flags |= TERMP_NOSPACE; |
p->trailspace = 0; |
p->trailspace = 0; |
p->offset = p->rmargin; |
p->tcol->offset = p->tcol->rmargin; |
p->rmargin = p->maxrmargin; |
p->tcol->rmargin = p->maxrmargin; |
|
|
term_word(p, title); |
term_word(p, title); |
term_flushln(p); |
term_flushln(p); |
|
|
|
|
p->flags |= TERMP_NOBREAK | TERMP_NOSPACE; |
p->flags |= TERMP_NOBREAK | TERMP_NOSPACE; |
p->trailspace = 1; |
p->trailspace = 1; |
p->offset = 0; |
p->tcol->offset = 0; |
p->rmargin = 2 * (titlen+1) + vollen < p->maxrmargin ? |
p->tcol->rmargin = 2 * (titlen+1) + vollen < p->maxrmargin ? |
(p->maxrmargin - vollen + term_len(p, 1)) / 2 : |
(p->maxrmargin - vollen + term_len(p, 1)) / 2 : |
vollen < p->maxrmargin ? p->maxrmargin - vollen : 0; |
vollen < p->maxrmargin ? p->maxrmargin - vollen : 0; |
|
|
|
|
/* At the top in the middle: manual volume. */ |
/* At the top in the middle: manual volume. */ |
|
|
p->flags |= TERMP_NOSPACE; |
p->flags |= TERMP_NOSPACE; |
p->offset = p->rmargin; |
p->tcol->offset = p->tcol->rmargin; |
p->rmargin = p->offset + vollen + titlen < p->maxrmargin ? |
p->tcol->rmargin = p->tcol->offset + vollen + titlen < |
p->maxrmargin - titlen : p->maxrmargin; |
p->maxrmargin ? p->maxrmargin - titlen : p->maxrmargin; |
|
|
term_word(p, volume); |
term_word(p, volume); |
term_flushln(p); |
term_flushln(p); |
|
|
|
|
p->flags &= ~TERMP_NOBREAK; |
p->flags &= ~TERMP_NOBREAK; |
p->trailspace = 0; |
p->trailspace = 0; |
if (p->rmargin + titlen <= p->maxrmargin) { |
if (p->tcol->rmargin + titlen <= p->maxrmargin) { |
p->flags |= TERMP_NOSPACE; |
p->flags |= TERMP_NOSPACE; |
p->offset = p->rmargin; |
p->tcol->offset = p->tcol->rmargin; |
p->rmargin = p->maxrmargin; |
p->tcol->rmargin = p->maxrmargin; |
term_word(p, title); |
term_word(p, title); |
term_flushln(p); |
term_flushln(p); |
} |
} |
|
|
p->flags &= ~TERMP_NOSPACE; |
p->flags &= ~TERMP_NOSPACE; |
p->offset = 0; |
p->tcol->offset = 0; |
p->rmargin = p->maxrmargin; |
p->tcol->rmargin = p->maxrmargin; |
|
|
/* |
/* |
* Groff prints three blank lines before the content. |
* Groff prints three blank lines before the content. |