Lines Matching refs:curp
260 choose_parser(struct mparse *curp) in choose_parser() argument
271 if ((format = roff_getformat(curp->roff)) == 0) { in choose_parser()
272 cp = curp->primary->buf; in choose_parser()
273 ep = cp + curp->primary->sz; in choose_parser()
294 if (NULL == curp->pmdoc) in choose_parser()
295 curp->pmdoc = mdoc_alloc( in choose_parser()
296 curp->roff, curp, curp->defos, in choose_parser()
297 MPARSE_QUICK & curp->options ? 1 : 0); in choose_parser()
298 assert(curp->pmdoc); in choose_parser()
299 curp->mdoc = curp->pmdoc; in choose_parser()
305 if (NULL == curp->pman) in choose_parser()
306 curp->pman = man_alloc( in choose_parser()
307 curp->roff, curp, curp->defos, in choose_parser()
308 MPARSE_QUICK & curp->options ? 1 : 0); in choose_parser()
309 assert(curp->pman); in choose_parser()
310 curp->man = curp->pman; in choose_parser()
321 mparse_buf_r(struct mparse *curp, struct buf blk, size_t i, int start) in mparse_buf_r() argument
337 lnn = curp->line; in mparse_buf_r()
345 curp->line = lnn; in mparse_buf_r()
346 curp->reparse_count = 0; in mparse_buf_r()
349 curp->filenc & MPARSE_UTF8 && in mparse_buf_r()
350 curp->filenc & MPARSE_LATIN1) in mparse_buf_r()
351 curp->filenc = preconv_cue(&blk, i); in mparse_buf_r()
385 if ( ! (curp->filenc && preconv_encode( in mparse_buf_r()
386 &blk, &i, &ln, &pos, &curp->filenc))) { in mparse_buf_r()
387 mandoc_vmsg(MANDOCERR_CHAR_BAD, curp, in mparse_buf_r()
388 curp->line, pos, "0x%x", c); in mparse_buf_r()
403 curp, curp->line, pos, "0x%x", c); in mparse_buf_r()
460 mandoc_vmsg(MANDOCERR_CHAR_BAD, curp, in mparse_buf_r()
461 curp->line, pos, "0x%x", c); in mparse_buf_r()
495 if (curp->secondary) { in mparse_buf_r()
496 curp->secondary->buf = mandoc_realloc( in mparse_buf_r()
497 curp->secondary->buf, in mparse_buf_r()
498 curp->secondary->sz + pos + 2); in mparse_buf_r()
499 memcpy(curp->secondary->buf + in mparse_buf_r()
500 curp->secondary->sz, in mparse_buf_r()
502 curp->secondary->sz += pos; in mparse_buf_r()
503 curp->secondary->buf in mparse_buf_r()
504 [curp->secondary->sz] = '\n'; in mparse_buf_r()
505 curp->secondary->sz++; in mparse_buf_r()
506 curp->secondary->buf in mparse_buf_r()
507 [curp->secondary->sz] = '\0'; in mparse_buf_r()
510 rr = roff_parseln(curp->roff, curp->line, &ln, &of); in mparse_buf_r()
514 if (REPARSE_LIMIT >= ++curp->reparse_count) in mparse_buf_r()
515 mparse_buf_r(curp, ln, of, 0); in mparse_buf_r()
517 mandoc_msg(MANDOCERR_ROFFLOOP, curp, in mparse_buf_r()
518 curp->line, pos, NULL); in mparse_buf_r()
530 if ( ! (curp->options & MPARSE_SO) && in mparse_buf_r()
532 curp->sodest = mandoc_strdup(ln.buf + of); in mparse_buf_r()
541 if (curp->secondary) in mparse_buf_r()
542 curp->secondary->sz -= pos + 1; in mparse_buf_r()
543 save_file = curp->file; in mparse_buf_r()
544 save_child = curp->child; in mparse_buf_r()
545 if (mparse_open(curp, &fd, ln.buf + of) == in mparse_buf_r()
547 mparse_readfd(curp, fd, ln.buf + of); in mparse_buf_r()
548 curp->file = save_file; in mparse_buf_r()
550 curp->file = save_file; in mparse_buf_r()
552 curp, curp->line, pos, in mparse_buf_r()
560 mparse_buf_r(curp, ln, of, 0); in mparse_buf_r()
562 curp->child = save_child; in mparse_buf_r()
576 if ( ! (curp->man || curp->mdoc)) in mparse_buf_r()
577 choose_parser(curp); in mparse_buf_r()
589 while ((span = roff_span(curp->roff)) != NULL) in mparse_buf_r()
590 if (curp->man == NULL) in mparse_buf_r()
591 mdoc_addspan(curp->mdoc, span); in mparse_buf_r()
593 man_addspan(curp->man, span); in mparse_buf_r()
595 if (curp->man == NULL) in mparse_buf_r()
596 mdoc_addeqn(curp->mdoc, roff_eqn(curp->roff)); in mparse_buf_r()
598 man_addeqn(curp->man, roff_eqn(curp->roff)); in mparse_buf_r()
599 } else if ((curp->man == NULL ? in mparse_buf_r()
600 mdoc_parseln(curp->mdoc, curp->line, ln.buf, of) : in mparse_buf_r()
601 man_parseln(curp->man, curp->line, ln.buf, of)) == 2) in mparse_buf_r()
618 read_whole_file(struct mparse *curp, const char *file, int fd, in read_whole_file() argument
640 mandoc_msg(MANDOCERR_TOOLARGE, curp, 0, 0, NULL); in read_whole_file()
663 mandoc_msg(MANDOCERR_TOOLARGE, curp, in read_whole_file()
687 mparse_end(struct mparse *curp) in mparse_end() argument
690 if (curp->mdoc == NULL && in mparse_end()
691 curp->man == NULL && in mparse_end()
692 curp->sodest == NULL) { in mparse_end()
693 if (curp->options & MPARSE_MDOC) in mparse_end()
694 curp->mdoc = curp->pmdoc; in mparse_end()
696 if (curp->pman == NULL) in mparse_end()
697 curp->pman = man_alloc( in mparse_end()
698 curp->roff, curp, curp->defos, in mparse_end()
699 curp->options & MPARSE_QUICK ? 1 : 0); in mparse_end()
700 curp->man = curp->pman; in mparse_end()
703 if (curp->mdoc) in mparse_end()
704 mdoc_endparse(curp->mdoc); in mparse_end()
705 if (curp->man) in mparse_end()
706 man_endparse(curp->man); in mparse_end()
707 roff_endparse(curp->roff); in mparse_end()
711 mparse_parse_buffer(struct mparse *curp, struct buf blk, const char *file) in mparse_parse_buffer() argument
719 mandoc_msg(MANDOCERR_ROFFLOOP, curp, curp->line, 0, NULL); in mparse_parse_buffer()
724 svfile = curp->file; in mparse_parse_buffer()
725 curp->file = file; in mparse_parse_buffer()
726 svprimary = curp->primary; in mparse_parse_buffer()
727 curp->primary = &blk; in mparse_parse_buffer()
728 curp->line = 1; in mparse_parse_buffer()
732 if (curp->filenc & MPARSE_UTF8 && blk.sz > 2 && in mparse_parse_buffer()
737 curp->filenc &= ~MPARSE_LATIN1; in mparse_parse_buffer()
741 mparse_buf_r(curp, blk, offset, 1); in mparse_parse_buffer()
744 mparse_end(curp); in mparse_parse_buffer()
746 curp->primary = svprimary; in mparse_parse_buffer()
747 curp->file = svfile; in mparse_parse_buffer()
751 mparse_readmem(struct mparse *curp, void *buf, size_t len, in mparse_readmem() argument
759 mparse_parse_buffer(curp, blk, file); in mparse_readmem()
760 return(curp->file_status); in mparse_readmem()
768 mparse_readfd(struct mparse *curp, int fd, const char *file) in mparse_readfd() argument
774 if (read_whole_file(curp, file, fd, &blk, &with_mmap)) { in mparse_readfd()
775 save_filenc = curp->filenc; in mparse_readfd()
776 curp->filenc = curp->options & in mparse_readfd()
778 mparse_parse_buffer(curp, blk, file); in mparse_readfd()
779 curp->filenc = save_filenc; in mparse_readfd()
791 mparse_wait(curp); in mparse_readfd()
792 return(curp->file_status); in mparse_readfd()
796 mparse_open(struct mparse *curp, int *fd, const char *file) in mparse_open() argument
802 curp->file = file; in mparse_open()
808 curp->child = 0; in mparse_open()
827 curp->child = 0; in mparse_open()
828 mandoc_msg(MANDOCERR_FILE, curp, 0, 0, strerror(errno)); in mparse_open()
839 switch (curp->child = fork()) { in mparse_open()
860 mparse_wait(struct mparse *curp) in mparse_wait() argument
864 if (curp->child == 0) in mparse_wait()
867 if (waitpid(curp->child, &status, 0) == -1) { in mparse_wait()
871 curp->child = 0; in mparse_wait()
873 mandoc_vmsg(MANDOCERR_FILE, curp, 0, 0, in mparse_wait()
878 mandoc_vmsg(MANDOCERR_FILE, curp, 0, 0, in mparse_wait()
889 struct mparse *curp; in mparse_alloc() local
891 curp = mandoc_calloc(1, sizeof(struct mparse)); in mparse_alloc()
893 curp->options = options; in mparse_alloc()
894 curp->wlevel = wlevel; in mparse_alloc()
895 curp->mmsg = mmsg; in mparse_alloc()
896 curp->defos = defos; in mparse_alloc()
898 curp->mchars = mchars; in mparse_alloc()
899 curp->roff = roff_alloc(curp, curp->mchars, options); in mparse_alloc()
900 if (curp->options & MPARSE_MDOC) in mparse_alloc()
901 curp->pmdoc = mdoc_alloc( in mparse_alloc()
902 curp->roff, curp, curp->defos, in mparse_alloc()
903 curp->options & MPARSE_QUICK ? 1 : 0); in mparse_alloc()
904 if (curp->options & MPARSE_MAN) in mparse_alloc()
905 curp->pman = man_alloc( in mparse_alloc()
906 curp->roff, curp, curp->defos, in mparse_alloc()
907 curp->options & MPARSE_QUICK ? 1 : 0); in mparse_alloc()
909 return(curp); in mparse_alloc()
913 mparse_reset(struct mparse *curp) in mparse_reset() argument
916 roff_reset(curp->roff); in mparse_reset()
918 if (curp->mdoc) in mparse_reset()
919 mdoc_reset(curp->mdoc); in mparse_reset()
920 if (curp->man) in mparse_reset()
921 man_reset(curp->man); in mparse_reset()
922 if (curp->secondary) in mparse_reset()
923 curp->secondary->sz = 0; in mparse_reset()
925 curp->file_status = MANDOCLEVEL_OK; in mparse_reset()
926 curp->mdoc = NULL; in mparse_reset()
927 curp->man = NULL; in mparse_reset()
929 free(curp->sodest); in mparse_reset()
930 curp->sodest = NULL; in mparse_reset()
934 mparse_free(struct mparse *curp) in mparse_free() argument
937 if (curp->pmdoc) in mparse_free()
938 mdoc_free(curp->pmdoc); in mparse_free()
939 if (curp->pman) in mparse_free()
940 man_free(curp->pman); in mparse_free()
941 if (curp->roff) in mparse_free()
942 roff_free(curp->roff); in mparse_free()
943 if (curp->secondary) in mparse_free()
944 free(curp->secondary->buf); in mparse_free()
946 free(curp->secondary); in mparse_free()
947 free(curp->sodest); in mparse_free()
948 free(curp); in mparse_free()
952 mparse_result(struct mparse *curp, in mparse_result() argument
956 if (sodest && NULL != (*sodest = curp->sodest)) { in mparse_result()
962 *mdoc = curp->mdoc; in mparse_result()
964 *man = curp->man; in mparse_result()