Lines Matching full:man
1 /* $OpenBSD: man.c,v 1.137 2022/08/16 22:59:48 schwarze Exp $ */
31 #include "man.h"
42 man_parseln(struct roff_man *man, int ln, char *buf, int offs) in man_parseln() argument
45 if (man->last->type != ROFFT_EQN || ln > man->last->line) in man_parseln()
46 man->flags |= MAN_NEWLINE; in man_parseln()
48 return roff_getcontrol(man->roff, buf, &offs) ? in man_parseln()
49 man_pmacro(man, ln, buf, offs) : in man_parseln()
50 man_ptext(man, ln, buf, offs); in man_parseln()
75 man_descope(struct roff_man *man, int line, int offs, char *start) in man_descope() argument
79 if (man->flags & MAN_ELINE) { in man_descope()
80 while (man->last->parent->type != ROFFT_ROOT && in man_descope()
81 man_macro(man->last->parent->tok)->flags & MAN_ESCOPED) in man_descope()
82 man_unscope(man, man->last->parent); in man_descope()
83 man->flags &= ~MAN_ELINE; in man_descope()
93 if ( ! (man->flags & MAN_BLINE)) in man_descope()
95 man_unscope(man, man->last->parent); in man_descope()
96 roff_body_alloc(man, line, offs, man->last->tok); in man_descope()
97 man->flags &= ~(MAN_BLINE | ROFF_NONOFILL); in man_descope()
101 man_ptext(struct roff_man *man, int line, char *buf, int offs) in man_ptext() argument
108 if (man->flags & ROFF_NOFILL) { in man_ptext()
109 roff_word_alloc(man, line, offs, buf + offs); in man_ptext()
110 man_descope(man, line, offs, buf + offs); in man_ptext()
124 if (man->flags & (MAN_ELINE | MAN_BLINE)) { in man_ptext()
128 if (man->last->tok == MAN_SH || man->last->tok == MAN_SS) in man_ptext()
130 if (man->last->type == ROFFT_TEXT && in man_ptext()
131 ((ep = man_hasc(man->last->string)) != NULL)) { in man_ptext()
135 roff_elem_alloc(man, line, offs, ROFF_sp); in man_ptext()
136 man->next = ROFF_NEXT_SIBLING; in man_ptext()
160 roff_word_alloc(man, line, offs, buf + offs); in man_ptext()
170 man->last->flags |= NODE_EOS; in man_ptext()
172 man_descope(man, line, offs, buf + offs); in man_ptext()
177 man_pmacro(struct roff_man *man, int ln, char *buf, int offs) in man_pmacro() argument
193 tok = roffhash_find(man->manmac, buf + ppos, sz); in man_pmacro()
232 man_breakscope(man, tok); in man_pmacro()
233 bline = man->flags & MAN_BLINE; in man_pmacro()
248 (*man_macro(tok)->fp)(man, tok, ln, ppos, &offs, buf); in man_pmacro()
252 if (man->quick && tok == MAN_SH) { in man_pmacro()
253 n = man->last; in man_pmacro()
266 (man->flags & MAN_BLINE) == 0 || in man_pmacro()
267 man->flags & MAN_ELINE || in man_pmacro()
271 man_unscope(man, man->last->parent); in man_pmacro()
272 roff_body_alloc(man, ln, ppos, man->last->tok); in man_pmacro()
273 man->flags &= ~(MAN_BLINE | ROFF_NONOFILL); in man_pmacro()
282 man_breakscope(struct roff_man *man, int tok) in man_breakscope() argument
292 if (man->flags & MAN_ELINE && (tok < MAN_TH || in man_breakscope()
294 n = man->last; in man_breakscope()
310 roff_node_delete(man, n); in man_breakscope()
311 man->flags &= ~MAN_ELINE; in man_breakscope()
319 if (man->flags & MAN_BLINE && in man_breakscope()
321 (man->last->tok == MAN_SH || man->last->tok == MAN_SS)) { in man_breakscope()
322 n = man->last; in man_breakscope()
323 man_unscope(man, n); in man_breakscope()
324 roff_body_alloc(man, n->line, n->pos, n->tok); in man_breakscope()
325 man->flags &= ~(MAN_BLINE | ROFF_NONOFILL); in man_breakscope()
334 if (man->flags & MAN_BLINE && tok != ROFF_nf && tok != ROFF_fi && in man_breakscope()
336 n = man->last; in man_breakscope()
351 roff_node_delete(man, n); in man_breakscope()
352 man->flags &= ~(MAN_BLINE | ROFF_NONOFILL); in man_breakscope()