=================================================================== RCS file: /cvsrepo/anoncvs/cvs/src/usr.bin/mandoc/main.c,v retrieving revision 1.178 retrieving revision 1.179 diff -c -r1.178 -r1.179 *** src/usr.bin/mandoc/main.c 2016/08/09 15:08:15 1.178 --- src/usr.bin/mandoc/main.c 2016/09/18 15:21:00 1.179 *************** *** 1,4 **** ! /* $OpenBSD: main.c,v 1.178 2016/08/09 15:08:15 schwarze Exp $ */ /* * Copyright (c) 2008-2012 Kristaps Dzonsons * Copyright (c) 2010-2012, 2014-2016 Ingo Schwarze --- 1,4 ---- ! /* $OpenBSD: main.c,v 1.179 2016/09/18 15:21:00 schwarze Exp $ */ /* * Copyright (c) 2008-2012 Kristaps Dzonsons * Copyright (c) 2010-2012, 2014-2016 Ingo Schwarze *************** *** 89,94 **** --- 89,95 ---- static int moptions(int *, char *); static void mmsg(enum mandocerr, enum mandoclevel, const char *, int, int, const char *); + static void outdata_alloc(struct curparse *); static void parse(struct curparse *, int, const char *); static void passthrough(const char *, int, int); static pid_t spawn_pager(struct tag_files *); *************** *** 435,442 **** passthrough(resp->file, fd, conf.output.synopsisonly); ! if (argc > 1 && curp.outtype <= OUTT_UTF8) terminal_sepline(curp.outdata); } else if (rc < MANDOCLEVEL_ERROR) rc = MANDOCLEVEL_ERROR; --- 436,446 ---- passthrough(resp->file, fd, conf.output.synopsisonly); ! if (argc > 1 && curp.outtype <= OUTT_UTF8) { ! if (curp.outdata == NULL) ! outdata_alloc(&curp); terminal_sepline(curp.outdata); + } } else if (rc < MANDOCLEVEL_ERROR) rc = MANDOCLEVEL_ERROR; *************** *** 692,724 **** if (rctmp != MANDOCLEVEL_OK && curp->wstop) return; ! /* If unset, allocate output dev now (if applicable). */ - if (curp->outdata == NULL) { - switch (curp->outtype) { - case OUTT_HTML: - curp->outdata = html_alloc(curp->outopts); - break; - case OUTT_UTF8: - curp->outdata = utf8_alloc(curp->outopts); - break; - case OUTT_LOCALE: - curp->outdata = locale_alloc(curp->outopts); - break; - case OUTT_ASCII: - curp->outdata = ascii_alloc(curp->outopts); - break; - case OUTT_PDF: - curp->outdata = pdf_alloc(curp->outopts); - break; - case OUTT_PS: - curp->outdata = ps_alloc(curp->outopts); - break; - default: - break; - } - } - mparse_result(curp->mp, &man, NULL); /* Execute the out device, if it exists. */ --- 696,704 ---- if (rctmp != MANDOCLEVEL_OK && curp->wstop) return; ! if (curp->outdata == NULL) ! outdata_alloc(curp); mparse_result(curp->mp, &man, NULL); /* Execute the out device, if it exists. */ *************** *** 770,775 **** --- 750,782 ---- default: break; } + } + } + + static void + outdata_alloc(struct curparse *curp) + { + switch (curp->outtype) { + case OUTT_HTML: + curp->outdata = html_alloc(curp->outopts); + break; + case OUTT_UTF8: + curp->outdata = utf8_alloc(curp->outopts); + break; + case OUTT_LOCALE: + curp->outdata = locale_alloc(curp->outopts); + break; + case OUTT_ASCII: + curp->outdata = ascii_alloc(curp->outopts); + break; + case OUTT_PDF: + curp->outdata = pdf_alloc(curp->outopts); + break; + case OUTT_PS: + curp->outdata = ps_alloc(curp->outopts); + break; + default: + break; } }