From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from localhost (fantadrom.bsd.lv [local]); by fantadrom.bsd.lv (OpenSMTPD) with ESMTPA id b440ff42; for ; Tue, 13 Jan 2015 08:22:52 -0500 (EST) Date: Tue, 13 Jan 2015 08:22:52 -0500 (EST) Message-Id: <17616355456730260747.enqueue@fantadrom.bsd.lv> X-Mailinglist: mdocml-source Reply-To: source@mdocml.bsd.lv MIME-Version: 1.0 From: schwarze@mdocml.bsd.lv To: source@mdocml.bsd.lv Subject: mdocml: do not spawn a pager when there is no output; issue pointed out X-Mailer: activitymail 1.26, http://search.cpan.org/dist/activitymail/ Content-Type: text/plain; charset=utf-8 Log Message: ----------- do not spawn a pager when there is no output; issue pointed out by deraadt@ Modified Files: -------------- mdocml: main.c Revision Data ------------- Index: main.c =================================================================== RCS file: /home/cvs/mdocml/mdocml/main.c,v retrieving revision 1.211 retrieving revision 1.212 diff -Lmain.c -Lmain.c -u -p -r1.211 -r1.212 --- main.c +++ main.c @@ -1,7 +1,7 @@ /* $Id$ */ /* * Copyright (c) 2008-2012 Kristaps Dzonsons - * Copyright (c) 2010, 2011, 2012, 2014 Ingo Schwarze + * Copyright (c) 2010-2012, 2014, 2015 Ingo Schwarze * Copyright (c) 2010 Joerg Sonnenberger * * Permission to use, copy, modify, and distribute this software for any @@ -405,9 +405,6 @@ main(int argc, char *argv[]) if (search.argmode == ARG_FILE && ! moptions(&options, auxpaths)) return((int)MANDOCLEVEL_BADARG); - if (use_pager && isatty(STDOUT_FILENO)) - spawn_pager(); - curp.mchars = mchars_alloc(); curp.mp = mparse_alloc(options, curp.wlevel, mmsg, curp.mchars, defos); @@ -418,15 +415,29 @@ main(int argc, char *argv[]) if (OUTT_MAN == curp.outtype) mparse_keep(curp.mp); - if (argc == 0) + if (argc == 0) { + if (use_pager && isatty(STDOUT_FILENO)) + spawn_pager(); parse(&curp, STDIN_FILENO, "", &rc); + } while (argc) { + rc = mparse_open(curp.mp, &fd, +#if HAVE_SQLITE3 + resp != NULL ? resp->file : +#endif + *argv); + + if (fd != -1) { + if (use_pager && isatty(STDOUT_FILENO)) + spawn_pager(); + use_pager = 0; + +#if HAVE_SQLITE3 + if (resp == NULL) +#endif + parse(&curp, fd, *argv, &rc); #if HAVE_SQLITE3 - if (resp != NULL) { - rc = mparse_open(curp.mp, &fd, resp->file); - if (fd == -1) - /* nothing */; else if (resp->form & FORM_SRC) { /* For .so only; ignore failure. */ chdir(paths.paths[resp->ipath]); @@ -434,23 +445,26 @@ main(int argc, char *argv[]) } else rc = passthrough(resp->file, fd, synopsis_only); - resp++; - } else #endif - { - rc = mparse_open(curp.mp, &fd, *argv++); - if (fd != -1) - parse(&curp, fd, argv[-1], &rc); - } - if (mparse_wait(curp.mp) != MANDOCLEVEL_OK) - rc = MANDOCLEVEL_SYSERR; + if (mparse_wait(curp.mp) != MANDOCLEVEL_OK) + rc = MANDOCLEVEL_SYSERR; + + if (argc > 1 && curp.outtype <= OUTT_UTF8) + ascii_sepline(curp.outdata); + } if (MANDOCLEVEL_OK != rc && curp.wstop) break; - if (--argc && curp.outtype <= OUTT_UTF8) - ascii_sepline(curp.outdata); +#if HAVE_SQLITE3 + if (resp != NULL) + resp++; + else +#endif + argv++; + if (--argc) + mparse_reset(curp.mp); } if (curp.outfree) @@ -616,10 +630,7 @@ parse(struct curparse *curp, int fd, con if (mdoc && curp->outmdoc) (*curp->outmdoc)(curp->outdata, mdoc); - cleanup: - - mparse_reset(curp->mp); - +cleanup: if (*level < rc) *level = rc; } -- To unsubscribe send an email to source+unsubscribe@mdocml.bsd.lv