Lines Matching refs:man
51 static void man_alloc1(struct man *);
52 static void man_breakscope(struct man *, enum mant);
53 static void man_descope(struct man *, int, int);
54 static void man_free1(struct man *);
55 static struct man_node *man_node_alloc(struct man *, int, int,
57 static void man_node_append(struct man *, struct man_node *);
59 static void man_node_unlink(struct man *,
61 static int man_ptext(struct man *, int, char *, int);
62 static int man_pmacro(struct man *, int, char *, int);
66 man_node(const struct man *man) in man_node() argument
69 return(man->first); in man_node()
73 man_meta(const struct man *man) in man_meta() argument
76 return(&man->meta); in man_meta()
80 man_reset(struct man *man) in man_reset() argument
83 man_free1(man); in man_reset()
84 man_alloc1(man); in man_reset()
88 man_free(struct man *man) in man_free() argument
91 man_free1(man); in man_free()
92 free(man); in man_free()
95 struct man *
99 struct man *p; in man_alloc()
101 p = mandoc_calloc(1, sizeof(struct man)); in man_alloc()
114 man_endparse(struct man *man) in man_endparse() argument
117 man_macroend(man); in man_endparse()
121 man_parseln(struct man *man, int ln, char *buf, int offs) in man_parseln() argument
124 if (man->last->type != MAN_EQN || ln > man->last->line) in man_parseln()
125 man->flags |= MAN_NEWLINE; in man_parseln()
127 return (roff_getcontrol(man->roff, buf, &offs) ? in man_parseln()
128 man_pmacro(man, ln, buf, offs) : in man_parseln()
129 man_ptext(man, ln, buf, offs)); in man_parseln()
133 man_free1(struct man *man) in man_free1() argument
136 if (man->first) in man_free1()
137 man_node_delete(man, man->first); in man_free1()
138 free(man->meta.title); in man_free1()
139 free(man->meta.source); in man_free1()
140 free(man->meta.date); in man_free1()
141 free(man->meta.vol); in man_free1()
142 free(man->meta.msec); in man_free1()
146 man_alloc1(struct man *man) in man_alloc1() argument
149 memset(&man->meta, 0, sizeof(struct man_meta)); in man_alloc1()
150 man->flags = 0; in man_alloc1()
151 man->last = mandoc_calloc(1, sizeof(struct man_node)); in man_alloc1()
152 man->first = man->last; in man_alloc1()
153 man->last->type = MAN_ROOT; in man_alloc1()
154 man->last->tok = MAN_MAX; in man_alloc1()
155 man->next = MAN_NEXT_CHILD; in man_alloc1()
160 man_node_append(struct man *man, struct man_node *p) in man_node_append() argument
163 assert(man->last); in man_node_append()
164 assert(man->first); in man_node_append()
167 switch (man->next) { in man_node_append()
169 man->last->next = p; in man_node_append()
170 p->prev = man->last; in man_node_append()
171 p->parent = man->last->parent; in man_node_append()
174 man->last->child = p; in man_node_append()
175 p->parent = man->last; in man_node_append()
188 man->flags &= ~MAN_LITERAL; in man_node_append()
202 man->last = p; in man_node_append()
208 man_valid_post(man); in man_node_append()
216 man_node_alloc(struct man *man, int line, int pos, in man_node_alloc() argument
227 if (man->flags & MAN_NEWLINE) in man_node_alloc()
229 man->flags &= ~MAN_NEWLINE; in man_node_alloc()
234 man_elem_alloc(struct man *man, int line, int pos, enum mant tok) in man_elem_alloc() argument
238 p = man_node_alloc(man, line, pos, MAN_ELEM, tok); in man_elem_alloc()
239 man_node_append(man, p); in man_elem_alloc()
240 man->next = MAN_NEXT_CHILD; in man_elem_alloc()
244 man_head_alloc(struct man *man, int line, int pos, enum mant tok) in man_head_alloc() argument
248 p = man_node_alloc(man, line, pos, MAN_HEAD, tok); in man_head_alloc()
249 man_node_append(man, p); in man_head_alloc()
250 man->next = MAN_NEXT_CHILD; in man_head_alloc()
254 man_body_alloc(struct man *man, int line, int pos, enum mant tok) in man_body_alloc() argument
258 p = man_node_alloc(man, line, pos, MAN_BODY, tok); in man_body_alloc()
259 man_node_append(man, p); in man_body_alloc()
260 man->next = MAN_NEXT_CHILD; in man_body_alloc()
264 man_block_alloc(struct man *man, int line, int pos, enum mant tok) in man_block_alloc() argument
268 p = man_node_alloc(man, line, pos, MAN_BLOCK, tok); in man_block_alloc()
269 man_node_append(man, p); in man_block_alloc()
270 man->next = MAN_NEXT_CHILD; in man_block_alloc()
274 man_word_alloc(struct man *man, int line, int pos, const char *word) in man_word_alloc() argument
278 n = man_node_alloc(man, line, pos, MAN_TEXT, MAN_MAX); in man_word_alloc()
279 n->string = roff_strdup(man->roff, word); in man_word_alloc()
280 man_node_append(man, n); in man_word_alloc()
281 man->next = MAN_NEXT_SIBLING; in man_word_alloc()
285 man_word_append(struct man *man, const char *word) in man_word_append() argument
290 n = man->last; in man_word_append()
291 addstr = roff_strdup(man->roff, word); in man_word_append()
296 man->next = MAN_NEXT_SIBLING; in man_word_append()
312 man_node_delete(struct man *man, struct man_node *p) in man_node_delete() argument
316 man_node_delete(man, p->child); in man_node_delete()
318 man_node_unlink(man, p); in man_node_delete()
323 man_addeqn(struct man *man, const struct eqn *ep) in man_addeqn() argument
327 n = man_node_alloc(man, ep->ln, ep->pos, MAN_EQN, MAN_MAX); in man_addeqn()
329 if (ep->ln > man->last->line) in man_addeqn()
331 man_node_append(man, n); in man_addeqn()
332 man->next = MAN_NEXT_SIBLING; in man_addeqn()
333 man_descope(man, ep->ln, ep->pos); in man_addeqn()
337 man_addspan(struct man *man, const struct tbl_span *sp) in man_addspan() argument
341 man_breakscope(man, MAN_MAX); in man_addspan()
342 n = man_node_alloc(man, sp->line, 0, MAN_TBL, MAN_MAX); in man_addspan()
344 man_node_append(man, n); in man_addspan()
345 man->next = MAN_NEXT_SIBLING; in man_addspan()
346 man_descope(man, sp->line, 0); in man_addspan()
350 man_descope(struct man *man, int line, int offs) in man_descope() argument
358 if (man->flags & MAN_ELINE) { in man_descope()
359 man->flags &= ~MAN_ELINE; in man_descope()
360 man_unscope(man, man->last->parent); in man_descope()
362 if ( ! (man->flags & MAN_BLINE)) in man_descope()
364 man->flags &= ~MAN_BLINE; in man_descope()
365 man_unscope(man, man->last->parent); in man_descope()
366 man_body_alloc(man, line, offs, man->last->tok); in man_descope()
370 man_ptext(struct man *man, int line, char *buf, int offs) in man_ptext() argument
376 if (man->flags & MAN_LITERAL) { in man_ptext()
377 man_word_alloc(man, line, offs, buf + offs); in man_ptext()
378 man_descope(man, line, offs); in man_ptext()
392 if (man->last->tok != MAN_SH && in man_ptext()
393 man->last->tok != MAN_SS) { in man_ptext()
394 man_elem_alloc(man, line, offs, MAN_sp); in man_ptext()
395 man->next = MAN_NEXT_SIBLING; in man_ptext()
410 mandoc_msg(MANDOCERR_SPACE_EOL, man->parse, in man_ptext()
421 man_word_alloc(man, line, offs, buf + offs); in man_ptext()
431 man->last->flags |= MAN_EOS; in man_ptext()
433 man_descope(man, line, offs); in man_ptext()
438 man_pmacro(struct man *man, int ln, char *buf, int offs) in man_pmacro() argument
463 mandoc_msg(MANDOCERR_MACRO, man->parse, in man_pmacro()
494 mandoc_msg(MANDOCERR_SPACE_EOL, man->parse, in man_pmacro()
502 man_breakscope(man, tok); in man_pmacro()
503 bline = man->flags & MAN_BLINE; in man_pmacro()
508 (*man_macros[tok].fp)(man, tok, ln, ppos, &offs, buf); in man_pmacro()
512 if (man->quick && tok == MAN_SH) { in man_pmacro()
513 n = man->last; in man_pmacro()
525 if ( ! bline || man->flags & MAN_ELINE || in man_pmacro()
529 assert(man->flags & MAN_BLINE); in man_pmacro()
530 man->flags &= ~MAN_BLINE; in man_pmacro()
532 man_unscope(man, man->last->parent); in man_pmacro()
533 man_body_alloc(man, ln, ppos, man->last->tok); in man_pmacro()
538 man_breakscope(struct man *man, enum mant tok) in man_breakscope() argument
548 if (man->flags & MAN_ELINE && (tok == MAN_MAX || in man_breakscope()
550 n = man->last; in man_breakscope()
555 mandoc_vmsg(MANDOCERR_BLK_LINE, man->parse, in man_breakscope()
560 man_node_delete(man, n); in man_breakscope()
561 man->flags &= ~MAN_ELINE; in man_breakscope()
570 if (man->flags & MAN_BLINE && (tok == MAN_MAX || in man_breakscope()
572 n = man->last; in man_breakscope()
583 mandoc_vmsg(MANDOCERR_BLK_LINE, man->parse, in man_breakscope()
588 man_node_delete(man, n); in man_breakscope()
589 man->flags &= ~MAN_BLINE; in man_breakscope()
598 man_node_unlink(struct man *man, struct man_node *n) in man_node_unlink() argument
618 if (man && man->last == n) { in man_node_unlink()
622 man->last = n->prev; in man_node_unlink()
623 man->next = MAN_NEXT_SIBLING; in man_node_unlink()
625 man->last = n->parent; in man_node_unlink()
626 man->next = MAN_NEXT_CHILD; in man_node_unlink()
630 if (man && man->first == n) in man_node_unlink()
631 man->first = NULL; in man_node_unlink()
635 man_mparse(const struct man *man) in man_mparse() argument
638 assert(man && man->parse); in man_mparse()
639 return(man->parse); in man_mparse()