Lines Matching refs:man
49 static struct man_node *man_node_alloc(struct man *, int, int,
51 static int man_node_append(struct man *,
54 static void man_node_unlink(struct man *,
56 static int man_ptext(struct man *, int, char *, int);
57 static int man_pmacro(struct man *, int, char *, int);
58 static void man_free1(struct man *);
59 static void man_alloc1(struct man *);
60 static int man_descope(struct man *, int, int);
64 man_node(const struct man *man) in man_node() argument
67 assert( ! (MAN_HALT & man->flags)); in man_node()
68 return(man->first); in man_node()
73 man_meta(const struct man *man) in man_meta() argument
76 assert( ! (MAN_HALT & man->flags)); in man_meta()
77 return(&man->meta); in man_meta()
82 man_reset(struct man *man) in man_reset() argument
85 man_free1(man); in man_reset()
86 man_alloc1(man); in man_reset()
91 man_free(struct man *man) in man_free() argument
94 man_free1(man); in man_free()
95 free(man); in man_free()
99 struct man *
102 struct man *p; in man_alloc()
104 p = mandoc_calloc(1, sizeof(struct man)); in man_alloc()
116 man_endparse(struct man *man) in man_endparse() argument
119 assert( ! (MAN_HALT & man->flags)); in man_endparse()
120 if (man_macroend(man)) in man_endparse()
122 man->flags |= MAN_HALT; in man_endparse()
128 man_parseln(struct man *man, int ln, char *buf, int offs) in man_parseln() argument
131 man->flags |= MAN_NEWLINE; in man_parseln()
133 assert( ! (MAN_HALT & man->flags)); in man_parseln()
135 return (roff_getcontrol(man->roff, buf, &offs) ? in man_parseln()
136 man_pmacro(man, ln, buf, offs) : in man_parseln()
137 man_ptext(man, ln, buf, offs)); in man_parseln()
142 man_free1(struct man *man) in man_free1() argument
145 if (man->first) in man_free1()
146 man_node_delete(man, man->first); in man_free1()
147 if (man->meta.title) in man_free1()
148 free(man->meta.title); in man_free1()
149 if (man->meta.source) in man_free1()
150 free(man->meta.source); in man_free1()
151 if (man->meta.date) in man_free1()
152 free(man->meta.date); in man_free1()
153 if (man->meta.vol) in man_free1()
154 free(man->meta.vol); in man_free1()
155 if (man->meta.msec) in man_free1()
156 free(man->meta.msec); in man_free1()
161 man_alloc1(struct man *man) in man_alloc1() argument
164 memset(&man->meta, 0, sizeof(struct man_meta)); in man_alloc1()
165 man->flags = 0; in man_alloc1()
166 man->last = mandoc_calloc(1, sizeof(struct man_node)); in man_alloc1()
167 man->first = man->last; in man_alloc1()
168 man->last->type = MAN_ROOT; in man_alloc1()
169 man->last->tok = MAN_MAX; in man_alloc1()
170 man->next = MAN_NEXT_CHILD; in man_alloc1()
175 man_node_append(struct man *man, struct man_node *p) in man_node_append() argument
178 assert(man->last); in man_node_append()
179 assert(man->first); in man_node_append()
182 switch (man->next) { in man_node_append()
184 man->last->next = p; in man_node_append()
185 p->prev = man->last; in man_node_append()
186 p->parent = man->last->parent; in man_node_append()
189 man->last->child = p; in man_node_append()
190 p->parent = man->last; in man_node_append()
200 if ( ! man_valid_pre(man, p)) in man_node_append()
220 man->last = p; in man_node_append()
226 if ( ! man_valid_post(man)) in man_node_append()
238 man_node_alloc(struct man *man, int line, int pos, in man_node_alloc() argument
249 if (MAN_NEWLINE & man->flags) in man_node_alloc()
251 man->flags &= ~MAN_NEWLINE; in man_node_alloc()
257 man_elem_alloc(struct man *man, int line, int pos, enum mant tok) in man_elem_alloc() argument
261 p = man_node_alloc(man, line, pos, MAN_ELEM, tok); in man_elem_alloc()
262 if ( ! man_node_append(man, p)) in man_elem_alloc()
264 man->next = MAN_NEXT_CHILD; in man_elem_alloc()
270 man_tail_alloc(struct man *man, int line, int pos, enum mant tok) in man_tail_alloc() argument
274 p = man_node_alloc(man, line, pos, MAN_TAIL, tok); in man_tail_alloc()
275 if ( ! man_node_append(man, p)) in man_tail_alloc()
277 man->next = MAN_NEXT_CHILD; in man_tail_alloc()
283 man_head_alloc(struct man *man, int line, int pos, enum mant tok) in man_head_alloc() argument
287 p = man_node_alloc(man, line, pos, MAN_HEAD, tok); in man_head_alloc()
288 if ( ! man_node_append(man, p)) in man_head_alloc()
290 man->next = MAN_NEXT_CHILD; in man_head_alloc()
296 man_body_alloc(struct man *man, int line, int pos, enum mant tok) in man_body_alloc() argument
300 p = man_node_alloc(man, line, pos, MAN_BODY, tok); in man_body_alloc()
301 if ( ! man_node_append(man, p)) in man_body_alloc()
303 man->next = MAN_NEXT_CHILD; in man_body_alloc()
309 man_block_alloc(struct man *man, int line, int pos, enum mant tok) in man_block_alloc() argument
313 p = man_node_alloc(man, line, pos, MAN_BLOCK, tok); in man_block_alloc()
314 if ( ! man_node_append(man, p)) in man_block_alloc()
316 man->next = MAN_NEXT_CHILD; in man_block_alloc()
321 man_word_alloc(struct man *man, int line, int pos, const char *word) in man_word_alloc() argument
325 n = man_node_alloc(man, line, pos, MAN_TEXT, MAN_MAX); in man_word_alloc()
326 n->string = roff_strdup(man->roff, word); in man_word_alloc()
328 if ( ! man_node_append(man, n)) in man_word_alloc()
331 man->next = MAN_NEXT_SIBLING; in man_word_alloc()
351 man_node_delete(struct man *man, struct man_node *p) in man_node_delete() argument
355 man_node_delete(man, p->child); in man_node_delete()
357 man_node_unlink(man, p); in man_node_delete()
362 man_addeqn(struct man *man, const struct eqn *ep) in man_addeqn() argument
366 assert( ! (MAN_HALT & man->flags)); in man_addeqn()
368 n = man_node_alloc(man, ep->ln, ep->pos, MAN_EQN, MAN_MAX); in man_addeqn()
371 if ( ! man_node_append(man, n)) in man_addeqn()
374 man->next = MAN_NEXT_SIBLING; in man_addeqn()
375 return(man_descope(man, ep->ln, ep->pos)); in man_addeqn()
379 man_addspan(struct man *man, const struct tbl_span *sp) in man_addspan() argument
383 assert( ! (MAN_HALT & man->flags)); in man_addspan()
385 n = man_node_alloc(man, sp->line, 0, MAN_TBL, MAN_MAX); in man_addspan()
388 if ( ! man_node_append(man, n)) in man_addspan()
391 man->next = MAN_NEXT_SIBLING; in man_addspan()
392 return(man_descope(man, sp->line, 0)); in man_addspan()
396 man_descope(struct man *man, int line, int offs) in man_descope() argument
404 if (MAN_ELINE & man->flags) { in man_descope()
405 man->flags &= ~MAN_ELINE; in man_descope()
406 if ( ! man_unscope(man, man->last->parent, MANDOCERR_MAX)) in man_descope()
410 if ( ! (MAN_BLINE & man->flags)) in man_descope()
412 man->flags &= ~MAN_BLINE; in man_descope()
414 if ( ! man_unscope(man, man->last->parent, MANDOCERR_MAX)) in man_descope()
416 return(man_body_alloc(man, line, offs, man->last->tok)); in man_descope()
420 man_ptext(struct man *man, int line, char *buf, int offs) in man_ptext() argument
426 if (MAN_LITERAL & man->flags) { in man_ptext()
427 if ( ! man_word_alloc(man, line, offs, buf + offs)) in man_ptext()
429 return(man_descope(man, line, offs)); in man_ptext()
442 if (MAN_SH != man->last->tok && in man_ptext()
443 MAN_SS != man->last->tok) { in man_ptext()
444 if ( ! man_elem_alloc(man, line, offs, MAN_sp)) in man_ptext()
446 man->next = MAN_NEXT_SIBLING; in man_ptext()
461 man_pmsg(man, line, i - 1, MANDOCERR_EOLNSPACE); in man_ptext()
472 if ( ! man_word_alloc(man, line, offs, buf + offs)) in man_ptext()
483 man->last->flags |= MAN_EOS; in man_ptext()
485 return(man_descope(man, line, offs)); in man_ptext()
489 man_pmacro(struct man *man, int ln, char *buf, int offs) in man_pmacro() argument
497 man_pmsg(man, ln, offs, MANDOCERR_BADCOMMENT); in man_pmacro()
519 mandoc_vmsg(MANDOCERR_MACRO, man->parse, ln, in man_pmacro()
535 man_pmsg(man, ln, offs - 1, MANDOCERR_EOLNSPACE); in man_pmacro()
544 man->flags & MAN_ELINE) { in man_pmacro()
545 n = man->last; in man_pmacro()
553 mandoc_vmsg(MANDOCERR_LINESCOPE, man->parse, n->line, in man_pmacro()
557 man_node_delete(man, n); in man_pmacro()
558 man->flags &= ~MAN_ELINE; in man_pmacro()
564 if ((man->flags & MAN_BLINE) && in man_pmacro()
566 n = man->last; in man_pmacro()
584 mandoc_vmsg(MANDOCERR_LINESCOPE, man->parse, n->line, in man_pmacro()
588 man_node_delete(man, n); in man_pmacro()
589 man->flags &= ~MAN_BLINE; in man_pmacro()
598 if (MAN_BLINE & man->flags) in man_pmacro()
599 man->flags |= MAN_BPLINE; in man_pmacro()
604 if ( ! (*man_macros[tok].fp)(man, tok, ln, ppos, &offs, buf)) in man_pmacro()
612 if ( ! (MAN_BPLINE & man->flags)) { in man_pmacro()
613 man->flags &= ~MAN_ILINE; in man_pmacro()
616 man->flags &= ~MAN_BPLINE; in man_pmacro()
623 if (MAN_ILINE & man->flags) { in man_pmacro()
624 man->flags &= ~MAN_ILINE; in man_pmacro()
633 if (MAN_ELINE & man->flags) in man_pmacro()
638 assert(MAN_BLINE & man->flags); in man_pmacro()
639 man->flags &= ~MAN_BLINE; in man_pmacro()
641 if ( ! man_unscope(man, man->last->parent, MANDOCERR_MAX)) in man_pmacro()
643 return(man_body_alloc(man, ln, ppos, man->last->tok)); in man_pmacro()
647 man->flags |= MAN_HALT; in man_pmacro()
656 man_node_unlink(struct man *man, struct man_node *n) in man_node_unlink() argument
676 if (man && man->last == n) { in man_node_unlink()
680 man->last = n->prev; in man_node_unlink()
681 man->next = MAN_NEXT_SIBLING; in man_node_unlink()
683 man->last = n->parent; in man_node_unlink()
684 man->next = MAN_NEXT_CHILD; in man_node_unlink()
688 if (man && man->first == n) in man_node_unlink()
689 man->first = NULL; in man_node_unlink()
693 man_mparse(const struct man *man) in man_mparse() argument
696 assert(man && man->parse); in man_mparse()
697 return(man->parse); in man_mparse()